Archives par mot-clé : Ejabberd

Discussion en ligne avec MUCkl

Sous ce nom barbare de « MUCkl » (dont la prononciation anglophone doit s’approcher de « meuqueule »), se cache un redoutable logiciel de discussion en ligne. Mais pas n’importe comment ! Tout d’abord il s’agit d’une application Web, qui doit donc être hébergée sur un site Internet. Ensuite, MUCkl permet aux internautes de tchater ensemble, quel que soit leur nombre, sans disposer de compte, à la manière d’IRC. Enfin, et c’est là tout l’intérêt de cet outil développé à la sauce AJAX, il est basé sur le protocole XMPP ! Par conséquent, MUCkl est entièrement interopérable avec les messageries Jabber et Google Talk.

Voici une liste des fonctionnalités qu’offre MUCkl :

  • Accès à une liste prédéfinie de salons XMPP
  • Aucun compte XMPP côté utilisateurs : ils choisissent un pseudo et c’est parti !
  • Utilisation d’un seul et unique compte XMPP pour se connecter aux différents salons, les utilisateurs se connectant de manière transparente à l’aide de ce compte
  • Dialogue à plusieurs ou MUC pour « Multi User Chat » (c’est tout l’intérêt d’un salon de discussion !)
  • Envoi de messages privés aux autres internautes connectés sur le salon
  • Les salons XMPP sont, de fait, accessibles depuis les clients comme Psi, Gajim, Pidgin ou Kopete

Bien que MUCkl repose sur le langage Javascript et ne fasse appel à aucun code ni base de données côté serveur, il nécessite quelques petits ajustements :

  • Le serveur XMPP doit disposer d’un accès HTTP-Polling / HTTP-Binding, soit via un proxy, soit directement implémenté en interne comme c’est le cas avec ejabberd
  • Le port 5280 doit être ouvert sur le pare-feu du serveur XMPP, puisque c’est sur ce port que sont écoutés les accès via HTTP
  • Le serveur Apache hébergeant le site MUCkl, doit permettre la redirection d’URL vers le port 5280 (ce qui rend déjà le logiciel inutilisable avec les pages perso de Free)

Après avoir vu ces quelques détails, nous allons donc être en mesure de mettre en place MUCkl pour un salon hébergé sur un serveur XMPP public ou privé, voire les deux mélangés. Pour ce faire, nous allons considérer que plusieurs choses sont d’ores et déjà installées / accessibles :

  • Un serveur ejabberd
  • Un serveur Apache, présent sur le même serveur ou non que le serveur XMPP
  • Un client FTP pour le transfert de fichiers (à moins que vous ne travailliez en local)

Configuration d’ejabberd

La première chose à vérifier est que le serveur ejabberd écoute bien le port 5280. Pour cela, le fichier de configuration doit contenir ceci :

{5280, ejabberd_http,    [http_bind, http_poll, web_admin]}]}

Pour tester le HTTP-Binding et le HTTP-Polling, il suffit d’ouvrir un navigateur Internet et de taper l’URL suivante :

http://<IP du serveur XMPP>:5280/http-bind/
http://<IP du serveur XMPP>:5280/http-poll/

Si le navigateur vous engueule, il est possible que le port 5280 ne soit pas ouvert sur le pare-feu. Si votre serveur est relié à un modem-routeur comme la Freebox, il faut également rediriger le port 5280 vers l’adresse IP de votre serveur.

Configuration d’Apache

Un des éléments essentiels pour que MUCkl puisse fonctionner, c’est la présence d’un certain nombre de modules activés dans Apache. Ces modules seront directement utilisés par Apache pour rediriger les requêtes HTTP vers le serveur XMPP. Le plus simple si vous utilisez (très judicieusement) un système d’exploitation GNU/Linux, c’est d’effectuer une recherche à partir de votre logiciel de gestion de paquets afin d’installer (ou de vérifier que sont installés) ces modules :

  • mod_proxy / proxy_module
  • mod_proxy_connect / proxy_connect_module
  • mod_proxy_http / proxy_http_module
  • mod_rewrite / rewrite_module

