phpLDAPadmin - Supprimer les avertissements affichés à chaque connexion

Page 1 / 1

Symptôme

Lorsque vous vous connectez à l'interface web "phpLDAPadmin", vous recevez les avertissements "Unknown XML setting", "Automatically removed objectClass from template" et "Automatically removed attribute from template" suivant les versions de "phpLDAPadmin".

 

Cause

Ces avertissements ne sont pas là par hasard et ils ne proviennent pas non plus d'un bug de "phpLDAPadmin". En réalité, "phpLDAPadmin" est fournis avec une série de templates qui ne sont pas tous basés sur des classes et / ou des attributs existant par défaut. C'est donc pour cette raison qu'il vous affiche une fois par session ces avertissements. Il vous dit d'ailleurs qu'il a supprimé (pour la durée de la session) ceux qui n’existaient pas sur votre serveur pour éviter un éventuel bug.

 

Résolution

Si vous n'utilisez qu'un seul serveur LDAP, vous pouvez vous permettre de modifier le code source de cette interface pour que ces avertissements disparaissent. En résumé, la solution consiste à supprimer les classes et les attributs "non standard" qui provoquent ces avertissements.

 

1) Téléchargement de la nouvelle version 1.2.3 de phpLDAPadmin

Pour résoudre ce problème, nous allons télécharger et installer la nouvelle version "1.2.3" manuellement car celle-ci n'est pas disponible dans les dépots d'Ubuntu. La 2ème raison, c'est simplement que cette nouvelle version est plus stable que la précédente et qu'il est possible de supprimer tous ces avertissements proprement.

Avant de commencer, connectez-vous en root grâce à la commande "sudo" :

Bash

sudo su

IMPORTANT : Vous devez posséder une version de phpLDAPadmin sur votre machine Ubuntu pour appliquer cette solution. Par exemple, pour installer la version 1.2.2 (actuellement), tapez la commande :

Bash

apt-get install phpldapadmin

Etant donné que la version installée par "apt-get" se trouve dans le dossier "/etc", nous allons donc installer la nouvelle version à coté de celle là.
Pour cela, commencez par vous déplacer dans le dossier "/etc".

Bash

cd /etc

Allez ensuite sur la page de téléchargement de "phpLDAPadmin", puis :
- cliquez sur la dernière version disponible
- cliquez sur le fichier ".tgz"
- faites un clic droit sur le lien "direct link" et cliquez sur "Copier l'adresse du lien".

Ensuite, dans le terminal d'Ubuntu, tapez la commande suivante :

Bash

wget -O phpldapadmin.tgz http://www.sourceforge.net (direct link)

Note :
- Remplacez "http://www.sourceforge.net (direct link)" par le lien direct que vous venez de copier du site.
- Une fois le téléchargement terminé (lorsque le téléchargement sera arrivé à 100 %), appuyez sur la touche "Enter" pour quitter le programme "wget".

 

2) Installation de la nouvelle version 1.2.3 de phpLDAPadmin

Décompressez ensuite l'archive que vous venez de télécharger en tapant ceci :

Bash

tar -xvf phpldapadmin.tgz

Déplacez ensuite l'archive téléchargée dans le dossier qui vient d'être créé (si vous souhaitez le garder comme sauvegarde) :

Bash

mv phpldapadmin.tgz phpldapadmin-1.2.3/phpldapadmin-1.2.3.tgz

Copiez ensuite la configuration de l'alias (installé par la version téléchargée via apt-get) pour créer l'alias de la nouvelle version :

Bash

cp /etc/phpldapadmin/apache.conf /etc/apache2/conf.d/phpldapadmin-1.2.3.conf

Modifiez ensuite l'alias de l'ancienne version pour qu'il ne rentre pas en conflit avec celui de la nouvelle version.

Bash

vi /etc/phpldapadmin/apache.conf

Modifiez l'alias de l'ancienne version (1.2.2)

Bash

<IfModule mod_alias.c>
	Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
</IfModule>

comme ceci :

Bash

<IfModule mod_alias.c>
	Alias /phpldapadmin-1.2.2 /usr/share/phpldapadmin/htdocs
</IfModule>

Puis, modifiez celui de la nouvelle version (dans ce cas-ci : 1.2.3)

Bash

<IfModule mod_alias.c>
	Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
</IfModule>

# .....

<Directory /usr/share/phpldapadmin/htdocs/>

pour que l'alias pointe sur le dossier "htdocs" de cette nouvelle version

Bash

<IfModule mod_alias.c>
	Alias /phpldapadmin /etc/phpldapadmin-1.2.3/htdocs
</IfModule>

# .....

<Directory /etc/phpldapadmin-1.2.3/htdocs/>

Pour finir, redémarrez le serveur web "Apache" pour que les changements soient pris en compte.

Bash

/etc/init.d/apache2 restart

 

3) Configuration de phpLDAPadmin

Avant de pouvoir passer à la suppression de ces avertissements, nous devons maintenant configurer la nouvelle version de "phpLDAPadmin".
Etant donné que nous l'avons installé manuellement, vous devez le configurer manuellement.

