first commit
This commit is contained in:
78
main.py
Normal file
78
main.py
Normal 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=["*"],
|
||||
# )
|
||||
Reference in New Issue
Block a user