in questi giorni ho lavorato su una modifica piuttosto interessante di una delle funzionalità native di IPFire, intervenendo direttamente sull'implementazione del Captive Portal.
L'obiettivo non è stato semplicemente quello di apportare un restyling grafico, ma di intervenire sul flusso di autorizzazione dei client, estendendo le possibilità offerte dal Captive Portal e rendendolo più flessibile in scenari di rete reali.
In particolare, il lavoro nasce dall'esigenza di gestire correttamente quei dispositivi che, per loro natura, non sono in grado di interagire con una pagina web e quindi non possono inserire manualmente un codice coupon.
🔧 Cosa è stato modificato
Gli interventi interessano principalmente tre componenti del Captive Portal:
/srv/web/ipfire/cgi-bin/captive.cgi
/srv/web/ipfire/cgi-bin/captive/index.cgi
/srv/web/ipfire/html/captive/template.html
Si tratta di componenti che intervengono in punti differenti del processo: dalla logica CGI che gestisce l'autorizzazione del client, fino alla generazione delle pagine web presentate all'utente.
Nuova gestione dell'autorizzazione
La modifica più significativa riguarda captive.cgi.
È stata introdotta una nuova possibilità nella gestione dell'autorizzazione dei dispositivi, consentendo di abilitare un client senza richiedere necessariamente l'inserimento di un codice coupon.
Questo aspetto è particolarmente interessante perché permette di estendere l'utilizzo del Captive Portal anche a dispositivi che normalmente rappresenterebbero un problema in una rete protetta da autenticazione web.
Pensiamo, ad esempio, a:
In questi casi il problema non è tanto la connettività del dispositivo, quanto la sua incapacità di completare il normale processo di autenticazione attraverso il Captive Portal.
La nuova funzionalità permette quindi di gestire questi client in maniera più efficace, mantenendo al tempo stesso il Captive Portal come punto di controllo degli accessi alla rete.
Il risultato è un sistema decisamente più flessibile, in grado di gestire non soltanto smartphone e computer, ma anche quella crescente quantità di dispositivi IoT ed embedded che oggi fanno parte delle nostre infrastrutture di rete.
🐞 Bug 14006 e compatibilità con la build 203
Un'altra parte importante del lavoro riguarda la correzione di un problema già segnalato nel Bug 14006 di IPFire.
Il problema assume particolare rilevanza con l'aggiornamento alla build 203, dove la funzionalità interessata non risulta più utilizzabile correttamente.
L'intervento effettuato ha quindi anche lo scopo di ripristinare il corretto funzionamento del Captive Portal, intervenendo sul codice responsabile della gestione della richiesta e del relativo flusso di autenticazione.
Questo è un aspetto che ritengo particolarmente importante: non si tratta quindi soltanto di aggiungere una nuova funzionalità, ma anche di mantenere compatibile il componente con l'evoluzione del sistema IPFire.
🎨 Una nuova interfaccia, pensata anche per il mobile
Gli altri due componenti interessati sono:
/srv/web/ipfire/cgi-bin/captive/index.cgi
/srv/web/ipfire/html/captive/template.html
Questi file sono coinvolti nella gestione e nella presentazione delle pagine che l'utente visualizza durante il processo di accesso al Captive Portal e nella richiesta del codice coupon.
Anche in questo caso l'intervento non si è limitato a una semplice modifica estetica.
L'interfaccia è stata rivista, semplificata e resa più coerente con il design attuale di IPFire, cercando allo stesso tempo di migliorare l'esperienza dell'utente durante l'autenticazione.
Uno degli aspetti sui quali ho prestato maggiore attenzione è la fruizione da dispositivi mobili.
Il Captive Portal viene infatti utilizzato molto spesso proprio attraverso smartphone e tablet, motivo per cui una pagina progettata esclusivamente per la visualizzazione desktop può risultare poco pratica.
Per questo motivo l'interfaccia è stata ottimizzata utilizzando un approccio responsive, permettendo agli elementi della pagina di adattarsi alle diverse risoluzioni e dimensioni dello schermo.
L'obiettivo è rendere il processo di autenticazione:
In altre parole, il Captive Portal non deve essere soltanto funzionale: deve anche essere facile da utilizzare.
Dalla modifica locale al contributo per IPFire
Chi fosse interessato a provare queste modifiche sul proprio dispositivo può trovare i file necessari a questo [Link].
Naturalmente, trattandosi di modifiche che intervengono direttamente su componenti del sistema, consiglio di procedere con attenzione e di effettuare un backup dei file originali prima dell'installazione.
Questo rilascio rappresenta però soltanto il primo passo.
Parallelamente, infatti, la community di IPFire Italia sta avviando la procedura necessaria per sottoporre queste modifiche al progetto ufficiale.
L'obiettivo è quello di far analizzare e validare il codice dal team di sviluppo di IPFire, verificandone compatibilità, sicurezza e qualità dell'implementazione.
Se il contributo verrà ritenuto idoneo, l'auspicio è che possa successivamente essere integrato nel progetto ufficiale, rendendo queste funzionalità disponibili non soltanto alla community italiana, ma a tutti gli utenti IPFire.
Ed è proprio questo, a mio avviso, l'aspetto più interessante del progetto.
Una modifica nata da un'esigenza concreta può diventare un vero e proprio contributo open source, passando dalla sperimentazione locale alla revisione da parte degli sviluppatori del progetto.
