Liens connexes

Dépêche modérée par

Dépêche éditée par

: irssi-xmpp : un nouveau module Jabber pour irssi

Posté par Nÿco (Jabber id, page perso, ). Modéré le 09 août 2007.
0
Il existe de nombreuses façons de se connecter au réseau Jabber avec irssi. Parmi celles-ci on retrouve : bitlbee (une passerelle de messagerie instantanée qui permet de se connecter depuis n'importe quel client IRC), irssi-jabber (un module irssi pour se connecter au réseau Jabber), gc (un script perl pour irssi permettant de se connecter aux salons de discussions de Jabber), PSYC et sûrement d'autres manières que je n'ai pas encore découvertes...

Jusqu'à présent j'utilisais bitlbee mais je (NdAMR : ErrTu, l'auteur du journal d'origine) voulais quelque chose dans irssi qui ne se connecte qu'à Jabber, qui prend en charge tout ou une grande partie du protocole XMPP (et de ses extensions incontournables) et qui le fasse bien. Hélas la plupart des autres solutions qui m'intéressaient ne sont ni complètes ni maintenues.

J'ai donc décidé de créer un nouveau module irssi pour se connecter au réseau Jabber en se basant sur le même principe que le module déjà existant irssi-jabber. Et après une petite semaine de développement, j'ai l'honneur de vous présenter irssi-xmpp !

Le module s'appuie sur la bibliothèque Loudmouth, écrite en C avec Glib, utilisée par Gossip, Inkscape et Telepathy, qui se veut légère et facile à utiliser pour programmer toutes sortes de choses dans les limites du protocole XMPP. Et je dois dire qu'elle fait plutôt bien son boulot.

La version actuelle du module irssi-xmpp et par la même occasion la première version publique est la 0.10 (NdAMR : et dans la foulée du journal, la 0.11). Au programme, la base de la base :
  • Version 0.10 :
    • la connexion aux serveurs Jabber (encore heureux) ;
    • la discussion avec les contacts Jabber ;
    • une liste des contacts avec un traçage complet des ressources et un tri des contacts (par état puis par pseudo/jid) ;
    • la possibilité de changer son état ;
    • l'envoi aux clients qui le demande de nos informations sur notre client (nom du client, version et système d'exploitation -> pas tout à fait le cas, je viens de m'apercevoir qu'"OpenBSD" est défini comme système d'exploitation en dur dans le module).
  • Version 0.11 :
    • L'autocomplétion des JID et aussi des ressources. La complétion des ressources n'est pas encore complète, pour l'avoir faut taper un truc du genre : /q foo@bar.bar/«TAB» (où «TAB» est l'appui sur la touche tabulation bien sûr) ;
    • La possibilité de n'afficher que les contacts connectés avec : /SET roster_show_offline OFF ;
    • La possibilité de ne pas envoyer les informations sur la version du client avec : /SET xmpp_send_version OFF
      À l'occasion, le nom du système d'exploitation renvoyé est bien celui que vous utilisez. ;
    • Le roster trie les contacts correctement.
Merci à ErrTu pour son journal.

> Lire la suite (8 commentaires, moyenne: 3,5).   [dépêche : 4833 caractères]

Je développe activement le module donc vous devriez voir arriver dans les semaines à venir les fonctions suivantes :

Je vous invite donc à aller régulièrement jeter un coup d'oeil à l'adresse suivante pour les mises à jour : http://cybione.org/src/irssi-xmpp/

