first commit

This commit is contained in:
stephan
2025-06-29 07:39:33 +02:00
commit 4ed4d69b21
20 changed files with 2754 additions and 0 deletions

78
main.py Normal file
View File

@ -0,0 +1,78 @@
# 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=["*"],
# )