Configuration MediaWiki pour Intranet + LDAP partie 2

Dans ce billet, je vais continuer la configuration de MediaWiki.

Configuration générale

Fichiers LocalSettings.php

La configuration générale de MediaWiki se fait par l'intermédiaire d'ajout de code dans le fichier LocalSettings.php.

Pour que tout fonctionne correctement, ne pas oublier de mettre dans LocalSettings.php :

#nom du serveur
$wgServer="https://wiki.intranet.jpsystem.info";

Configuration Menu gauche

Vous avez la possibilité d'ajouter et d'agencer correctement les menus à gauche.
Pour cela, il suffit d'éditer la page MediaWiki:Sidebar

Liens : Navigation_bar

Liens

Liste des toutes les variables disponibles dans le fichiers LocalSettings.php :
En Français : Manual:Configuration_settings fr
En Anglais : Manual:Configuration_settings

LDAP Authentification

On veut utiliser un serveur LDAP pour l'authentification sur le Wiki.

Télécharger le plugin :

Extension LDAP_Authentication

Copier le fichier LdapAuthentication.php dans le dossier extensions/LDAP/.
Puis :

chown www-data: LdapAuthentication.php

Activation du plugin

Ajouter ces lignes dans 'Localsettings.php' :

require_once( "$IP/extensions/LDAP/LdapAuthentication.php" ); 
$wgAuth = new LdapAuthenticationPlugin(); 
$wgLDAPDomainNames = array( "jpsystem" ); 
$wgLDAPServerNames = array( "jpsystem"=>"ldap.jpsystem.info" ); 
$wgLDAPUseLocal = false; 
$wgLDAPEncryptionType = array( "jpsystem"=>"clear" ); 
$wgLDAPSearchStrings = array( "jpsystem"=>"uid=USER-NAME,ou=people,o=jpsystem,dc=meta,c=fr" ); 
$wgLDAPBaseDNs = array( "jpsystem"=>"o=jpsystem,dc=meta,c=fr" ); 
$wgLDAPGroupBaseDNs = array( "jpsystem"=>"ou=Groups,o=jpsystem,dc=meta,c=fr" ); 
$wgLDAPUserBaseDNs = array( "jpsystem"=>"ou=people,o=jpsystem,dc=meta,c=fr" );

On configure ci-dessus le Wiki pour qu'il interroge le serveur LDAP dans la bonne branche.

Vérification du compte Administrateur

Pour la suite de la configuration, il nous faut vérifier qu'il existe un compte "Administrateur".
Pour cela, se connecter à la base de données du Wiki et vérifier le contenu de la table "user_groups".

select * from user_groups ;

Si la table est vide

mysql>
select * from user_groups ; 
Empty set (0.00 sec)

Il faut repérer l'ID de l'utilisateur que l'on veut définir Administrateur :

mysql> select user_name, user_id from user ; 
+-+---+ 
| user_name | user_id | 
+-+---+ 
| wikiadm   |       4 | 
| jpsystem   |       2 | 
| titi |       3 | 
| toto   |       1 | 
+-+---+ 
4 rows in set (0.00 sec)

Ensuite il faut ajouter l'ID de l'utilisateur à la table « user_groups » avec le nom du groupe :

mysql> INSERT INTO user_groups VALUES('4','bureaucrat'); 
Query OK, 1 row affected (0.00 sec) 
mysql> INSERT INTO user_groups VALUES('4','sysop'); 
Query OK, 1 row affected (0.00 sec)
mysql> select * from user_groups ; 
+-++ 
| ug_user | ug_group   | 
+-++ 
|       4 | bureaucrat | 
|       4 | sysop      | 
+-++ 
2 rows in set (0.00 sec)

