User Tools

Site Tools


doc:appunti:linux:sa:mediawiki

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:mediawiki [2014/04/02 13:59] – [Aggiornamento versione] niccolodoc:appunti:linux:sa:mediawiki [2018/02/07 15:51] (current) – [Configurazione di un dominio apposito per il mobile] niccolo
Line 27: Line 27:
 ===== Bug PostgreSQL metadata "type bytea" ===== ===== Bug PostgreSQL metadata "type bytea" =====
  
-Il bug [[https://bugzilla.wikimedia.org/show_bug.cgi?id=52017|52017]] impedisce di caricare file che abbiano un backslash nei metadati, mostrando l'errore **invalid input syntax for type bytea**.+Il bug [[https://bugzilla.wikimedia.org/show_bug.cgi?id=52017|52017]] (risolto nella versione 1.22.5) impedisce di caricare file che abbiano un backslash nei metadati, mostrando l'errore **invalid input syntax for type bytea**.
  
 Modificare il file **''includes/filerepo/file/LocalFile.php''**, sostituendo le occorrenze di Modificare il file **''includes/filerepo/file/LocalFile.php''**, sostituendo le occorrenze di
Line 69: Line 69:
 <code php> <code php>
 require_once "$IP/extensions/MobileFrontend/MobileFrontend.php"; require_once "$IP/extensions/MobileFrontend/MobileFrontend.php";
 +$wgMobileFrontendLogo = "$wgScriptPath/logo-mobile.png";
 +// Mobile/desktop autodetection is incompatible with front-end cache.
 $wgMFAutodetectMobileView = true; $wgMFAutodetectMobileView = true;
-$wgUseFileCache = false; // otherwise autodetection won't be reliable+// Disable cache if $wgMFAutodetectMobileView is true. 
 +$wgUseFileCache = false;
 </code> </code>
  
Line 90: Line 93:
 ==== Configurazione di un dominio apposito per il mobile ==== ==== Configurazione di un dominio apposito per il mobile ====
  
-I siti della WikiMedia Foundation (Wikipedia) utilizzano un trucco per fornire la versione desktop e mobile contemporaneamente: attivano un dominio apposito per il mobile (ad esempio **''it.m.wikipedia.org''**) e su quello forzano l'output per dispositivo mobile. Il trucco si basa su un header HTTP che viene aggiunto dal server web (in Apache occorre il modulo **mod_headers**) e che l'estensione MobileFrontend intercetta. L'header da aggiungere è ''X-Device'', che deve avere uno dei valori indicati in questo [[https://git.wikimedia.org/blob/mediawiki%2Fextensions%2FMobileFrontend/caeaa8073e5faf8934b8e713764108ca18eb90bb/includes%2FDeviceDetection.php|file]] (si consiglia il generico ''mobi''). Questi i passaggi per la configurazione:+**ATTENZIONE**: Questa ricetta va bene per **MediaWiki 1.22**, con MobileFrontend opportuno (**aprile 2014**). Nelle versioni più recenti (es. **MediaWiki 1.30** e MobileFrontend di **febbraio 2018**) **non esiste più la gestione dell'header speciale**, tutto sembra più semplice e automatico. 
 + 
 +I siti della WikiMedia Foundation (Wikipedia) utilizzano un trucco per fornire la versione desktop e mobile contemporaneamente: attivano un dominio apposito per il mobile (ad esempio **''it.m.wikipedia.org''**) e su quello forzano l'output per dispositivo mobile. Il trucco si basa su un header HTTP che viene aggiunto dal server web (in Apache occorre il modulo **mod_headers**) e che l'estensione MobileFrontend intercetta. Il cookie ''stopMobileRedirect'' dovrebbe garantire che il sito si presenta sempre nella veste preferita, dopo che l'utente ha cliccato sul link versione mobile o versione desktop. 
 + 
 +L'header da aggiungere è ''X-WAP''. Questi i passaggi per la configurazione:
  
   - Aggiungere un nome al DNS, ad esempio per il dominio ''%%www.mydomain.org%%'' si può usare ''%%www.m.mydomain.org%%'' (dove //m// sta per mobile).   - Aggiungere un nome al DNS, ad esempio per il dominio ''%%www.mydomain.org%%'' si può usare ''%%www.m.mydomain.org%%'' (dove //m// sta per mobile).
-  - Definire in **''LocalSettings.php''** la variabile [[http://www.mediawiki.org/wiki/Extension:MobileFrontend/Configuring_browser_auto-detection|$wgMobileUrlTemplate]]: <code php>$wgMobileUrlTemplate = '%h0.m.%h1.%h2';</code> FIXME **Attenzione al bug [[https://bugzilla.wikimedia.org/show_bug.cgi?id=58321|58321]]!** la variabile deve inizare con un segnaposto **''%h''** altrimenti non viene usata correttamente! +  - Definire in **''LocalSettings.php''** la variabile [[http://www.mediawiki.org/wiki/Extension:MobileFrontend/Configuring_browser_auto-detection|$wgMobileUrlTemplate]] e disabilitare l'autodetect (sarà poi possibile abilitare la cache): <code php>$wgMobileUrlTemplate = '%h0.m.%h1.%h2'
-  - Configurare il ''VirtualHost'' in Apache per il dominio mobile, in esso impostare l'header **''X-Device''**. Apache aggiungerà l'header alla richiesta di una pagina dal dominio mobile e l'estensione di MediaWiki servirà la versione opportuna (con Apache 2.4 si potrebbe sfruttare la direttiva ''%%<If>%%''): <file><ifModule mod_headers.c>+$wgMFAutodetectMobileView = false;</code> **Attenzione al bug [[https://bugzilla.wikimedia.org/show_bug.cgi?id=58321|58321]]!** la variabile deve inizare con un segnaposto **''%h''** altrimenti non viene usata correttamente! 
 +  - Configurare il ''VirtualHost'' in Apache per il dominio mobile, in esso impostare l'header **''X-WAP''**. Apache aggiungerà l'header alla richiesta di una pagina dal dominio mobile e l'estensione di MediaWiki servirà la versione opportuna (con Apache 2.4 si potrebbe sfruttare la direttiva ''%%<If>%%'' invece di avere un VirtualHost dedicato): <file><ifModule mod_headers.c>
   <VirtualHost *:80>   <VirtualHost *:80>
     ServerName www.m.mydomain.org     ServerName www.m.mydomain.org
-    RequestHeader set X-Device "mobi"+    RequestHeader set X-WAP "no"
     ...     ...
   </VirtualHost>   </VirtualHost>
 </ifModule></file> </ifModule></file>
  
-FIXME C'è un problema (versioniMediaWiki 1.21.3, MobileFrontend 30dad7e). Avendo attivato il dominio specifico per il mobile (come descritto sopra), il link in basso per passare dalla versione normale a quella mobile non contiene il parametro **''mobileaction''**, ma si basa solo sulla richiesta del dominio //mobile//. Purtroppo il cookie **''stopMobileRedirect''** inibisce il cambio e si ottiene la versione desktop anche sul dominio mobileUn fix può essere quello di forzare l'aggiunta del parametro, modificando il file **''extensions/MobileFrontend/includes/MobileFrontend.hooks.php''**: +**ATTENZIONE:** L'utilizzo dell'header **''X-WAP''** può generare confusione, ma tant'è! Si sono verificati i sorgenti e si è verificato che funziona con la versione 2e0af84 REL1_22In qualche vecchia documentazione è scritto di utilizzare l'header ''X-Device'', ma questo non risulta dai sorgenti né funziona.
- +
-<code> +
-115c115 +
-< $queryString =  strlen( $wgMobileUrlTemplate ) ? '' : 'mobileaction=toggle_view_mobile'; +
---- +
-> $queryString =  'mobileaction=toggle_view_mobile'+
-</code>+
  
-FIXME Questa soluzione non è ancora compatibile con ''$wgUseFileCache''. Alcune pagine mobile vengono generate con uno stile sbagliato (titoli non cliccabili e quindi sezione non espandibile), indagare se si tratta di un problema legato a ''$wgMFAutodetectMobileView'' oppure al fatto che la cache non viene effettivamente popolata.+Questa soluzione dovrebbe essere compatibile con ''$wgUseFileCache''.
 ===== Attivazione cache ===== ===== Attivazione cache =====
  
-FIXME Vedere come si attiva e se è compatibile con tutte le altre estensioni, soprattutto con l'autodetect del dispositivo mobile/desktop.+FIXME Vedere come attivare la [[http://www.mediawiki.org/wiki/Manual:File_cache|cache]] e se è compatibile con tutte le altre estensioni, soprattutto con l'autodetect del dispositivo mobile/desktop.
  
 ===== Estensione Pdf Export ===== ===== Estensione Pdf Export =====
 +
 +**NOTA:** Questa estensione è stata scartata in favore della [[#Estensione PDF Writer]].
  
 **NOTA:** qualora si utilizzi il backend HTMLDoc questa soluzione è fortemente penalizzata dall'impossibilità di utilizzare gli stili. Installando altri backend (es. MWLib) si possono utilizzare altre estensioni, forse più flessibili. **NOTA:** qualora si utilizzi il backend HTMLDoc questa soluzione è fortemente penalizzata dall'impossibilità di utilizzare gli stili. Installando altri backend (es. MWLib) si possono utilizzare altre estensioni, forse più flessibili.
Line 125: Line 128:
   * Effettua una conversione in HTML e poi chiama un backend a scelta tra HTMLDoc, DomPdf, MWlib, MPdf, e PrinceXML.   * Effettua una conversione in HTML e poi chiama un backend a scelta tra HTMLDoc, DomPdf, MWlib, MPdf, e PrinceXML.
  
-Anzitutto abbiamo avuto un problema con lo snapshot 13c60af scaricato dal **[[http://www.mediawiki.org/wiki/Special:ExtensionDistributor/PdfExport|download snapshow]]**, perché in realtà quello non è compatibile con MediaWiki 1.21.3. Come si legge da questo [[http://www.mediawiki.org/wiki/Extension_talk:Pdf_Export#MWlib_issues_28541|post]], si è dovuto sostituire tutte le occorrenze di ''wfLoadExtensionMessages()'' in  **''PdfExport.php''** e **''PdfExport_body.php''** con+Anzitutto abbiamo avuto un problema con lo snapshot 13c60af scaricato dal **[[http://www.mediawiki.org/wiki/Special:ExtensionDistributor/PdfExport|download snapshot]]**, perché in realtà quello non è compatibile con MediaWiki 1.21.3. Come si legge da questo [[http://www.mediawiki.org/wiki/Extension_talk:Pdf_Export#MWlib_issues_28541|post]], si è dovuto sostituire tutte le occorrenze di ''wfLoadExtensionMessages()'' in  **''PdfExport.php''** e **''PdfExport_body.php''** con
  
 <code php> <code php>
Line 158: Line 161:
 </code> </code>
  
-Con la Collection installata si ha già la funzione //Scarica come PDF//, che però si appoggia per il rendering su un servizio gratuito di PediaPress.+Nella sezione **//Stampa/esporta//** del menu a sinistra compare la voce **//Crea un libro//** e **//Scarica come PDF//**. Quest'ultima funzione è disponibile anche con la sola estensione Collectionma in quel caso si appoggia per il rendering ad un servizio gratuito di PediaPress.
  
 Problemi: Problemi:
Line 183: Line 186:
 FIXME Nonostante che il MediaWiki sia configurato con **''%%$wgLanguageCode = "it";%%''**, l'utente collegato con Facebook viene accolto con la lingua inglese se ha impostato tale lingua su Facebook. Anche se cambia tale impostazione nelle preferenze, al successivo login la lingua viene nuovamente reimpostata. FIXME Nonostante che il MediaWiki sia configurato con **''%%$wgLanguageCode = "it";%%''**, l'utente collegato con Facebook viene accolto con la lingua inglese se ha impostato tale lingua su Facebook. Anche se cambia tale impostazione nelle preferenze, al successivo login la lingua viene nuovamente reimpostata.
  
 +Nel database di MediaWiki si possono trovare le tabelle relative alla relazione tra utenti MediaWiki e utenti Facebook:
 +
 +<code sql>
 +SELECT * FROM mediawiki.user_fbconnect ;
 +SELECT user_id,user_name FROM mediawiki.mwuser;
 +</code>
 ===== Rimozione utenti ===== ===== Rimozione utenti =====
  
Line 194: Line 203:
  
 Attenzione che alcune informazioni restano in altre tabelle e non sono collegate, ad esempio un eventuale blocco impostato su quell'utente resta ed è riferito al nome utente non all'ID. Attenzione che alcune informazioni restano in altre tabelle e non sono collegate, ad esempio un eventuale blocco impostato su quell'utente resta ed è riferito al nome utente non all'ID.
 +
 +===== Combattere lo SPAM e rimuovere gli utenti =====
 +
 +Seza le opportune precauzioni è possibile ritrovarsi decine di migliaia di utenti registrati a causa di bot automatici. Alcuni addirittura dopo aver scavalcato le protezioni contro la registrazione automatica (es. **ConfirmEdit** con ReCaptcha) mandano anche la mail di conferma. In pratica sembra che l'unica politica efficace sia quella di confermare i nuovi in modo manuale, con l'estensione **ConfirmAccount**.
 +
 +Nel caso in cui il danno sia già fatto è opportuno rimuovere gli account fake creati, che spesso restano dormienti fino al momento in cui verranno utilizzati. Sembra che lo strumento più efficace sia l'estensione **[[http://www.mediawiki.org/wiki/Extension:UserMerge|UserMerge]]**.
 +
 +Con questa estensione si può fare il merge di un utente fasullo nell'account **Anonymous**, e quindi cancellarlo. Al termine di questa procedura è possibile eventualmente eliminare tutti i contributi fasulli con l'estensione built-in **Nuke**.
 +
 +Ecco come avere l'elenco degli account non confermati via mail:
 +
 +<code sql>
 +SELECT user_name FROM mwuser WHERE user_email_authenticated IS NOT NULL;
 +</code>
 +
 +Se si tratta di migliaia di utenti sarebbe necessario un sistema per automatizzare la procedura di UserMerge.
 ===== Permessi ===== ===== Permessi =====
  
Line 231: Line 256:
 $wgShowExceptionDetails = true; $wgShowExceptionDetails = true;
 </code> </code>
 +===== Estensione ConfirmAccount =====
 +
 +Il problema dello SPAM non si ferma: nonostante il plugin **ConfirmEdit** che richiede un utente registrato e confermato (con invio di mail) prima di editare una pagina e nonostante l'uso di **ReCaptcha** che vuole la lettura di due immagini prima di effettuare la registrazine di un utente, si contano decine e decine di registrazioni fasulle al giorno, alcune di queste vengono anche confermate con la mail e quindi possono vandalizzare o creare nuove pagine.
 +
 +Si è deciso di attivare l'esetensione [[http://www.mediawiki.org/wiki/Extension%3aConfirmAccount|ConfirmAccount]], ogni utente deve essere autorizzato da un burocrate prima di essere registrato.
 +
 +Si scompatta l'archivio in ''extensions/ConfirmAccount'', quindi si aggiunge in ''LocalSettings.php'':
 +
 +<code php>
 +require_once( "$IP/extensions/ConfirmAccount/ConfirmAccount.php");
 +</code>
 +
 +Infine si aggiorna il database:
 +
 +<code>
 +cd maintenance
 +php update.php
 +</code>
 +
 ===== Estensioni varie ===== ===== Estensioni varie =====
  
doc/appunti/linux/sa/mediawiki.1396439942.txt.gz · Last modified: 2014/04/02 13:59 by niccolo