File size: 2,056 Bytes
07d1566
059bbb9
 
 
 
07d1566
 
 
059bbb9
07d1566
059bbb9
07d1566
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
059bbb9
 
07d1566
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from flask import Flask, request, jsonify
import uuid

app = Flask(__name__)

# В памяти храним зарегистрированных пользователей и сессии передачи файлов
users = {}
transfers = {}

@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 = str(uuid.uuid4())
    transfers[transfer_id] = {
        'filename': filename,
        'ip': ip,
        'port': port,
        'filesize': filesize,
        'downloaded': False
    }
    # Формируем ссылку для скачивания. request.host_url учитывает адрес сервера.
    download_link = request.host_url + 'download/' + transfer_id
    return jsonify({'download_link': download_link})

@app.route('/download/<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__':
    # Запускаем сервер на всех интерфейсах на порту 5000
    app.run(host='0.0.0.0', port=5000)