L'utilisateur wikiadm d'ID = 4, sera donc identifié comme Bureaucrate (c'est à dire comme appartenant au groupe de plus au niveau du Wiki (incluant Administrateur)).

Si cette table est remplie

Il suffit de repérer l'utilisateur ayant le bon user_id et de ce connecter avec.

Extension PdfExport

On va activer la possibilité d'exporter les pages en PDF.

Installation de htmldoc

$apt-get install htmldoc

Création de l'extension PdfExport

Créer le répertoire de l'extension :

cd /var/www/mediawiki/extension
mkdir -p PdfExport/

Créer les deux fichiers suivant en copiant le contenu site : PdfExport

vi PdfExport.php
vi PdfExport.i18n.php

Lien d'explication : Extension Pdf_Export

Modification du fichier PdfExport.php

Pour éviter les problèmes avec HTTPS activé. Avant :

#system("perl -pi -e 's/img src=\"https:\/\//img src=\"http:\/\//g' '$mytemp'");

Après :

system("perl -pi -e 's/img alt=\"\" src=\"/img alt=\"\" src=\"http:\/\/wiki.jpsystem.info/g' '$mytemp'");

Activation du module

Ajouter ce qui suit à 'LocalSettings.php' :

require_once("extensions/PdfExport/PdfExport.php");

L'extension est maintenant activée.

Extension PdfBook

On veut rajouter la possibilité d'exporter toutes les pages d'une catégorie en PDF dans un seule fichier et avec un sommaire.

Installation

Récupérer le fichier : Extension Pdf_Book
Mettre le fichier PdfBook.php dans le dossier "PdfBook".

Ajouter cela à la fin du 'LocalSettings.php' :

#Ajout de l'extension PdfBook
require_once( "$IP/extensions/PdfBook/PdfBook.php" );
$serverWithoutHttps = 'http://wiki.jpsystem.info';

De plus, il faut modifier le fichier 'PdfBook.php' comme ceci, en rajoutant une variable globale :
Avant :

global $wgServer, $wgArticlePath, $wgScriptPath, $wgUploadPath, $wgUploadDirectory, $wgScript;

Après :

global $wgServer, $wgArticlePath, $wgScriptPath, $wgUploadPath, $wgUploadDirectory, $wgScript, $serverWithoutHttps;

Puis ici :
Avant :

$text    = preg_replace('|(<img[^>]+?src=")(/.+?>)|', "$1$wgServer$2", $text);       # make image urls absolute

Après :

$text    = preg_replace('|(<img[^>]+?src=")(/.+?>)|', "$1$serverWithoutHttps$2", $text);       # make image urls absolute

Template PdfBook

Pour afficher dans les pages des catégories la possibilité d'exporter une sélection d'article en PDF, il faut créer deux templates (modèles) :

  • template:message
{|class="message"
{|style="color:#000000; width:100%; border:solid 1px #A8A8A8; padding:0.5em; margin:0.5em 0; background-color:#e9eaf9;font-size:95%; vertical-align:middle;"
|\{\{\{icon\}\}\}
|<div style=width:100%; text-align:center;>\{\{\{text\}\}\}</div>
|}
|}
  • template:pdf
{{message|icon=[Image:Books.png\|60px]|text=Cette sélection d'articles peut être '[{{fullurl:{{FULLPAGENAMEE}}|action=pdfbook}} téléchargée en PDF]' <small>(ou comme [{{fullurl:{{FULLPAGENAMEE}}|action=pdfbook&format=html}} pages html])</small><br />
Vous pouvez aussi [https://fileserver.intranet.jpsystem.info/documents/ consulter directement le dossier de cette catégorie sur le serveur de fichier]<br>
}}

Ainsi dans toutes les pages de catégories, on va insérer ceci :{{pdf}}

ATTENTION : A cause de Dotclear, des caractères antislash apparaisse, il faut les enlever ;-)

Cela va permettre d'exporter les articles en pdf, ainsi lorsque vous cliquerez sur le lien, vous pourrez télécharger un fichier contenant un sommaire et tous les articles de la catégorie.

Interdiction modification par utilisateur anonyme

Ajouter cela à la fin du LocalSettings.php :

$wgGroupPermissions['*']['edit']= false;
$wgGroupPermissions['user']['edit'] = true;

Interdiction utilisateur non inscrit de voir les pages

Ajouter cela à la fin du LocalSettings.php :

$wgGroupPermissions['*']['read']= false;
$wgGroupPermissions['user']['read'] = true;

Voila pour l'instant, le reste suivra dans un autre billet....

Commentaires

1. Le jeudi, février 11 2010, 08:39 par Crazysky

Bonjour,
Je suis en pleine recherche pour faire fonctionner mon mediawiki comme intranet de base de connaissance. Cependant pour la connexion à notre infrastructure Active Directory 2003, c'est la merde pas possible.

Il y a plein de documentation mais ils ne précisent que trop peu souvent si c'est pour du LDAP ou AD.

Quand je vois votre configuration, cela me fait un peu peur.
o=jpsystem,dc=meta
ne devrais meme pas y être. A la limite dc=jpsystem,dc=fr par exemple, mais le o ou le c ne sont pas utilisé pour AD.

Je fait donc appelle à votre aide pour m'éclairer un peu dans le noir :)
car j'obtiens toujours :
Erreur de connexion
Le mot de passe est incorrect. Veuillez essayer à nouveau.

Et impossible pour moi de trouver où se trouve le fichier de log :-/

LDAP : 1.2b
MediaWiki 1.15.1
PHP 5.3.1 (apache2handler)
MySQL 5.1.41

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet