[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:
co-authored by
Claude Opus 4.8
parent
b2fa1a163e
commit
2a5d90f8bb
@@ -54,3 +54,6 @@ docker/data/
|
||||
# TLS-DB (VIGILE 2026-06-10): flag-file attivazione + CA locale (env-specifici, non committare)
|
||||
application/config/.db_ssl_on
|
||||
application/config/db-ca.pem
|
||||
|
||||
# Flag manutenzione (transitorio, runtime): presenza = sito in manutenzione (gate in .htaccess)
|
||||
.maintenance
|
||||
|
||||
@@ -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}]
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user