[OPS] Manutenzione flag-gated: .htaccess (503→maintenance.html) + pagina + bypass token

Meccanismo riusabile: presenza di ../.maintenance (gitignored) → ogni richiesta 503 +
maintenance.html (mostra la finestra). Bypass ?mnt=<token>/cookie. Accendi: touch
.maintenance · Spegni: rm .maintenance. Attivato ora per il revamp UI V3 (~1h).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile
2026-06-27 10:42:29 +02:00
co-authored by Claude Opus 4.8
parent b2fa1a163e
commit 2a5d90f8bb
3 changed files with 48 additions and 0 deletions
+12
View File
@@ -1,5 +1,17 @@
RewriteEngine On
# ══════════════════════════════════════════════════════════════════════════
# MANUTENZIONE (flag-gated): se esiste <docroot>/../.maintenance, OGNI richiesta
# → HTTP 503 + maintenance.html. Bypass: ?mnt=<token> o cookie nis2_mnt=<token>.
# Accendere: touch ../.maintenance · Spegnere: rm ../.maintenance (istantaneo)
# ══════════════════════════════════════════════════════════════════════════
ErrorDocument 503 /maintenance.html
RewriteCond %{DOCUMENT_ROOT}/../.maintenance -f
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteCond %{QUERY_STRING} !(^|&)mnt=efc088d042032889b64b887d2e562ec8(&|$)
RewriteCond %{HTTP_COOKIE} !nis2_mnt=efc088d042032889b64b887d2e562ec8
RewriteRule ^ - [R=503,L]
# Pass Authorization header to PHP-FPM
RewriteCond %{HTTP:Authorization} .+
RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+33
View File
@@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<title>NIS2 Agile — Manutenzione in corso</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex">
<style>
*{box-sizing:border-box}
body{margin:0;min-height:100vh;display:flex;align-items:center;justify-content:center;
background:#0A2E54;color:#fff;font-family:system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif}
.box{max-width:540px;text-align:center;padding:44px 28px}
.logo{width:62px;height:62px;border-radius:15px;background:#1E8A5A;display:inline-flex;align-items:center;
justify-content:center;font-weight:800;font-size:21px;margin-bottom:20px}
h1{font-size:27px;margin:0 0 12px;letter-spacing:-.3px}
p{color:#cfe0f3;line-height:1.65;font-size:15px;margin:0 0 14px}
.win{display:inline-block;margin-top:10px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.18);
border-radius:11px;padding:13px 20px;font-size:15px;line-height:1.5}
.win b{color:#F0B429}
.small{font-size:12.5px;color:#9db8d2;margin-top:24px}
</style>
</head>
<body>
<div class="box">
<div class="logo">N2</div>
<h1>Manutenzione in corso</h1>
<p>Stiamo aggiornando l'<strong>interfaccia (UI)</strong> di NIS2 Agile su richiesta di modifica.
Il servizio non è momentaneamente accessibile.</p>
<div class="win">Finestra di manutenzione: <b>oggi dalle 10:39 alle ~11:45</b> (ora italiana)<br>durata stimata <b>circa 1 ora</b></div>
<p class="small">Grazie per la pazienza. Non occorre fare nulla: l'accesso tornerà disponibile automaticamente al termine.</p>
</div>
</body>
</html>