Catégorie : Administration système     Tags :      

    Retrouvez cet article dans : Linux Magazine 82

    Les messageries instantanées permettent de communiquer aisément avec un correspondant. Cependant, divers protocoles existent dont MSN, ICQ, AIM, Jabber ou encore Yahoo Messenger. Ces cinq réseaux facilitent les communications de deux personnes. Ils ne sont pas prévus pour des groupes de personnes souhaitant parler d’un sujet. Pour cela, il existe encore un autre protocole : IRC. Il serait donc utile de pouvoir utiliser l’ensemble de ces services avec un même et unique logiciel. La méthode classique consiste à utiliser une application spécialisée et compatible avec l’ensemble. Nous verrons dans cet article comment utiliser IRC et seulement IRC pour parler à une personne d’un de ces réseaux.

    BitlBee est une passerelle entre IRC et les grands protocoles de messagerie instantanée (MSNP pour MSN, Oscar pour AIM et ICQ, Yahoo Messenger Protocol pour Yahoo, et enfin XMPP pour Jabber et maintenant Google Talk). Des questions diverses sont régulièrement posées aux développeurs, comme pour tout logiciel sortant de l’ordinaire. Régulièrement, des personnes demandent pourquoi elles ne voient pas les autres utilisateurs dans le channel. La confusion avec un serveur IRC est rapidement réalisée.
    Wilmer van der Gaast était plus habitué à utiliser un client IRC complet qu’un logiciel spécialisé en messagerie instantanée. Il voulait donc communiquer sur MSN par IRC. Peu de logiciels existaient pour cela. Un support de ICQ était disponible pour irssi, mais il ne gérait que l’ancienne version du protocole. Alors, en 2002, il écrit la première version de BitlBee. Mais d’où vient ce nom si spécial ? Il s’agit d’un mélange de « het Bijtje » et de « the little bee ». Ces deux expressions signifient « la petite abeille ». La première est en néerlandais et la seconde en anglais. L’abeille a deux couleurs distinctes, ce qui, ici, représente deux mondes différents : IRC et la messagerie. Le but de Wilmer n’était pas de réinventer la roue. Il a donc préféré prendre du code existant, à savoir celui de Gaim. Mais de lourds changements de ce côté vont intervenir. En effet, la partie gérant Yahoo se sert désormais de la bibliothèque libyahoo2. Le module MSN, quant à lui, a tout simplement été réécrit. Il reste donc quelques parcelles de code de Gaim. Ne vous affolez donc pas si vous voyez une erreur du programme Gaim. Il s’agit bel et bien de BitlBee.  Bien sûr, le développement ne s’est pas déroulé sans difficulté. Un bug important a empêché de sortir la version 1.0. Il a été corrigé pour la version 0.99. Les anciennes versions de BitlBee peuvent alors se bloquer complètement et ne pas répondre aux requêtes. Dans tous les cas, il faut le tuer avec la commande kill pour reprendre la main. Ceci oblige à utiliser inetd. Le problème provenait d’une erreur sur un contrôle d’erreur.

    Et si nous l’installions ?

    Vous trouverez BitlBee directement sur le site web http://www.bitlbee.org. Il existe deux versions majeures : bitlbee 0.92 avec des patchs pour MSN et bitlbee 1.0.1 ([NDLR : Pour Debian, 0.92 est en stable alors que 1.0.1 est encore en unstable. Solution intermédiaire, 1.0 dans testing). La première nécessite un patch fourni à part pour Jabber et n’est pas considérée comme stable. Les extensions MSN ne sont pas très appréciées par Wilmer. Il recommande donc la dernière version, à jour, avec des bugs importants en moins. Cet article décrit l’installation de la version 0.92. Le procédé est le même pour la 1.0.1 avec l’application du patch en moins.
    BitlBee a des dépendances. Il faut en effet une bibliothèque SSL. Vous avez le choix entre GnuTLS, OpenSSL ou NSS. GnuTLS est recommandée pour sa licence, mais elle est lourde de dépendances. Il vaut mieux l’installer par un paquet prêt à l’emploi plutôt que de la compiler. OpenSSL est beaucoup plus simple à mettre en œuvre mais ne permet pas d’avoir un exécutable distribuable. En effet, il y a une incompatibilité de licence. NSS combine l’avantage des deux.
    Cette bibliothèque est livrée avec la suite Mozilla, Firefox ou encore Thunderbird. Elle est cependant susceptible de changer lors d’une mise à jour du navigateur ou du client mail. Cet article montre l’installation avec OpenSSL déjà installé sur le serveur. Bien sûr, vous aurez également besoin d’un client IRC.
    Il en existe une multitude, que ce soit en graphique (XChat, Konversation, etc.), pour un navigateur web (l’applet PJIRC entre autres) ou encore en ligne de commande (irssi, ircii, etc.). Le plus connu du grand public est entièrement propriétaire et payant. Il s’agit de mIRC. Ce dernier n’est disponible que pour Windows.
    La première étape consiste à décompresser le fichier bitlbee-0.92-msn6-akke.tgz. Il contient la version stable de BitlBee et les patchs MSN. Vous le trouverez en téléchargement dans la partie MSN extensions du site web. Il possède de bons avantages par rapport à la version standard comme la gestion des avatars et la modification de la police d’affichage.

    Afin de réaliser une installation « propre », la décompression se fait dans le répertoire /usr/src.

    tar -xzvf bitlbee-0.92-msn6-akke.tgz -C /usr/src

    Pour bénéficier du support de Google Talk, il faut également appliquer le patch bitlbee-jabberserver.

    cp bitlbee-jabberserver.patch /usr/src/bitlbee-0.92-msn6-akke/
    cd /usr/src/bitlbee-0.92-msn6-akke/
    patch -p1 < bitlbee-jabberserver.patch

    Lors de l’utilisation, le contrôle du logiciel se fait dans un channel appelé #bitlbee. Le système est représenté par l’utilisateur root. Il est possible de changer ces deux valeurs avant la compilation. Pour cela, il suffit d’éditer le fichier bitlbee.h et de changer les deux lignes suivantes :

    #define ROOT_NICK «root»
    #define ROOT_CHAN “#bitlbee”

    Ici, nous mettrons le nom de l’ordinateur comme utilisateur de contrôle, à savoir Elrond. Il est alors possible de passer à la compilation proprement dite. Les modules Jabber, Oscar, MSN et Yahoo seront activés. Tapez simplement la commande suivante pour procéder à la configuration et à la compilation.

    ./configure --prefix=/usr --etcdir=/etc/bitlbee --ssl=openssl && make

    Contrairement à d’autres logiciels, l’installation est décomposée en deux. La première commande ci-dessous s’occupe des binaires et la deuxième de la configuration.
    Cela permet de conserver des fichiers existant lors d’une mise à jour. Enfin, le répertoire /var/lib/bitlbee doit être créé à la première installation. Il contiendra l’ensemble des données des utilisateurs.

    make install
    make install-etc
    mkdir -p /var/lib/bitlbee
    chown -R bitlbee:daemon /var/lib/bitlbee

    BitlBee ne doit pas s’exécuter avec l’utilisateur root. D’ailleurs, ceci devrait être le cas de l’ensemble des serveurs, que ce soit pour le web, pour IRC ou pour autre chose. Pour un serveur en production, il aurait même été préférable d’enfermer BitlBee dans un chroot.
    La configuration qui va suivre n’est pas idéale non plus. En effet, en raison du caractère instable de certaines versions de BitlBee, le serveur sera lancé par inetd ou xinetd.
    Or, ces deux derniers démons sont souvent désactivés sur les serveurs pour limiter le nombre de failles.

    La commande ci-dessous crée l’utilisateur bitlbee du groupe daemon. En attribuant le shell /bin/false, il devient impossible de se connecter avec cet utilisateur.

    useradd -g daemon -s /bin/false bitlbee

    Le fichier /etc/bitlbee/motd.txt contient le texte affiché à la connexion sur le serveur. Il est tout à fait possible d’ajouter une citation aléatoire. Pour cela, il suffit de créer un petit script et de l’ajouter à la configuration de cron.
    Le fichier /etc/bitlbee/bitlbee.conf permet de modifier la configuration. Les valeurs initiales conviennent parfaitement, il est donc inutile de l’éditer. Il ne reste plus qu’à ajouter le service bitlbee dans /etc/services et à l’enregistrer dans inetd (ou xinetd selon la distribution Linux).
    Sur le serveur de test, bitlbee s’exécutera sur le port 6665. Normalement, il devrait être sur le 6667, mais un serveur IRC classique l’utilise déjà. Il faut donc éditer le fichier /etc/services et ajouter la ligne suivante :

    bitlbee 6665/tcp #Passerelle IRC / IM

    Il reste à configurer le lancement du serveur. Il faut donc savoir si vous utilisez inetd ou xinetd. Pour cela, utilisez simplement la commande ps comme ceci :

    ps -aux | grep inet

    Avec inetd

    Si inetd est en fonctionnement, la ligne ci-dessous doit être ajoutée au fichier /etc/inetd.conf.

    bitlbee   stream   tcp   nowait   bitlbee   /usr/sbin/bitlbee

    Il ne reste alors qu’à relancer inetd ainsi :

    pkill -HUP inetd

    Avec xinetd

    Pour l’utilisation de xinetd, créez le fichier /etc/xinetd.d/bitlbee. Il contiendra le code suivant :

     service bitlbee
    {
            socket_type     = stream
            protocol        = tcp
            wait            = no
            user            = bitlbee
            server          = /usr/sbin/bitlbee
    }

    L’installation est alors terminée. Vous allez enfin pouvoir profiter de votre nouveau serveur.

    La configuration

    Tout d’abord, il faut ouvrir un client IRC. Quelques plugins pour irssi sont disponibles sur le site de BitlBee. Ils permettent de changer certains messages en notices, de faire une recherche sur les contacts ou encore de gérer les avertissements de frappe. Lancez donc votre client IRC à l’adresse de votre serveur et sur le port 6665. Bien sûr, il est possible de le faire par la commande /connect.
    Un channel #bitlbee s’ouvre. Le maître Elrond vous souhaite alors la bienvenue. Le channel en question vous permettra de taper les commandes. La première à apprendre est bien sûr help. Plus de précisions sont données sur un point précis avec l’utilisation d’un paramètre. La liste des commandes s’affiche avec help commands.
    Une gestion de session existe. Ainsi, lorsque vous quitterez le client IRC, vous pourrez récupérer tous les paramètres. Il faut cependant s’enregistrer. Pour cela, il suffit de taper register un_mot_de_passe. Il vous faudra vous identifier par la commande identify le_mot_de_passe à la prochaine connexion. Les paramètres seront alors chargés.
    Il est désormais temps de configurer les comptes. Les étapes indiquées ci-dessous impliquent que vous ayez un compte dans les services correspondant. MSN sera largement traité avec les extensions. D’ailleurs, pour configurer un compte, il suffit juste d’utiliser la commande account add. Les six lignes suivantes montrent respectivement la création des comptes MSN, AIM, ICQ, Yahoo Messenger, Jabber.org, et Google Talk.

    account add msn buffenc@yahoo.fr mot_de_passe
    account add oscar buffenc mot_de_passe login.oscar.aim.com
    account add oscar 319800069 mot_de_passe login.icq.com
    account add yahoo buffenc mot_de_passe
    account add jabber buffenc mot_de_passe jabber.org
    account add jabber buffenc@gmail.com mot_de_passe talk.google.com:5222:ssl

    Comme vous avez pu le voir ci-dessus ou dans l’aide via la commande help account add, le premier paramètre correspond au protocole utilisé. Le second est l’identifiant sur ce service, le troisième est le mot de passe et le quatrième le serveur. Pour Google Talk, le port doit être mis à 5223 chez certaines personnes. À chaque ajout de compte, Elrond doit répondre «Account successfully added». Vous obtiendrez la liste de tous les comptes par account list. Cette dernière commande est très importante. En effet, lors de l’ajout d’un contact, il est nécessaire de préciser le numéro du compte concerné.
    Pour lancer les connexions, tapez simplement account on. Vous pourrez également vous déconnecter d’un protocole particulier avec account n off où n est le numéro du compte. La commande save permet de sauvegarder la configuration.
    BitlBee offre également d’autres options intéressantes. Il suffit d’utiliser la commande set sans paramètre pour les lister. La modification d’une valeur s’effectue en tapant set paramètre valeur.
    Par exemple, pour ne pas se connecter automatiquement après l’identification, ce sera set auto_connect «false». Le paramètre auto_reconnect détermine si BitlBee se reconnecte automatiquement après une déconnexion. Le délai entre deux tentatives est défini par auto_reconnect_delay. L’option charset est importante.
    Elle correspond à l’encodage des caractères. La valeur par défaut est iso-8859-1. Cela signifie que le caractère « euro » n’est pas disponible. Il vous faudra donc changer la valeur en iso-8859-15 ou en utf-8 selon la configuration de votre client IRC. Si vous voyez du code HTML apparaître dans les messages de votre correspondant, il faudra passer l’option html à strip.
    Lorsque away_devoice est activé, les contacts absents n’ont pas l’attribut voice. Ce dernier est généralement noté par le signe « + » devant le pseudo. Si l’option private a pour valeur true, une fenêtre est ouverte lorsqu’un contact vous parle. Dans le cas contraire, la discussion débute dans le channel #bitlbee. Il faudra alors utiliser la commande /msg du client IRC ou encore utiliser la souris pour ouvrir la discussion privée. Une autre solution consiste tout simplement à parler depuis le channel.
    Dans ce cas, vous devrez donner le nom du contact au début de chaque message. Une chaîne de caractères doit être ajoutée juste après le pseudo. Elle est définie par l’option to_char. Bien sûr, elle est à définir en fonction du client IRC. Il s’agit en fait des caractères ajoutés automatiquement par la complétion de la touche de tabulation. Par exemple, pour parler à Arnaud, il suffit d’écrire Arnaud: mon message si to_char vaut « : ».
    Avec la messagerie instantanée, il est possible d’écrire plusieurs lignes à la suite. Ce n’est pas le cas d’IRC. Pour cela, l’option buddy_sendbuffer permet d’envoyer les lignes écrites durant le délai buddy_sendbuffer_delay d’un bloc. Les options commençant par msn_notify_ activent ou désactivent les notices sur certains événements comme l’ouverture ou la fermeture de la fenêtre.
    Vous pourrez modifier la police utilisée par MSN avec tous les paramètres msn_font_*. Pour finir sur la commande set, les extensions MSN comprennent trois autres valeurs. msn_images_path_buddy et msn_images_path_emoticon sont les répertoires où seront respectivement enregistrés les avatars et les émoticônes. Votre avatar est défini par msn_images_mybuddyimage. L’image sera obligatoirement au format PNG.

    L’art de communiquer

    Bien sûr, pour communiquer, il faut avoir des contacts. Pour cela, il faut les ajouter à la liste du protocole. Vous n’avez pas besoin de vous occuper d’importer ou d’exporter quoi que ce soit. En effet, les contacts sont enregistrés sur le serveur et non pas sur le client. L’ajout se fait par la commande add ainsi :
    Le 1 correspond au numéro du compte. Pour le connaître, il faut utiliser la commande account list. Bien sûr, un jour, vous pourrez avoir envie de supprimer un de vos contacts. BitlBee gère cela très bien.
    La même syntaxe est appliquée aux commandes block et allow. La première bloque un contact. Ce dernier ne pourra plus vous parler sans que vous ne commenciez la discussion. La seconde commande annule cet état et réautorise le contact. Enfin, si vous souhaitez renommer une personne, procédez ainsi :
    Cependant, certaines opérations nécessitent l’accord du contact concerné. Il s’agit principalement de l’ajout. De même, vous devrez autoriser ou interdire l’ajout de votre adresse chez une autre personne. La question est tout simplement posée dans le channel #bitlbee. Il faudra alors répondre par yes ou par no. Par exemple, pour une connexion IRC, la question peut être celle-ci :
    La liste des questions est disponible via la commande qlist.  Il manque cependant une notion importante. Comment pouvons-nous discuter avec ce système ? Pour entamer une discussion, ouvrez tout simplement une fenêtre avec le contact. Si ce dernier a l’attribut voice, il est présent. Dans le cas contraire, il est absent. Un contact déconnecté n’est tout simplement pas présent sur le channel #bitlbee.

    /img-articles/lm/82/art-3/fig-1.jpg
    Fig. 1 : Une petite discussion avec Wilmer sur ICQ, en utilisant irssi.
    La commande blist vous permettra de lister les différents contacts. Une autre solution permet d’envoyer des messages. En effet, il est tout à fait possible de parler depuis le channel #bitlbee. Dans ce cas, vous devez faire précéder chacun des messages du pseudo et de la chaîne to_char.
    Certains protocoles gèrent les discussions privées. Bien sûr, tous les contacts impliqués dans une telle fonctionnalité ne peuvent être sur deux comptes différents. Les channels correspondant portent le nom #chat_xxx. Les trois x représentent un nombre à trois chiffres. Pour créer un groupe de discussion, il faut d’abord rejoindre le channel portant le même nom que le premier contact. Cela se réalise avec la commande /join #mon_contact. Une erreur sera reportée par le client IRC. En effet, le channel demandé n’existe pas. Mais BitlBee s’occupe de créer le groupe de discussion virtuel. Il suffit alors d’inviter les contacts à ajouter. Pour cela, vous pouvez utiliser la commande /invite mon_autre_contact #chat_xxx.
    Ce système de communication a de lourds défauts. Vous ne pourrez pas utiliser la webcam ou encore transférer des fichiers. Mais, en contrepartie, il est possible d’utiliser diverses autres fonctionnalités. En effet, le couplage avec un client IRC permet d’utiliser une multitude de scripts. Ainsi, vous pourrez facilement connaître le temps depuis lequel un contact s’est déconnecté ou encore envoyer des citations. L’ensemble des tests a été réalisé avec irssi.
    Ce client IRC en console dispose de nombreux atouts. Par exemple, il peut être utilisé via SSH. Cela permet de garder la même configuration pour chaque utilisation. Mieux encore, un utilitaire nommé screen permet de garder des applications en console ouverte et de récupérer la sortie.
    Ainsi, il vous suffit de lancer screen dans une connexion SSH sur votre serveur. Exécutez alors irssi. Lorsque vous devrez changer d’ordinateur, il suffira de détacher l’affichage avec la combinaison de touches [Ctrl]+[D].
    Tapez alors screen -r à la prochaine connexion SSH. Vous verrez apparaître irssi avec toutes les discussions ouvertes. Quant aux avatars MSN, rien ne vous empêche de les enregistrer dans un répertoire utilisé par Apache. Ils seront visibles avec un simple navigateur web.

    Retrouvez cet article dans : Linux Magazine 82

    Posté par admin-web (fabrice) | Signature : Christophe Buffenoir | Article paru dans

    Laissez une réponse

    Vous devez avoir ouvert une session pour écrire un commentaire.


    • Il y a actuellement

    • 465 articles/billets en ligne.