Ce blog a déménagé et parle maintenant uniquement anglais.

This blog has moved and now only speaks English.

blog.floriancargoet.com

See you there!

/home/florian

le blog de florian cargoet : du linux, du web et du logiciel libre



Ejabberd, serveur XMPP

3 July, 2008 (15:50) | Forge Evolix | Florian Cargoet

Ejabberd est un serveur Jabber simple à mettre en oeuvre et robuste.

Il est codé en Erlang, ce qui offre d’intéressantes possibilités : montée en charge, clustering, tolérance aux pannes…

Pour notre projet de forge, nous souhaitons que chaque développeur inscrit dans un ou plusieurs projets se voit automatiquement attribuer un compte jabber (user@forge.evolix.net par exemple) et retrouve dans ses contacts, tout aussi automatiquement, l’ensemble des développeurs avec qui il travaille, groupés par projet.

Authentification

Pour ce qui est de l’authentification, ejabberd a le bon goût de permettre l’utilisation d’un script externe pour identifier les utilisateurs. J’ai aussitôt écrit un petit script Perl qui exploite la base d’utilisateur GForge. Ainsi, l’authentification est centralisée et les comptes utilisateurs ne sont pas inutilement dupliqués. Ce même script permet également de changer son mot de passe GForge via un client Jabber (puisque c’est le même mot de passe).

Contacts partagés

En ce qui concerne les groupes de contacts, ejabberd intègre la notion de ‘shared roster’ qui permet de créer des groupes partagés. Via l’interface web d’aministration du serveur, on peut aisément créer de tels groupes. Ce qui nous intéresse, c’est de pouvoir créer ces groupes automatiquement, via un cronjob par exemple. Ejabberd est livré avec ejabberdctl qui permet d’effectuer certaines opérations d’administration en ligne de commande. mod_ctlextra, un module pour ejabberd y ajoute encore des commandes, dont la gestion des shared rosters. Malheureusement, dans le paquet pour Debian, la version n’est pas la dernière révision du dépôt de mod_ctlextra, aussi manque t-il quelques commandes utiles.

Ici aussi, j’ai écrit un script Perl qui liste les projets existants sur GForge et créer les groupes Jabber correspondants puis liste les développeurs de chaque projet afin de remplir les groupes. Ainsi, lorsqu’un développeur se connecte à son compte Jabber, il a directement accès à autant de groupes de contacts pré-remplis que de projets auquels il contribue.

Ce script recrée à chaque fois l’ensemble des groupes et les re-remplit à chaque fois car la version de mod_ctlextra incluse dans le paquet Debian ne permet pas de lister les groupes existants ni les utilisateurs dans ces groupes.

En projet : modifier le paquet Debian pour inclure les commandes pour lister les shared rosters.

Vous retrouverez tous les détails techniques et procédures sur le trac/wiki.

Article précédent :
«