from flask import Flask, request, jsonify import random import string from threading import Lock app = Flask(__name__) lock = Lock() transfers = {} def generate_id(): return ''.join(random.choices(string.ascii_letters + string.digits, k=8)) @app.route('/create_transfer', methods=['POST']) def create_transfer(): with lock: transfer_id = generate_id() transfers[transfer_id] = { 'sender': None, 'receiver': None, 'filename': request.json['filename'], 'filesize': request.json['filesize'] } return jsonify({'transfer_id': transfer_id}) @app.route('/register_sender/', methods=['POST']) def register_sender(transfer_id): with lock: transfers[transfer_id]['sender'] = { 'ip': request.remote_addr, 'port': request.json['port'] } return jsonify({'status': 'sender registered'}) @app.route('/register_receiver/', methods=['POST']) def register_receiver(transfer_id): with lock: transfers[transfer_id]['receiver'] = { 'ip': request.remote_addr, 'port': request.json['port'] } return jsonify({'status': 'receiver registered'}) @app.route('/get_peer_info/') def get_peer_info(transfer_id): return jsonify({ 'sender': transfers.get(transfer_id, {}).get('sender'), 'receiver': transfers.get(transfer_id, {}).get('receiver') }) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)