Le besoin

Comme shingara, j'utilise weechat pour IRC et il nous manquait un plugin pour être notifié sur notre jabber à la réception d'un PV ou lors d'un highlight sur un channel.
Le but est de recevoir un message sur sa messagerie instantanée avec le nom de l'expéditeur et le contenu du message lorsque quelqu'un nous interpelle sur IRC.
Je me suis donc motivé pour écrire ce plugin in en me basant sur ses travaux en amont.

Qu'est ce qui change ?

Je suis donc parti de la révision 204 de son script (euh en fait y a d'autres choses dans le dépôt hein, vas faire un tour !) , basée sur celui de davux (c'est beau le libre hein ?), qui apparemment avait tendance à faire freezer weechat.

Au lieu d'utiliser xmpp4r j'utilise xmpp4r-simple qui est une lib plus légère et largement suffisante pour nos petits besoins.
Je pense avoir cerné ce qui potentiellement faisait planter weechat.
En effet lorsqu'on tente d'envoyer un message via XMPP, et que l'on ferme la connexion instantanément après, le message est non seulement perdu, et n'arrive donc jamais, mais a (semble t-il, je n'ai pas de certitudes) tendance à geler weechat.

Le script attend donc maintenant 3 secondes avant de fermer la connexion. D'une manière générale j'ai essayé d'améliorer la lisibilité et les perfs du script.
Au lieu d'instancier systématiquement un objet pour délivrer un message je passe par un singleton qui délivrera tous les messages pendant la durée de vie de weechat.

En terme de configuration il ne faut plus que le strict minimum : un couple jid / password qui désigne le compter jabber à utiliser pour envoyer les messages et un destinataire.
Il est possible de spécifier le port de connexion s'il est particulier, autrement le script utilise le port 5222.

Attention : Je n'ai pas testé mais il me semble logique qu'il ne faut pas utiliser le jid comme recipient, autrement le script risque de s'envoyer des messages à lui même.
En effet lorsque l'on utilise jabber c'est le dernier endroit depuis lequel on se connecte qui prend la main.

Au cas où ton compte destinataire ne serait pas connecté, les messages seront mis en file et tu les recevras à ta prochaine connexion.

Comment ça marche ?

L'usage est vraiment simple : il suffit de copier ce plugin dans ton .weechat/ruby/autoload et le plugin sera chargé au lancement de weechat. Ensuite tu édites ton fichier .weechat/plugins.rc et tu colles les informations te correspondant :

ruby.highlight_jabber_notify.jid = "jid@provider.tld"
ruby.highlight_jabber_notify.password = "toto42" # c'est pas ça ?
ruby.highlight_jabber_notify.port = "5222" # optionnel
ruby.highlight_jabber_notify.recipient = "recipient@provider.tld"

C'est tout. Le script est volontairement minimaliste mais on peut imaginer plus de configuration et de code pour n'être notifié que sur certains channels etc ...
J'ai aussi proposé ce script dans la section officielle du projet weechat (il est en attente d'approbation a été approuvé \o/).