# main.py from fastapi import FastAPI import psutil import platform import socket from datetime import datetime from fastapi.middleware.cors import CORSMiddleware # Eine FastAPI-Anwendung erstellen app = FastAPI( title="Client Agent API", description="Ein einfacher Agent, der Systeminformationen bereitstellt.", version="0.1.0" ) # Hier beginnt die CORS-Konfiguration origins = [ "http://localhost:5500", # Der Origin, von dem dein Frontend geladen wird "http://127.0.0.1:5500", # Oft wird 127.0.0.1 anstelle von localhost verwendet # Füge hier weitere Origins hinzu, falls dein Frontend von woanders geladen wird # z.B. "http://localhost:8000" wenn du es mal direkt über uvicorn ausliefern würdest ] app.add_middleware( CORSMiddleware, allow_origins=origins, # Erlaubt Anfragen von den oben definierten Origins allow_credentials=True, # Erlaubt das Senden von Cookies (falls später benötigt) allow_methods=["*"], # Erlaubt alle HTTP-Methoden (GET, POST, PUT, DELETE, etc.) allow_headers=["*"], # Erlaubt alle Header in der Anfrage ) # Hier endet die CORS-Konfiguration # Endpunkt für grundlegende Systeminformationen @app.get("/api/system-info") async def get_system_info(): """ Gibt grundlegende Systeminformationen des Client-Rechners zurück. """ boot_time_timestamp = psutil.boot_time() boot_time_readable = datetime.fromtimestamp(boot_time_timestamp).strftime("%Y-%m-%d %H:%M:%S") # CPU-Auslastung (für einen kurzen Zeitraum) cpu_percent = psutil.cpu_percent(interval=1) # Wartet 1 Sekunde für genaue Messung # RAM-Nutzung ram = psutil.virtual_memory() # Disk-Nutzung (für das Root-Verzeichnis oder das primäre Laufwerk) # Unter Windows könnte es 'C:\' sein, unter Linux/macOS '/' disk_usage = psutil.disk_usage('/') return { "hostname": socket.gethostname(), "os_name": platform.system(), "os_version": platform.release(), "architecture": platform.machine(), "python_version": platform.python_version(), "boot_time": boot_time_readable, "cpu_percent": f"{cpu_percent}%", "ram_total_gb": round(ram.total / (1024**3), 2), "ram_used_gb": round(ram.used / (1024**3), 2), "ram_percent": f"{ram.percent}%", "disk_total_gb": round(disk_usage.total / (1024**3), 2), "disk_used_gb": round(disk_usage.used / (1024**3), 2), "disk_percent": f"{disk_usage.percent}%" } # Optional: Endpunkt für CORS, falls du das Frontend auf einer anderen URL testest # Normalerweise nicht nötig, wenn Frontend und Backend vom selben Host und Port kommen # from fastapi.middleware.cors import CORSMiddleware # origins = ["http://localhost:8000", "http://127.0.0.1:8000"] # Beispiel-Origins, anpassen # app.add_middleware( # CORSMiddleware, # allow_origins=origins, # allow_credentials=True, # allow_methods=["*"], # allow_headers=["*"], # )