78 lines
2.9 KiB
Python
78 lines
2.9 KiB
Python
# 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=["*"],
|
|
# ) |