114 lines
4.0 KiB
Python
114 lines
4.0 KiB
Python
from flask import Flask, request, jsonify
|
|
import socket
|
|
import json
|
|
import threading
|
|
#from datetime import datetime
|
|
|
|
app = Flask(__name__)
|
|
|
|
class APIClient:
|
|
def __init__(self, host='localhost', port=5555):
|
|
self.host = host
|
|
self.port = port
|
|
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
self.socket.connect((host, port))
|
|
self.lock = threading.Lock()
|
|
|
|
def send_command(self, command_type, **kwargs):
|
|
with self.lock:
|
|
data = {'type': command_type, **kwargs}
|
|
self.socket.send(json.dumps(data).encode('utf-8'))
|
|
response = self.socket.recv(4096).decode('utf-8')
|
|
return json.loads(response) if response else None
|
|
|
|
api_client = APIClient()
|
|
|
|
# 用户管理API
|
|
@app.route('/api/users', methods=['GET'])
|
|
def get_users():
|
|
response = api_client.send_command('admin_get_users')
|
|
return jsonify(response)
|
|
|
|
@app.route('/api/users', methods=['POST'])
|
|
def create_user():
|
|
data = request.json
|
|
response = api_client.send_command('admin_create_user',
|
|
username=data['username'],
|
|
password=data['password'])
|
|
return jsonify(response)
|
|
|
|
@app.route('/api/users/<username>', methods=['DELETE'])
|
|
def delete_user(username):
|
|
response = api_client.send_command('admin_delete_user', username=username)
|
|
return jsonify(response)
|
|
|
|
# 消息管理API
|
|
@app.route('/api/messages', methods=['GET'])
|
|
def get_messages():
|
|
params = {
|
|
'sender': request.args.get('sender'),
|
|
'receiver': request.args.get('receiver'),
|
|
'is_group': request.args.get('is_group'),
|
|
'start_time': request.args.get('start_time'),
|
|
'end_time': request.args.get('end_time')
|
|
}
|
|
response = api_client.send_command('admin_get_messages', **params)
|
|
return jsonify(response)
|
|
|
|
@app.route('/api/messages/<int:message_id>', methods=['DELETE'])
|
|
def delete_message(message_id):
|
|
response = api_client.send_command('admin_delete_message', message_id=message_id)
|
|
return jsonify(response)
|
|
|
|
# 群组管理API
|
|
@app.route('/api/groups', methods=['GET'])
|
|
def get_groups():
|
|
response = api_client.send_command('admin_get_groups')
|
|
return jsonify(response)
|
|
|
|
@app.route('/api/groups', methods=['POST'])
|
|
def create_group():
|
|
data = request.json
|
|
response = api_client.send_command('admin_create_group',
|
|
group_name=data['group_name'],
|
|
members=data['members'])
|
|
return jsonify(response)
|
|
|
|
@app.route('/api/groups/<group_name>', methods=['DELETE'])
|
|
def delete_group(group_name):
|
|
response = api_client.send_command('admin_delete_group', group_name=group_name)
|
|
return jsonify(response)
|
|
|
|
@app.route('/api/groups/<group_name>/members', methods=['POST'])
|
|
def add_group_member(group_name):
|
|
data = request.json
|
|
response = api_client.send_command('admin_add_group_member',
|
|
group_name=group_name,
|
|
username=data['username'])
|
|
return jsonify(response)
|
|
|
|
@app.route('/api/groups/<group_name>/members/<username>', methods=['DELETE'])
|
|
def remove_group_member(group_name, username):
|
|
response = api_client.send_command('admin_remove_group_member',
|
|
group_name=group_name,
|
|
username=username)
|
|
return jsonify(response)
|
|
|
|
# 服务器管理API
|
|
@app.route('/api/server/status', methods=['GET'])
|
|
def get_server_status():
|
|
response = api_client.send_command('admin_get_server_status')
|
|
return jsonify(response)
|
|
|
|
@app.route('/api/server/restart', methods=['POST'])
|
|
def restart_server():
|
|
response = api_client.send_command('admin_restart_server')
|
|
return jsonify(response)
|
|
|
|
@app.route('/api/server/shutdown', methods=['POST'])
|
|
def shutdown_server():
|
|
response = api_client.send_command('admin_shutdown_server')
|
|
return jsonify(response)
|
|
|
|
if __name__ == '__main__':
|
|
app.run(host='0.0.0.0', port=5000, debug=True) |