为3.0服务器提供外接API功能

This commit is contained in:
DZY 2025-05-31 19:03:57 +08:00
parent 99c3350042
commit 7de8fd8bb3

114
附加API服务器.py Normal file
View File

@ -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/<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)