Note : Si vous tentez d'accéder à l'interface avant de la configurer, vous aurez le message d'erreur suivant "Notice: Undefined variable: _SESSION in /etc/phpldapadmin-1.2.3/lib/page.php ...".

Pour que la configuration soit plus simple à faire et vous évitez ainsi de devoir tout modifier via la ligne de commande, nous vous conseillons d'installer un serveur SSH sur votre machine Ubuntu et de créer un projet à distance via le programme Eclipse.
Note : Il est aussi possible de se connecter avec un client FTP via la connexion SSH que vous aurez installée au préalable.

Pour configurer cette interface web, commencez par copier le fichier de configuration par défaut comme ceci :

Bash

# On se déplace dans le dossier "/etc/phpldapadmin-1.2.3/config"
cd /etc/phpldapadmin-1.2.3/config
# On copie le fichier de configuration par défaut en "config.php".
cp config.php.example config.php

Editez ensuite le fichier "config.php" comme ceci.
Note : Repérez l'encadré "Define your LDAP servers in this section" et vous y trouverez les lignes ci-dessous.

Bash

// Nom du serveur
$servers->setValue('server','name','InformatiWeb LDAP Serveur');

// Adresse du serveur. Etant donné que l'interface web est installée sur le même ordinateur que le serveur LDAP, vous pouvez laisser l'adresse IP : 127.0.0.1
$servers->setValue('server','host','127.0.0.1');

// La base de recherche du serveur est basée sur le nom de domaine du serveur. Notre domaine local étant "informatiweblan.net", nous avons donc indiqué "dc=informatiweblan,dc=net".
$servers->setValue('server','base',array('dc=informatiweblan,dc=net'));

// Modifiez les informations dc= comme ci-dessus. Le cn=admin permet simplement de spécifier que la connexion se fera avec le compte admin du serveur LDAP.
$servers->setValue('login','bind_id','cn=admin,dc=informatiweblan,dc=net');

 

3) Suppression des avertissements

Etant donné que nous venons de reconfigurer les alias, vous pouvez maintenant accéder à la nouvelle version (1.2.3) via l'adresse "http://ldap.informatiweblan.net/phpldapadmin/" ou "http://localhost/phpldapadmin/" (si vous êtes sur la machine Ubuntu).
Note :
- L'ancienne version étant accessible via l'adresse "http://ldap.informatiweblan.net/phpldapadmin-1.2.2/".
- ldap.informatiweblan.net étant l'adresse pointant vers notre serveur Ubuntu.

Lorsque vous vous connecterez à cette interface web, vous recevrez les avertissements "Automatically removed objectClass from template" et "Automatically removed attribute from template".
Pour les supprimer, il va donc falloir (comme indiqué en haut de cette solution) supprimer les objets et attributs qui sont à l'origine de ces avertissements.

Pour cette partie, nous allons considérer que vous avez installé Eclipse sur un ordinateur du réseau et que vous avez créé le projet distant via le plugin "Remote system explorer" expliqué dans ce tutoriel.

Après analyse des différents avertissements affichés, nous savons quels objets / fichiers et quels attributs il faudra supprimer des "templates".
Notes :
- Ces "templates" se trouvent dans le dossier "/etc/phpldapadmin-1.2.3/templates/creation".
- Nous n'allons pas supprimer les fichiers concernés mais les déplacer vers un sous dossier "bak" par sécurité.

Voici donc les objets / fichiers à supprimer et les commandes à exécuter :
- Créer le dossier "bak" : mkdir bak
- courierMailAccount / courierMailAccount.xml : mv courierMailAccount.xml bak
- mozillaOrgPerson / mozillaOrgPerson.xml : mv mozillaOrgPerson.xml bak
- sambaSAMAccount / sambaSamAccount.xml : mv sambaSamAccount.xml bak
- sambaGroupMapping / sambaGroupMapping.xml : mv sambaGroupMapping.xml bak
- courierMailAlias / courierMailAlias.xml : mv courierMailAlias.xml bak

Après avoir supprimé (ou déplacer ces fichiers), cliquez sur "logout" et reconnectez-vous. Cela aura pour effet de réaffichez les avertissements restants.
Cliquez ensuite sur votre domaine dc=informatiweblan, dc=net

Il devrait rester l'avertissement "Automatically removed objectClass from template" à propos de l'objet "Samba: Machine: sambaSAMAccount".
En réalité, cet objet n'existe plus mais c'était une dépendance de l'objet "sambaMachine". Nous allons donc supprimer cette dépendance.
Pour cela, éditez le fichier "sambaMachine.xml" et commentez la ligne :

XML

<objectClass id="sambaSAMAccount"></objectClass>

comme ceci :

XML

<!-- <objectClass id="sambaSAMAccount"></objectClass> -->

Déconnectez-vous une 2ème fois de l'interface web et reconnectez-vous. Vous ne devriez plus recevoir aucun avertissement.