Pour installer la bestiole, il vous faut irssi et loudmouth d'installés. Il vous faut aussi les sources d'irssi (enfin surtout les fichiers d'entêtes). Je ne touche pas aux autotools et à ce genre de choses ; la procédure d'installation est assez simple :
$ export IRSSI_INCLUDE=/le/chemin/vers/les/sources/d'/irssi
$ make
et enfin pour installer le module dans votre ~/.irssi/modules :
$ make user-install

Si tout s'est bien passé, vous pouvez lancer irssi et taper la commande suivante pour charger le module :
/load xmpp
Ensuite pour se connecter :
/server -xmppnet network server port password username
Par exemple :
/server -xmppnet jabber im.cybione.org 5222 motdepasse errtu

Et avec un peu de chance, vous voilà connecté !

Enfin vous pouvez afficher la liste de vos contacts :
/roster
Parler avec quelqu'un :
/q /
Par exemple :
/q errtu@im.cybione.org/Home
Et changer d'état :
/away indisponible

La commande away est un peu plus puissante que d'habitude car elle vous permet de changer la petite icône sur un client graphique, par exemple :
Dans tous les cas, sauf le premier, le message est facultatif.

Pour le moment, c'est rudimentaire mais presque suffisant pour une utilisation de base.

Au passage, le module a été programmé et testé sous OpenBSD amd64.

Je vous invite à laisser vos impressions/commentaires/insultes/rapports de bugs/patchs/demandes de fonctionnalités soit directement sur ce journal soit par Jabber : errtu@im.cybione.org (ah ben non, qu'est-ce que je raconte, je ne peux pas encore ajouter des nouveaux contacts donc je ne peux pas encore vous parler sur Jabber).

NdAMR : À la question « pourquoi ne pas avoir contribué à irssi-jabber ? » ErrTu répond :

Ça fait un petit moment que je voulais faire évoluer la prise en charge de jabber dans irssi et comme j'ai eu récemment un peu plus de temps et de motivation à y consacrer, j'ai décidé de mettre les mains dans le cambouis.

Seulement ça me paraissait impossible de contribuer à irssi-jabber pensant ne pas avoir les compétences pour. Donc j'ai commencé à bricoler dans mon coin pour comprendre comment fonctionnent les modules irssi et le protocole XMPP. Sans m'en rendre compte j'avais obtenu une bonne base et quelques heures de boulot supplémentaires ont suffit pour faire voir le jour à irssi-xmpp.

À mon niveau actuel de compréhension je pourrais contribuer sans trop de problème à irssi-jabber mais comme irssi-xmpp en est pratiquement au même stade de fonctionnalités, l'intérêt n'y est plus.

Maintenant techniquement, les deux modules sont assez différent puisque irssi-jabber intègre son propre parser XML et utilise les sockets d'irssi alors qu'irssi-xmpp se base entièrement sur loudmouth. Personnellement je trouve irssi-xmpp plus facile à maintenir car il n'intègre pas toute la brique bas niveau de communication avec le protocole XMPP.

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

irssi-xmpp 0.12

Posté par Colin D. (Jabber id, page perso, ) le 09/08/2007 à 19:55. (lien). Évalué à 8.

uh uh uh une dépêche pour présenter le module :)

Voici venir la version 0.12 : http://cybione.org/src/irssi-xmpp/irssi-xmpp-0.12.tar.gz

Au programme :
- Le support de la connexion SSL : pour en profiter, il faut rajouter "-ssl" à la commande "/connect", où "use_ssl = "yes";" dans votre section "servers" de votre fichier de conf. (pour le moment, si la connection n'abouti pas, la connection se retrouve bloquée, alors ne vous trompez pas !)
- La complétion des JID et des ressources est maintenant complète
- Si on ouvre une fenêtre de discussion avec "/query jid" sans spécifier la ressource, cela ouvrira la fenêtre avec la ressource la plus élevée du jid (s'il y en a de connecté biensûr)
- Des petites choses de modifiées dans la liste des contacts (on affiche le niveau de subscription s'il n'est pas à "both", on n'affiche plus les groupes vides, on peut changer le nom du groupe par défaut)
- Et enfin l'ajout de la variable de configuration "xmpp_default_away_mode" que l'on peut mettre à "away", "xa", "dnd" ou "chat" pour choisir le mode de disponibilité que l'on veut lorsque l'on ne le spécifie pas avec la commande /away. Par défaut elle est fixée à "away". (par exemple : "/set xmpp_default_away_mode xa", "/away plus là" équivaut à "/away xa plus là")

À venir probablement pour la prochaine version : la gestion des contacts et des groupes.

irssi-xmpp 0.13

Posté par Colin D. (Jabber id, page perso, ) le 12/08/2007 à 18:04. (lien). Évalué à 3.

Bon, je continue dans mon monologue pour vous annoncer irssi-xmpp 0.13. Cette version intègre la gestion des contacts donc à partir de maintenant le module supporte toutes les fonctionnalités de bases pour l'utiliser en tant que client jabber.

Donc au programme :
- La gestion des contacts et des autorisations
- L'option de conf "roster_add_send_subscribe" pour envoyer automatiquement une requête subscribe lorsque l'on ajoute un contact au roster.
- L'option de conf "xmpp_priority" pour spécifier la priorité de la connexion. Il faudra se reconnecter après avoir modifié cette variable.
- La commande /CONNECT vérifie correctement ses paramètres.
- Et enfin une petite modification dans les Makefiles pour que le module compile chez ceux qui n'ont pas les commandes "lorder" et "tsort".

Le fichier README contient une documentation beaucoup plus complète où pratiquement tout est décrit.

La commandes /ROSTER se voit dotée de 2 jeux de commandes. Le premier pour gérer les contacts dans la liste et l'autre pour gérer le autorisation.

Ainsi pour gérer les contacts, on a pour ajouter un contact :

/ROSTER ADD «jid»

Pour supprimer un contact (et toutes ses autorisations) :
/ROSTER REMOVE «jid»

Pour renommer un contact :
/ROSTER NAME «jid» «name»

À savoir que même si on peut spécifier un nom, il n'apparaîtra que dans la liste des contacts et si l'on souhaite faire un /QUERY sur un contact, il faut toujours passer par le JID et non par le nom.
Enfin pour changer un contact de groupe :
/ROSTER GROUP «jid» «group»


Au niveau des autorisations, on peut demander à voir la présence d'un contact avec :
/ROSTER SUBSCRIBE «jid»

Si on souhaite ne plus voir sa présence, il suffit de faire :
/ROSTER UNSUBSCRIBE «jid»

Lorsque l'on reçoit une demande d'autorisation, pour qu'un contact puisse voir votre présence, on peut accepter cette demande avec :
/ROSTER ACCEPT «jid»

Et enfin si on ne veut plus qu'un contact puisse voir votre présence ;
/ROSTER DENY «jid»


C'en est tout pour cette version 0.13. Pour la prochaine version, on devrait voir arriver la sauvegarde des sessions pour pouvoir automatiquement se reconnecter lorsqu'une connexion est rompue, la possibilité de voir les informations concernant un contact (globalement sa vCard) et quelques améliorations par ci par là. Ainsi la prochaine grosse étape sera le support des MUC.

Paquet Debian

Posté par davux (Jabber id, page perso, ) le 09/09/2007 à 16:25. (lien). Évalué à 1.

Pour info, j'ai fait un paquet Debian pour irssi-xmpp. Le paquet s'appelle irssi-plugin-xmpp, et il est présent dans Debian unstable.

Revenir en haut de page