Si vous êtes sous Windows (personne n’est parfait) et que vous utilisez WampServer, il vous suffit d’activer ces modules par le biais de l’icône WampServer en bas à droite.

Téléchargement et configuration de MUCkl

ejabberd et Apache sont prêts, il ne reste plus qu’à installer MUCkl ! Tout d’abord, rendez-vous ici pour le télécharger : Téléchargements de JWchat (téléchargez le fichier « muckl-X.X.X.tar.gz » ou « muckl-X.X.X.zip » le plus récent)

Une fois le fichier téléchargé, décompressez-le. Il doit vous créer un répertoire « muckl-X.X.X » que vous allez renommer « muckl »… Dans ce répertoire, nous allons nous intéresser à deux fichiers en particulier : « htaccess.example » et « config.js ». Faites d’abord une copie de « htaccess.example » en « .htaccess », puis ouvrez « .htaccess » dans un éditeur de texte et remplacez tout son contenu par ceci (à adapter selon l’URL du serveur XMPP !) :

AddDefaultCharset UTF-8
Options +MultiViews
RewriteEngine On
RewriteRule http-bind/ http://<IP du serveur XMPP>:5280/http-bind/ [P]
RewriteRule http-poll/ http://<IP du serveur XMPP>:5280/http-poll/ [P]

Autour de « config.js » maintenant ! Editez-le, et modifiez les variables qui suivent selon vos besoins :

[...]
var BACKENDTYPE = 'binding';
[...]
var HTTPBASE = 'http-bind/';
[...]
var XMPPDOMAIN = '<URL du compte XMPP à utiliser>';
var AUTHTYPE = 'anonymous';
var MUCKLJID = '<Login du compte XMPP>';
var MUCKLPASS = '<Mot de passe du compte XMPP>';
// Attention ! le mot de passe est visible par les navigateurs
[...]
var ROOMS =
[
        {
                name:'<Le nom du salon XMPP>',
                description:'<Description du salon>',
                server:'conference.<L'URL du serveur XMPP>'
        }
];

Bien entendu, il faut que le salon XMPP soit créé au préalable avant d’essayer de s’y connecter via MUCkl. Il doit être également rendu « persistant » !

Une fois ces paramètres configurés, transférez le répertoire « muckl » à l’endroit de votre choix sur le serveur Apache. En vous rendant sur « http://<votre site Internet>/muckl », vous devriez arriver sur une page Web vous demandant d’entrer un pseudo et de choisir un salon de discussion. Si ce n’est pas le cas et que le navigateur vous engueule, le problème vient sûrement d’Apache et du fichier « .htaccess » que vous avez préalablement configuré.

Si vous avez pu renseigner un pseudo, choisir un salon, et cliquer sur le bouton de connexion au salon, normalement vous devriez enfin pouvoir clavarder follement. Si ce n’est pas le cas, soit parce que le navigateur vous affiche un message d’erreur, soit parce que le fond de la fenêtre reste désespérément vide, le problème vient sûrement du fichier « config.js ».

Pour ces différents problèmes susceptibles d’arriver juste avant la finalisation de MUCkl, un bon moyen de s’assurer qu’Apache accède parfaitement au serveur XMPP via le port 5280 est d’entrer dans le navigateur l’URL « http://<votre site Internet>/muckl/http-bind » : dès lors, vous devriez retrouver la page qui s’affichait tout à l’heure quand vous vous assuriez qu’ejabberd est bien configuré. Si le navigateur vous engueule, vérifiez les pare-feux devant ejabberd, vérifiez la présence des modules Apaches, et jouez un peu avec le contenu du fichier « .htaccess »… 😉

Bon, en toute franchise, je trouve le look de MUCkl assez affreux… Alors pour mes besoins, je l’ai relooké et francisé ! Rendez-vous sur le site du Shorinji Kempo pour voir le résultat… 8)

Creative Commons License
Publié sous licence Creative Commons.