Public Access
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
Build and Push Docker Image / build-and-push (push) Successful in 33s
This commit is contained in:
1 parent
34163a630c
commit
5a4e7dd094
4 files changed
+253
-11
No files matched your search
@@ -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}")
|
||||
|
||||
|
||||
Reference in new issue
Block a user