|
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 |
|
} |
|
|
|
download_link = request.host_url + 'd/' + transfer_id |
|
return jsonify({'download_link': download_link}) |
|
|
|
@app.route('/d/<transfer_id>', 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__': |
|
|
|
app.run(host='0.0.0.0', port=7860) |
|
|