share / main.py
Starchik1's picture
Update main.py
407606a verified
raw
history blame
2.5 kB
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/<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=7860)