from flask import Flask, request, jsonify import random import string app = Flask(__name__) # В памяти храним зарегистрированных пользователей и сессии передачи файлов users = {} transfers = {} def generate_short_id(length=8): """ Генерирует короткий уникальный идентификатор для передачи файла. """ while True: token = ''.join(random.choices(string.ascii_letters + string.digits, k=length)) if token not in transfers: return token @app.route('/register', methods=['POST']) def register(): data = request.json username = data.get('username') password = data.get('password') if not username or not password: return jsonify({'error': 'Не переданы обязательные поля'}), 400 if username in users: return jsonify({'error': 'Пользователь уже существует'}), 400 users[username] = {'password': password} return jsonify({'message': 'Регистрация прошла успешно'}) @app.route('/create_transfer', methods=['POST']) def create_transfer(): data = request.json filename = data.get('filename') ip = data.get('ip') port = data.get('port') filesize = data.get('filesize', 0) if not filename or not ip or not port: return jsonify({'error': 'Отсутствуют необходимые параметры'}), 400 # Используем короткий идентификатор для передачи файла transfer_id = generate_short_id(8) transfers[transfer_id] = { 'filename': filename, 'ip': ip, 'port': port, 'filesize': filesize, 'downloaded': False } # Формируем короткую ссылку для скачивания (маршрут изменён на /d/) download_link = request.host_url + 'd/' + transfer_id return jsonify({'download_link': download_link}) @app.route('/d/', methods=['GET']) def get_transfer(transfer_id): transfer = transfers.get(transfer_id) if not transfer: return jsonify({'error': 'Неверный идентификатор передачи'}), 404 return jsonify(transfer) if __name__ == '__main__': # Запускаем сервер на всех интерфейсах на порту 5000 app.run(host='0.0.0.0', port=7860)