feat: Whitelist VPN pour les réseaux locaux de supervision et passe-droit VIP
Build and Push Docker Image / build-and-push (push) Successful in 33s

This commit is contained in:
xavier committed 2026-08-19 00:44:24 +02:00
1 parent 34163a630c
commit 5a4e7dd094
4 files changed
+253 -11

No files matched your search

+8 -5
View File
@@ -17,11 +17,14 @@ class SecurityMiddleware(BaseHTTPMiddleware):
# Récupération de l'IP du client (gère le proxy NPM si configuré avec X-Forwarded-For)
ip = request.headers.get("X-Forwarded-For", request.client.host).split(",")[0].strip()
# On exclut les requêtes internes et statiques pour ne pas spammer les logs
if ip not in ["127.0.0.1", "localhost", "::1"] and not request.url.path.startswith("/Logo"):
# 1. Vérification VPN
if verifier_et_bloquer_vpn(ip):
return HTMLResponse("<h1 style='color:red; text-align:center;'>Accès refusé</h1><p style='text-align:center;'>Les connexions via VPN, Proxy ou Datacenter sont strictement interdites sur cette plateforme.</p>", status_code=403)
# Simulation du rôle de l'utilisateur via cookie (en attendant le module de connexion)
utilisateur = request.cookies.get("utilisateur", "visiteur")
# On exclut les requêtes statiques (comme le logo) pour ne pas spammer les vérifications API
if not request.url.path.startswith("/Logo"):
# 1. Vérification VPN (inclut désormais la Whitelist VIP/Admin)
if verifier_et_bloquer_vpn(ip, utilisateur):
return HTMLResponse("<h1 style='color:red; text-align:center;'>Accès refusé</h1><p style='text-align:center;'>Les connexions via VPN, Proxy ou Datacenter sont strictement interdites sur cette plateforme pour votre profil.</p>", status_code=403)
# 2. Journalisation RGPD
journaliser_ip(ip, f"Accès à {request.url.path}")