diff --git a/附加API服务器.py b/附加API服务器.py new file mode 100644 index 0000000..46d4428 --- /dev/null +++ b/附加API服务器.py @@ -0,0 +1,114 @@ +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/', 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/', 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/', 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//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//members/', 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) \ No newline at end of file