Joomla è un CMS open che non ha bisogno di presentazioni. Attualmente è stata appena rilasciata la versione 1.5.20 e continua a presentare una limitazione by design: le registrazioni al portale possono essere abilitate o disabilitate, abilitate con spedizione di link di attivazione o senza necessità di conferma. Nativamente però non offre la possibilità di un controllo sulla bontà della mail specificata nel modulo di registrazione né di consentire agli amministratori di sistema di moderare le nuove iscrizioni.
Oltre ad installare suite molto avanzate come jomsocial o Community Builder, poter contare su un workflow che consentisse queste verifiche non è cosa banale.
Dopo l’ultimo attacco di spambot (si sono registrati in centinaia, hanno confermato l’iscrizione e persino pubblicato il loro messaggio di spam sul forum) ho deciso di approfondire.
Tra le estensioni di Joomla ho trovato due plugin molto interessanti: Registration Validator e JoomlaXi Registration Approval by Admin.
Registration Validator
Esiste in due versioni, la prima v1.x Non-Commercial, liberamente scaricabile dal loro sito previa registrazione gratuita.
La seconda, V2.x commerciale e scaricabile previa sottoscrizione a titolo oneroso di un loro piano di licencing. Ha alcuni accorgimenti in più: aggiornamenti garantiti, multilingua, possibilità di whitelist per username o per altri singoli campi. Interessante ma per la mia freelosophy ci vuole ben altro per convincermi a pagare qualcosa per la quale un buon 80% posso averlo utilizzando la versione free adattandomi/la un po’.
Ovviamente ho scaricato la versione 1.(3.1) rilasciata sotto licenza GPL V3.
E’ un plugin, si installa come tutte le estensioni per joomla 1.5.x e, per mia esperienza, non ha dato alcun tipo di problema.
(NOTA: scoprirò alla fine che è opportuno usare php mail function come mailer e non smtp server o sendmail.)
Le feature della versione 1.3.1 le trovate qui ma in ogni caso le riassumo brevemente.
- MX record validation
- blocco a livello di dominio
- è una lista che è possibile variare dal pannello di configurazione del plugin stesso. Se voglio evitare registrazioni da parte di domini svizzeri, ad esempio, aggiungo “.ch” alla lista (importante il punto iniziale).
- blocco a livello di username
- blocco a livello di IP
(Sono da intendersi solamente blacklist. Per la whitelist serve la versione 2.x);
E inoltre si integra con i servizi:
- undisposable.net
- stopforumspam.com
- botscout.com (server una API-KEY ottenibile gratuitamente)
- spamhaus.org
che sono dei servizi costantemente aggiornati su spambot, botnet e domini usati per effettuare spam.
Adesso una parte delle mia problematiche è risolta.
Ho delle liste centralizzate costantemente aggiornate che controllo ogni volta che elaboro i dati contenuti nel modulo di registrazione: se è nelle mie blacklist (mail, user o IP) oppure viene rilevato come spammer dai servizi antispam non viene effettuata la registrazione (nulla viene scritto sul DB).
Tra le feature del plugin vi è la possibilità di monitorare tramite un file di log.
(NOTA: nel file cedit_blockdisposable.php c’è una riga da eliminare/commentare – la 97 -per evitare la scrittura di una sorta di stringa di checkpoint “Registration Validator Start” che riempirebbe il file di log).
Ma la moderazione? Io non voglio che nuovi utenti possano registrarsi e scrivere potenzialmente dei contenuti sul mio CMS senza che gli amministratori abbiano formalmente accettato la nuova iscrizione.
Ecco la soluzione, sempre open, of course:)
JoomlaXi Registration Approval by Admin
Anche in questo caso è possibile scaricare il plugin dal loro sito previa registrazione.
L’istallazione, analoga alla precedente, è banale e indolore. Un’accortezza: configurate questo plugin in modo da eseguirlo subito dopo il precedente Registration Validator: solo quando si passerà il controllo antispam questo nuovo plugin entrerà in merito all’approvazione della registrazione (basta variare l’ordine dei system plugin).
Questa soluzione non è stata sviluppata multilingua e, per mia comodità, ho modificato il codice php e ho creato il file per la lingua italiana (e corretto alcuni typos in quello inglese): il tutto è scaricabile (file di lingua en-GB.plg_xi_adminapproval.ini, it-IT.plg_xi_adminapproval.ini e php modificato xi_adminapproval.php per gestire la doppia lingua).
(Nota: i file, a cui va rimossa l’estensione “_.txt”, vanno inseriti nell’ordine nelle seguenti directory: administrator/language/en-GB, administrator/language/it-IT e infine il php in plugins/system)
Questo plugin gestisce egregiamente il workflow e si interfaccia nativamente con svariati sistemi di registrazione (vedi sito ufficiale).
Nello scenario nativo Joomla con richiesta di attivazione nuova registrazione (nota: obbligatorio per usare questo plugin) ecco quello che avviene:
- l’utente compila il form di registrazione
- se le informazioni immesse superano le verifiche del primo plugin (blacklist e servizi antispam online) si avvia il processo di registrazione dell’utente:
- si invia una mail agli amministratori (notifica del nuovo tentativo di iscrizione) e una all’utente contenente il link di attivazione;
-
- l’utente conferma l’iscrizione seguendo il link contenuto nella mail
-
- l’utente riceve questo tipo di informazione (tramite il plugin JoomlaXi):
-
- a questo punto, sempre il plugin joomlaXi Admin Approval invia una mail agli amministratori di sistema contenente il link per l’approvazione della registrazione di quell’utente:
-
- una volta approvata la nuova utenza viene generata una mail di conferma registrazione e il nuovo utente viene notificato.
Pertanto, fino ad una esplicita approvazione anche le utenze NON in blacklist o riconosciute come spambot (primo plugin) vengono trattenute in standby dal secondo plugin.
Ovviamente sono utilizzabili anche separatamente ma, nel mio caso, preferisco farli lavorare insieme.









