news.lacave.net
A propos de RSS2NNTP
(version 0.5.2, du 01/08/2006)
Il s'agit d'un petit module que j'ai réalisé en ruby, qui permet de feeder des flux RSS vers un serveur news en NNTP, en mode CHECK/TAKETHIS.
Fonctionnalités
- C'est un programme léger, indépendant, pratiquement sans maintenance - la génération des message-IDs étant déterministe, cela permet de lancer le programme depuis une crontab sans se préoccuper de maitenir un cache : les articles existants sont refusés lors du CHECK,
- Comprend RSS 0.9, RSS 1.0, RSS 2.0, ATOM (grâce à la librairie feedtools),
- Les textes sont postés en texte simple grâce à un appel de programme extérieur (links, lynx),
- Chaque feed reçoit son propre groupe, que le programme peut déterminer depuis l'URL, ou qui peut être fixé par l'utilisateur.
Prérequis
- Un feed avec un serveur de news ;
- Ruby 1.8.x, sur un système unix-like (testé avec ruby 1.8.4 sous FreeBSD) ;
- L'outil feedtools pour ruby, disponible en rubygem - testé feedtools-0.2.24 à 0.2.26, activerecord-1.14.2 et 1.14.3, uuidtools-1.0.0, builder-2.0.0 ;
- HTMLTokenizer, aussi en rubygem - testé en version 1.0.
- HTMLEntities, pareil - testé en version 3.0.1.
- Les librairies IConv pour ruby.
Configuration de RSS2NNTP
Le programme a besoin d'un fichier rss2nntp.conf. Dans ce fichier, tout ce qui suit un caractère # est ignoré, et les lignes commençant par un espace ou une tabulation sont concaténées aux lignes précédentes avec un unique espace de séparation.
Les commandes de ce fichiers sont de deux types : les variables, et les feeds.
Les variables sont des mots en majuscules suivis d'un signe égal et d'une valeur. Des espaces peuvent être présents autour du signe égal. Les variables reconnues sont :
- PATH : L'élément de path initial de l'article ; par défaut 'rss2nntp' ;
- HIERARCHY : La racine après laquelle seront nommés les groupes ; par défaut 'nonexsitent.test.' - changez cela ! - doit (normalement) se finit par un point ;
- CONVERTER : La ligne de commande à lancer pour convertir le HTML en texte ; par défaut 'linx -dump -force_html -assume_charset iso-8859-15 -nolist (je conseille d'utiliser links pour ce faire, la sortie est meilleure) ;
- HOST : Le nom d'hôte pour remplir les champs NNTP-Posting-Host et X-Trace ; par défaut, ce que renvoie gethostname ;
- SERVER : Le nom du serveur vers lequel poster les articles ; par défaut, localhost ;
- ABUSE : L'adresse à mettre dans le champ X-Complaints-To ; par défaut, abuse@ gethostname sans le premier composant ;
- USESIG : Si cette variable vaut 'true' ou 'yes', les liens au bas de chaque article (vers le site principal, et vers l'article en cours) seront précédés du séparateur de signatures usenet standard (-- ) ; par défaut, true .
DEBUG, VERBOSE, POST : Trois variables booléennes destinées au debugging du programme.
Les feeds, eux, se présentent plus simplement sous la forme d'une URL, suivie éventuellement d'un ou plusieurs espaces, et du nom de groupe (sans la HIERARCHY définie plus haut).
Configuration d'INN
INN a simplement besoin d'une ligne dans le fichier incoming.conf, pour accepter les fichiers entrants.
Si RSS2NNTP est installé sur la même machine que INN, il est probable qu'un peer "ME" existe déjà.
De plus, il faut, pour bien faire, exclure l'élement de path assigné dans rss2nntp.conf des feeds sortants, pour éviter d'essayer de distribuer ces articles.
Les programmes
Il y a deux petits programmes, qui utilisent les modules présents.
Le premier, newgrouper.rb, lit le premier article de chaque feed defini, et écrit sur la sortie standard la commande ctlinnd qui permet de créer le groupe dans lequel seront rangés les articles.
Le second, feeder.rb, peut être lancé depuis la crontab ; il envoie les articles au serveur, au moyen de commandes CHECK et TAKETHIS.
Le feeder met un certain temps à télécharger les articles, il est conseillé de le lancer de manière espacée - toutes les demies-heures, par exemple.
Téléchargement
- rss2nntp-0.5.2.tar.gz : La distribution complète ;
- INSTALL : Quelques explications pour l'installation (en anglais) ;
- README : Cette page, en format texte ;
- Changelog : Les derniers changement dans le logiciel ;
- netnntp.rb : Mon ébauche de module Net::NNTP pour ruby, orienté feeds ;
- rss2nntp.rb : L'intelligence du système, qui transforme un objet FeedTools::FeedItem en objet NNTP::Article ;
- newgrouper.rb : Pour générer les ctlinnd newgroups.
- feeder.rb : Pour poster les articles.
- rss2nntp.conf : La configuration.
Retour à la page des news - Retour au sommaire