Page suivante Page précédente Table des matières
8. Annexe 1 : Utilisation de ctlinnd
Il n'est pas question, ici, de détailler tout ce que peut faire le programme
ctlinnd, qui, comme son nom l'indique, sert à contrôler le fonctionnement du serveurinnd. Nous nous en tiendrons à notre optique simplificatrice : vérification du bon fonctionnement et expiration des articles. Le lecteur intéressé pourra consulter la page du manuelctlinnd(8). Pensez à vous mettre sous le comptenews, notamment si l'utilisation dectlinnddoit modifier ne serait-ce qu'un fichier de configuration d'inn: si vous étiez sousroot, la commande fonctionnerait, mais les fichiers modifiés deviendraient alors la propriété derootce qui provoquerait un arrêt d'INN.
8.1 Vérification du fonctionnement d'INN
ctlinnd mode
L'argument « mode » de la commande
ctlinndoffre une sorte de tableau de bord de l'état du serveur en fonctionnement.Invoquer
ctlinnd mode, qui produira si tout va bien un message commençant par :
Server running Allowing remote connectionsSi ce n'est pas le cas, utiliser
inncheck(voir ci-après) afin de corriger les fichiers de configuration, puis relancer le serveur.ctlinnd checkfile
La commande
ctlinnd checkfilevérifie la syntaxe du fichiernewsfeeds(opération qu'il faut mieux faire avant de recharger ce fichier en mémoire à la suite de l'ajout d'un nouveau feed). Normalement, cela doit vous répondre «Ok»Pour recharger
newsfeedsen mémoire, exécutez la commandectlinnd reload newsfeeds "rechargement du fichier newsfeeds"8.2 Modification du fichier active
Ajout et retrait de groupes
Comme nous le disions plus haut, il ne faut pas modifier manuellement le fichier
active. À la place, on utilisera la commandepour ajouter le forum non modéré ouctlinnd newgroup nom_du_forumpour ajouter le forum modéré.ctlinnd newgroup nom_du_forum mPour supprimer une entrée du fichier
activeon utilisera la commandectlinnd rmgroup nom_du_forumAttention : La manipulation du fichier
activenécessite de stopper au préalable l'activité du serveur de news :ctlinnd pause "modification du fichier active"Les modifications terminées, on peut vérifier la cohérence de la configuration avec la commande
incheck(voir plus bas).Si la vérification s'est bien passée, il reste à demander au serveur de reprendre son rôle après avoir rechargé le fichier
activeen mémoire :
ctlinnd reload active "rechargement du fichier active" ctlinnd go "modification du fichier active"Attention : Le message associé à
ctlinnd godoit être le même que celui dectlinnd pause...
ctlinndpeut faire encore beaucoup d'autres choses, reportez vous aux liens cités en fin de ce document pour en apprendre plus. Pour nous, ça suffit...Mise à jour du fichier active à l'aide d'un « docheckgroups »
La méthode décrite plus haut convient pour l'ajout où le retrait occasionnel de quelques groupes (par exemple, lors de la création ou la suppression de forums dans une hiérarchie). Lorsque vous aurez pratiqué pendant quelque temps Usenet, vous vous apercevrez que votre configuration est incomplète : souvent, lorrsqu'on répond à un article posté dans un groupe A, on souhaite faire suivre la discussion dans un groupe B car l'on estime que ce dernier est plus approprié pour traiter de ce sujet. Par exemple, on peut répondre à un article posté dans
fr.comp.os.linuxtraitant d'un problème de programmation Perl et vouloir détourner la suite de la discussion vers le groupefr.comp.lang.perl, consacré à ce langage. Cette pratique à plusieurs avantages et devrait être employée systématiquement :
- elle détourne d'un groupe un fil de discussion qui n'a rien à y faire et allège donc la pollution de ce groupe ;
- elle replace cette discussion dans un contexte mieux adapté et donc mieux susceptible de fournir des réponses adéquates.
Cette possibilité est offerte par tous les lecteurs de news et s'appelle « faire un Follow Up To » (à ne pas confondre avec le terme « Follow Up » qui, pour certains logiciels, signifie simplement « répondre à cet article dans ce même groupe »). Ce qui est important ici c'est le « To » qui indique bien que l'on fait suivre ailleurs : un champ
Followup-To: fr.toto.titiinvitera l'auteur d'une réponse à votre article à publier celle-ci dans le forumfr.toto.titi. Une utilisation intéressante est leFollowup-To: junkqui empêchera, normalement, que votre article soit le point de départ d'un fil de discussion (cela dit, certains indélicats peuvent très bien choisir de ne pas honrer Usenet aimant bien les abbréviations, vous verrez souvant le terme Fu2...Mais, pour faire un fu2 vers un groupe donné, il faut que ce groupe soit dans notre fichier active et, à priori, nous ne sommes pas abonnés à tous les groupes existants... Si vous vous posez cette question, c'est que vous n'avez pas compris le rôle du fichier
active: celui-ci n'a rien à voir avec les notions d'abonnement aux groupes, il indique simplement les forums que connaît votre serveur (et accessoirement, le nombre d'articles de chaque groupe présent sur le serveur pour ceux auxquels vous êtes abonnés voir plus haut).Afin de résoudre ce problème, il faut donc simplement faire en sorte que notre fichier
activecontienne tous les groupes (en tous cas, tous les groupes auxquels nous sommes abonnés et tous ceux vers lesquels nous sommes susceptibles de faire suivre). Par exemple, il est souhaitable que notre serveur connaisse au moins tous les groupes de la hiérarchiefr... Or celle-ci compte plus de 180 forums !Certains FAI mettent à disposition leurs fichiers
activeetnewsgroups: il suffit alors de les télécharger. Mais attention : le fichieractiveainsi récupéré reflète l'état du serveur de votre FAI, pas celui du vôtre ! Ceci signifie que les numéros d'articles qui s'y trouvent ne correspondent pas aux numéros d'article sur votre serveur...Heureusement, la distribution d'INN offre un outil permettant d'automatiser ce processus : il s'agit du script
/usr/lib/news/bin/control/docheckgroups. De plus, le forumfr.usenet.forums.annoncesposte régulièrement un fichier au format adéquat qu'il nous suffira de traiter de la façon suivante :
Voilà, vous avez un fichier
- Nous supposons que vous avez sauvegardé dans un fichier le contenu de l'article en question. À titre d'exemple, voici les premières lignes du dernier :
Après avoir sauvegardé ce fichier, éditez-le pour supprimer tout ce qui précède la ligneFrom: fufa@teaser.fr (Comite de moderation de fr.usenet.forums.annonces) Subject: Liste des groupes fr.* (format checkgroups) Newsgroups: fr.usenet.forums.annonces,fr.usenet.forums.evolution,fr.usenet.distribution,fr.usenet.reponses Followup-To: fr.usenet.distribution Date: 15 May 1998 19:45:43 GMT (je saute les autres en-têtes...) Posted-By: auto-faq 3.2.1.4 Archive-name: fr/liste-groupes Author: fufa@teaser.fr Periodicite: tous les 15 jours Version: 1.2, 15 Mai 1998 Si votre site transporte la totalité des groupes "fr" alors chacun des groupes listés ci-dessous devrait s'y trouver. Vous pouvez passer le script ci-dessous à votre checkgroups afin de vérifier si tous les groupes existent et ont le bon statut. Le script ci-dessous est à utiliser avec INN en ayant les privilèges de l'utilisateur gérant les news (en général news ou usenet). Un message de contrôle "checkgroups" est posté périodiquement et est traité par votre logiciel de news s'il a été configuré ainsi. Veuillez également vous reporter à la « Table des Forums FR » postée dans fr.bienvenue par Philippe Ladame pour plus d'information sur le contenu de chaque groupe. ---------- snip ---------- snip ---------- snip ---------- snip ---------- /usr/local/news/bin/control/docheckgroups <<PASGLOP fr.announce.divers Annonces diverses (pas petites annonces). (Moderated) fr.announce.important Annonces importantes concernant fr. (Moderated) fr.announce.newgroups Annonces de nouveaux groupes / discussions. (Moderated) fr.announce.seminaires Annonces de conferences et seminaires. (Moderated) fr.bienvenue Aider les nouveaux venus dans leurs premiers pas sur Usenet. (Moderated) fr.bienvenue.questions Les premieres questions sur Usenet (Ou, Comment). .../usr/local/news/bin/control/docheckgroups <<PASGLOP, modifiez éventuellement le chemin dedocheckgroupspour qu'il corresponde à votre système (chez moi, c'est/usr/lib/news/bin/control/docheckgroups) et sauvez-le sous le nom/tmp/fufa- Sous le compte
news, arrêtez votre serveur à l'aide d'une commandectlinnd pause 'maj'et lancez la commande :Ceci va vous créer le fichiersh /tmp/fufa > /tmp/maj-active/tmp/maj-activeque vous allez éditer pour vérifier que tout est correct.- Ce fichier contient d'abord un ensemble de lignes en commentaires indiquant les groupes qui manquent à votre fichier
active(la première fois, il risque d'y en avoir beaucoup...). À la suite de ces commentaires, vous trouverez un ensemble de lignesctlinnd newgroup ...qui se chargeront d'ajouter les groupes à votre fichieractive. Parcourez-les pour vérifier que tout est correct (faites notamment attention au statut de groupe non modéré/modéré). Vous trouverez à la fin de ce fichier les descriptions qu'il faut ajouter à votre fichier/var/lib/news/newsgroups(ce n'est pas fait automatiquement : n'ajoutez que les descriptions des groupes auxquels vous êtes abonnés).- Lancez les commandes suivantes :
La première commande est une précaution au cas où les choses tourneraient mal...cp /var/lib/news/active /var/lib/news/active.save sh /tmp/maj-active- Forcez le rechargement du fichier
activevia une commandectlinnd reload all 'ok'(éventuellement, faites une vérification viainncheck -a -v -pedantic) et relancez le serveur par la commandectlinnd go 'maj'activecontenant toute la hiérarchiefrainsi que tous les groupes que vous y aviez déjà mis. Supprimez les fichiers que vous avez créés dans/tmpet le fichier/var/lib/news/active.saveAttention : ne vous connectez surtout pas tout de suite si votre script de récupération des articles utilise l'option
-Adesuck!!! Vous lanceriez la récupération de tous les articles disponibles de tous les groupes que vous venez d'ajouter ! Assurez-vous de supprimer cette option de votre script.Mise à jour du fichier active à l'aide du programme « getlist »
La méthode précédente nécessite de disposer de fichiers au format
docheckgroups, elle est relativement automatique et peut se faire hors connexion. Une autre méthode, plus exhaustive, consiste à récupérer les informations directement auprès de son fournisseur d'accès à l'aide du programmegetlist, fourni avec la distribution INN (getlist(1)). Un des désavantages majeurs de cette méthode est, bien sûr, qu'elle implique une connexion qui peut être très longue (mais cette opération ne doit être faite qu'une fois).Le programme
getlist, livré avec INN (parfois placé dans/usr/lib/news/bin/) permet de récupérer certains fichiers de configuration exploités par un serveur distant. Notamment,activeetnewsgroups.Voici, par exemple, comment créer un fichier contenant une copie de l'
activedu serveur de news de notre fournisseur d'accès :
getlist -h news.fai.fr active > active_newOn peut aussi préciser, après le mot-clé désignant le fichier à récupérer, un filtre de sélection :
getlist -h news.fai.fr active 'fr.*' > active_fr_newAttention : Ne remplacez surtout pas votre
activelocal directement par le fichier ainsi engendré, car celui-ci contient les numéros des articles gérés par le serveur distant. Par contre, en étant sous le comptenews, vous pouvez remplacer directement votre fichiernewsgroupspar la commande :
getlist -h news.fai.fr newsgroups > /var/lib/news/newsgroups(mieux vaut au préalable stopper le serveur).
Pour mettre à jour notre fichier
active, nous allons utiliser la « méthode du polytechnicien » et donc créer un fichier qui pourra ensuite être traité pardocheckgroups.Pour ce faire, on exécutera les commandes suivantes :
echo "/usr/lib/news/bin/control/docheckgroups <<PASGLOP" >/tmp/active_check cut -f1,4 -d' ' active_new | /tmp/check.pl >>/tmp/active_check echo "PASGLOP" >>/tmp/active_checkoù /tmp/check.pl est le script Perl suivant (faites un
chmod +xpour le rendre exécutable) :
#!/usr/bin/perl while (<STDIN>) { (s/^(.*) y$/$1/) || (s/^(.*) m$/$1 \. \(Moderated\)/); print $_; }Le fichier
/tmp/active_check/ainsi créé va permettre àdocheckgroupsde comparer notre fichieractiveavec la liste des groupes du fichier de notre FAI. Pour ce faire, il suffit, sous le compte news de lancer la commande :
sh /tmp/active_check > /tmp/active_2_vrfyAttention, cette commande risque d'être plutôt longue : chez moi, elle a pris plus d'un quart d'heure (il faut dire que l'active de mon fournisseur comportait 22765 entrées...). Un
ps axvous confirmera que la commande continue de s'exécuter.Lorsque cette commande est terminée, éditez le fichier
/tmp/active_2_vrfyqui a été créé : il doit contenir un certain nombre de commandes de création de groupes. Supprimez celles qui ne vous intéressent pas, vérifiez les autres (les commandes de suppression de groupes ou de changement de statut de modération). Stoppez votre serveur et lancez la commande (toujours sous le comptenews) :
cp /var/lib/news/active /var/lib/news/active.save sh /tmp/active_2_vrfyReportez vous à la section précédente pour le rechargement du fichier active et le redémarrage du serveur.
Remarque : Avec un fichier
activeconséquent, et si votre logiciel de lecture dispose de cette option, il peut être nécessaire de le configurer afin qu'il ne relise pas systématiquement le fichieractiveà chaque démarrage...
Page suivante Page précédente Table des matières