-
Notifications
You must be signed in to change notification settings - Fork 0
2 Funzionamento
Il funzionamento del motore Panzer v7 si basa su tre pilastri architetturali rigidi progettati per la massima resilienza.
Il file del Service Worker (sw.js) è posizionato chirurgicamente nella cartella radice (root) del dominio. Questo permette al software di intercettare ogni singola richiesta di rete dell'intera applicazione, agendo come un proxy locale installato nel browser dell'utente.
Il motore adotta un algoritmo avanzato di tolleranza ai guasti di rete per scongiurare il blocco dell'interfaccia in caso di connettività degradata (fenomeno della "Lie-Fi"):
-
Profilazione Dinamica della Rete (
getNetworkProfile): Il sistema non si limita a verificare lo stato online/offline. Calcola in tempo reale un punteggio di efficienza basato sui parametrinavigator.connection(downlink e RTT), adattando dinamicamente i timeout e la parallelizzazione dei download secondo la tabella sottostante:
| Profilo Rete | Limite Download Simultanei | Timeout di Connessione | Comportamento Bunker |
|---|---|---|---|
| Ultrafast | 12 file | 15 secondi | Sincronizzazione aggressiva |
| Fast | 8 file | 20 secondi | Sincronizzazione standard |
| Medium | 4 file | 45 secondi | Sincronizzazione standard |
| Low | 2 file | 90 secondi | Controllo HEAD esteso |
| Verylow | 1 file | 120 secondi | Blocco preventivo del Sync |
- Network-First con Race Condition: Ogni richiesta dinamica intercetta la rete per garantire la massima freschezza del dato, applicando i secondi di timeout definiti dal profilo di rete attivo.
- Cache Fallback & Hot Update: In caso di timeout, il Service Worker rilascia immediatamente la risorsa locale memorizzata nel Bunker. Se invece la rete risponde in tempo, il sistema aggiorna la cache in background (Hot Update).
-
Radar degli Aggiornamenti (
ver_site): Il sistema monitora le variazioni dell'HTML principale. Se viene intercettato un Major Update, il Service Worker esegue autonomamente una tabula rasa delle vecchie cache per prevenire conflitti logici o disallineamenti tra i moduli core.
Per evitare attacchi informatici (come il Cache Poisoning), pagine di login di hotspot Wi-Fi (captive portal) o file corrotti, ogni risorsa subisce una validazione rigorosa prima dell'ingresso nello storage:
-
Controllo Dimensionale: Verifica della dimensione minima del file tramite la mappa delle specifiche interne (
CONFIG.minSizeMap). - Firma Magica (DNA del File): Analisi dei primi byte binari (i Magic Numbers) per verificare la reale identità e integrità del dato prima di elaborarlo, rifiutando file con estensioni falsificate.
Il sistema opera una separazione netta dello storage logico, tracciato nei log di console con marcatori specifici:
-
📦🛡 (Bunker): Area protetta e isolata per gli asset Core + Manifest asset, di sistema. -
📦🔓 (Magazzino): Area sussidiaria per le risorse utente dinamiche e volatili.
Il motore implementa una logica di tolleranza ai guasti di tipo distruttivo-rigenerativo sincronizzata con l'interfaccia utente:
-
Tabula Rasa Immediata: Se il database del Vault o le chiavi logiche in IndexedDB risultano corrotti, il Service Worker cancella istantaneamente tutte le istanze di cache attive (
BunkereMagazzino). - Notifica di Emergenza via postMessage: Il Service Worker invia immediatamente un segnale di notifica broadcast a tutte le finestre aperte del frontend.
- Forzatura del Refresh e Re-Installazione: Il frontend, intercettato il comando, forza un ricaricamento immediato della pagina. Qualora la comunicazione diretta dovesse fallire, l'azione si concretizza autonomamente alla riapertura successiva dell'applicazione: il browser si comporterà come se si trattasse di una prima installazione di zecca, riscaricando dal server tutti i file core integri ed eliminando alla radice ogni traccia di corruzione.
In caso di saturazione del dispositivo client (QuotaExceededError), si attiva la routine d'emergenza 🚨 SW: Storage Pieno! Emergency Clean... che avvia la pulizia automatica del Magazzino volatile per salvaguardare i file vitali custoditi nel Bunker. In assenza dei prerequisiti minimi di sicurezza o delle chiavi logiche in IndexedDB, il sistema si isola in modalità protetta (VAULT_LOCKED_NO_KEY).
[ UTENTE / BROWSER ]
│
▼ (Ogni richiesta: immagini, HTML, JS)
┌─────────────────────────────────────────┐
│ SERVICE WORKER (`sw.js` nella Root) │ <─── Filtro/Proxy Globale
└─────────────────────────────────────────┘
│
├─► [ getNetworkProfile ] ──► Calcola Profilo Rete (Timeout Dinamici)
│
├─► [ C'È RETE? ] ──► SÌ ──► Valida Blob (`isValidBlob`) ──► Aggiorna Cache
│
└─► [ NO RETE / TIMEOUT! ] ──► NO (Bunker Mode)
│
▼
┌───────────────────────┐
│ CACHE LOCALE │
│ 📦🛡 Bunker (Crypted) │
│ 📦🔓 Magazzino (Not_crypted) │
└───────────────────────┘
│
▼
Rilascia i file alla PWA
-
🏠 Home
📑 Pagina principale del Progetto -
📄 Capitolo 1: Introduzione
👨⚖️ Requisiti legali e conformità CAD (Art. 68/69) 📜 -
⚙️ Capitolo 2: Architettura
🛡️📦 Bunker Mode e crittografia AES-GCM del Vault 🔑🗄️ -
💡 Capitolo 3: Note Finali
⚒️ Esempi di utilizzo pratico nella PA 🏛️ -
🏛️ Perché 🪖 Panzer v7+
🗽 Indipendenza ed eliminazione del Vendor Lock-in 🚫🔒 -
🔥 Capitolo 4: Collaudo
🥁 Battesimo di Fuoco, Debug e Log 🐞📊 -
🛡️ Capitolo 5: Paradigma Difensivo
Logiche di 🚫💥 anti-tampering e Zeroization 🧽 -
📑 Capitolo 6: Determina
🖨️ Modello pronto ed esecutivo per i dirigenti 💼 -
🧞 Capitolo 7: Estensione Zero-Trust 🔐
🌀🧪 Concept: Architetturale e Framework di Sicurezza per le PA 🏛️ -
🏛️🚨 Capitolo 8: Protezione PA
📖 Disciplinare Tecnico di Tutela dell'Ente con linee guida per Affidamenti Esterni. 🏢 -
🚀☢️ Capitolo 9: La Difesa Oltre il Confine
🌀🧪 Concept: di un sistema di difesa attiva per operare in modalità Out-of-Sandbox 🔝🫙 -
🏛️🔮 PA Futuro Digitale
🌐🚀 Concept: Manifesto tecnologico e linee guida d'architettura per l'Iper Cloud PA 🌩️