Depuis déjà quelques versions Movim permet la création, l'administration et la publication sur des flux Publish-Suscribes via la fonctionnalité Groupes. Ce petit tutoriel va vous permettre de récupérer les articles de vos flux RSS et Atom préférés pour les injecter dans des groupes qui seront créés automatiquement par le module en question.

Toute la configuration se fera sur le merveilleux serveur XMPP Metronome, fork de Prosody qui possède une implémentation exemplaire de Pubsub.

Mise en place des fichiers nécessaires

L'élément central sera surement le module en question qui sera à glisser dans le dossier des modules du serveur Metronome. Sur ma distribution (Debian) il est dans

# cat /usr/local/lib/metronome/modules/mod_pubsub_feeds.lua

Vous pouvez télécharger ce fichier sur ici : Module Pubsub Feeds. C'est une version modifiée du même module pour Prosody corrigée pour Metronome par le développeur du serveur (Maranda).

Il vous faut ensuite récupérer l'ensemble des dépendances nécessaires au bon fonctionnement du module. Ces fichiers se trouvent sur le dépot d'une des personnes avant travaillé sur le module original (pour Prosody donc) : code.matthewwild.co.uk/lua-feeds. Il vous faut ici télécharger la version brute du fichier du dépot et la placer dans le dossier de référence de Lua sur votre distribution. Pour ma part tout s'est fait dans le dossier

# cd /usr/share/lua/5.1/

J'ai donc directement récupéré les fichiers en question dans le dossier :

# wget http://code.matthewwild.co.uk/lua-feeds/raw-file/4afd0e6206b2/feeds.lua
# wget http://code.matthewwild.co.uk/lua-feeds/raw-file/4afd0e6206b2/stanza.lua
# wget http://code.matthewwild.co.uk/lua-feeds/raw-file/4afd0e6206b2/xmlstream.lua

Une fois tout les éléments en place nous pouvons passer à la configuration du serveur.

Configuration du module

La configuration générale est expliquée ici : code.google.com/p/prosody-modules. L'idée étant de compléter la partie de la configuration du module Pubsub (mod_pubsub) du serveur en lui rattachant le module Pubsub Feeds (mod_pubsub_feeds). Tout se fait en quelques lignes.

Component "pubsub.example.com" "pubsub"
    modules_enabled = { "pubsub_feeds" }
   
    feeds = {
                        planet_jabber = "http://planet.jabber.org/atom.xml";
                        prosody_blog = "http://blog.prosody.im/feed/atom.xml";
                  }

Ensuite nous allons simplement lister les flux Atom ou RSS qui nous intéressent, au chargement du module le serveur créera automatiquement les nœuds Pubsub liés, la clef de la liste associative fait ici office d'identifiant pour le nœud Pubsub du serveur. Dans mon cas j'ai par exemple :

Component "pubsub.movim.eu" "pubsub"
    name = "Movim Publish/Subscribe"
    modules_enabled = { "pubsub_feeds" }
    feeds = {
               Numerama = "http://www.numerama.com/rss/news.rss";
               BouletCorp = "http://www.bouletcorp.com/feed/atom/";
               JournalDuGeek = "http://feeds2.feedburner.com/LeJournalDuGeek";
               ...
               }
    use_pubsubhubub = false

Vous trouverez donc le flux du Journal Du Geek dans Movim dans une adresse ressemblant à celle-ci : http://example.com/node/pubsub.movim.eu/JournalDuGeek.

N'oubliez pas de déclarer vos flux persistants dans la configuration du nœud (http://example.com/nodeconfig/pubsub.movim.eu/JournalDuGeek dans notre cas) afin de le rendre persistant et ainsi conserver les souscriptions existantes en cas de reboot ou crash du serveur.

Amusez-vous bien :)