sicherheitsupdate

This commit is contained in:
stephan
2025-06-29 08:33:19 +02:00
parent 4ed4d69b21
commit 55f6d0816c
9 changed files with 286 additions and 247 deletions

View File

@ -1,7 +1,8 @@
# wilcon.py
# version 0.3.1 (aktualisiert)
# Version 0.3.4 – mit API-Key-Schutz + CORS für 192.168.13.0/24
from fastapi import FastAPI
import os
from fastapi import FastAPI, Header, HTTPException, Depends
from fastapi.middleware.cors import CORSMiddleware
from sysinfo import get_hardware_info, set_debug_mode as set_sysinfo_debug_mode
from netinf import get_network_info, set_debug_mode as set_netinf_debug_mode
@ -10,46 +11,39 @@ from proginfo import get_process_info, set_debug_mode as set_proginfo_debug_mode
app = FastAPI(
title="Wilcon Client Agent",
description="API für Client-System-, Netzwerk- und Prozessinformationen.",
version="0.3.1"
version="0.3.4"
)
# CORS-Konfiguration für wilcon.py (auf Port 8080)
origins = [
"http://localhost:5500", # Für Live Server in VS Code
"http://127.0.0.1:5500", # Für Live Server in VS Code
"http://localhost:8080", # Wenn du später das Frontend direkt über Uvicorn ausliefern willst
"http://127.0.0.1:8080",
# Füge hier die IP-Adresse oder den Hostnamen deines Client-Rechners hinzu,
# wenn du von einem anderen Gerät im Netzwerk zugreifen möchtest, z.B. "http://192.168.1.100:5500"
]
# --- API-Key-Schutz ---
API_KEY = os.getenv("WILCON_API_KEY", "test123") # In .env oder als Umgebungsvariable setzen
def verify_api_key(x_api_key: str = Header(...)):
if x_api_key != API_KEY:
raise HTTPException(status_code=403, detail="Zugriff verweigert")
# --- CORS-Konfiguration für gesamtes 192.168.13.0/24-Netzwerk ---
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_origin_regex=r"http://192\.168\.13\.\d{1,3}(:\d+)?",
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Optional: Setze den Debug-Modus für die importierten Module.
# Dies wird die farbige CLI-Ausgabe in dem Terminal aktivieren, in dem uvicorn läuft.
# Nützlich für die Entwicklung.
# set_sysinfo_debug_mode(True)
# set_netinf_debug_mode(True)
# set_proginfo_debug_mode(True)
# --- Endpunkte ---
@app.get("/sysinfo")
async def get_sysinfo_endpoint(): # Umbenannt, um Konflikt mit importierter Funktion zu vermeiden
"""API-Endpunkt für Hardware- und Systeminformationen"""
async def get_sysinfo_endpoint(_: str = Depends(verify_api_key)):
return get_hardware_info()
@app.get("/netinfo")
async def get_netinfo_endpoint(): # Umbenannt
"""API-Endpunkt für Netzwerkinformationen"""
async def get_netinfo_endpoint(_: str = Depends(verify_api_key)):
return get_network_info()
@app.get("/procinfo")
async def get_procinfo_endpoint(): # Umbenannt
"""API-Endpunkt für Prozessinformationen"""
return get_process_info()
async def get_procinfo_endpoint(_: str = Depends(verify_api_key)):
return get_process_info()
# Optional Debug-Modus einschalten
# set_sysinfo_debug_mode(True)
# set_netinf_debug_mode(True)
# set_proginfo_debug_mode(True)