Startseite : "Dachboden" : Checkbot : Funktion

Funktionsbeschreibung

Hinweis: Diese Beschreibung bezieht sich auf V 1.2.02 BETA des Checkbots. Der Checkbot wird nicht mehr weiterentwickelt, ein Einsatz kann nicht mehr empfohlen werden.

Der Ablauf in der Übersicht

Wenn der "Article Checker" gestartet wird, verbindet er sich mit dem in der Konfigurationsdatei eingestellten Newsserver und authentifiziert sich ggf. mit Benutzername und Paßwort. Danach holt er sich den aktuellen Zählerstand der ersten in der Konfigurationsdatei genannten Newsgroup, vergleicht diesen mit dem gespeicherten letzten Stand und liest - wenn neue Postings vorliegen - jedes Posting der Reihe nach ein.

Wenn entweder

wird das Posting auf formale Fehler geprüft und ggf. eine Antwort generiert. Diese erscheint als Followup auf das geprüfte Posting, aber nur in der Testgruppe, nicht als Crosspost. Die Antwort kann auf einem anderen Server als dem, von dem der Bot liest, gepostet werden. Dabei gilt: "check" (oder das entsprechende Schlüsselwort lt. .ini-Datei) führt immer zu einer Prüfung, auch wenn "ignore" etc. (oder das entsprechende Schlüsselwort lt. .ini-Datei) dabeisteht. Eine Antwort kann aber immer (auch trotz "check") dadurch unterdrückt werden, daß "ignore" etc. (oder das entsprechende Schlüsselwort lt. .ini-Datei) in den Header "Keywords" eingetragen wird.

Soweit direkt hinter dem Schlüsselwort "verbose" steht, fügt der Bot einen Auszug aus dem Logfile (bzw. von seiner Ausgabe auf STDOUT) an.

Wenn die erste Newsgroup komplett geprüft ist, schreibt das Programm den neuen Stand des jeweiligen Artikelzählers in die .ini-Datei und setzt die Prozedur mit der nächsten Gruppe fort. Danach beendet es sich.

Der Start kann durch das Anlegen einer Sperrdatei verhindert werden, so daß für kurzzeitige Pausen keine Änderungen an cronjobs oder Taskplanern vorgenommen werden müssen.

Alternativ kann der Bot ab V 1.2.02 BETA auch von einem INN direkt befeedet werden. Bisher wird dabei allerdings nur traditional spool unterstützt. (Bislang experimentiell.)

Was überprüft der Checkbot?

Der Checkbot kann auch in einem "pedantic"-Modus gestartet werden, in dem er alle genannten Probleme immer, also auch ohne Aufforderung via "check", moniert. Genauso können einzelne Überprüfungen abgeschaltet werden.

Konfigurationsdateien

Der Checkbot benötigt zwei Konfigurationsdateien: die .ini-Datei und die .rc-Datei. Erstere enthält Konfigurationseinstellungen, letztere die Textbausteine, aus der die Antwortpostings zusammengesetzt werden. Außerdem können noch zwei weitere Dateien angelegt werden: die Sperrdatei .disabled und das Killfile .kill.

.ini-Datei

Die einzelnen Parameter stehen jeweils in einer eigenen Zeile. Der Aufbau ist folgender:

Parametername = Parameterwert
[...weitere Name-Wert.Paare...]
checkgroups:
news.gruppe y/n
[...weitere Gruppen...]

Gültige Parameter sind:

  1. reader: Der Newsserver, von dem die zu checkenden Postings geladen werden, ggf. gefolgt von einem Komma und dem anzusprechenden Port. Dieser Eintrag (zumindest der Servername) ist zwingend.
  2. reader_user: Der dafür ggf. erforderliche Benutzername. Fehlt dieser Eintrag, wird keine Authentifikation vorgenommen.
  3. reader_pass: Das Paßwort zu dem Benutzernamen.
  4. post_server: Der Newsserver, auf dem die Antworten des Bots gepostet werden sollen, ggf. gefolgt von einem Komma und dem anzusprechenden Port. Fehlt dieser Eintrag, wird der unter reader angegebene Server verwendet.
  5. poster_user: Wie oben.
  6. poster_pass: Wie oben.
  7. trigger_check: Der Begriff oder die Begriffe, der/die den Checkbot zum Checken bewegen soll(en), wenn er ihn (oder einen von ihnen) im Subject: oder der ersten Zeile des Bodies findet - als "Regular Expression". Standardmäßig (wenn dieser Eintrag fehlt) ist das "check" - egal, ob alleine stehend oder Teil eines Wortes.
  8. trigger_ignore: Der Begriff oder die Begriffe, der/die den Checkbot im Autocheckmodus vom Checken abhalten soll(en), wenn er ihn (oder einen von ihnen) im Subject: oder der ersten Zeile des Bodies findet - als "Regular Expression". Standardmäßig (wenn dieser Eintrag fehlt) sind das "ignore", "no reply" (mit und ohne Leerzeichen), "noreplies" (mit und ohne Leerzeichen) sowie "nocheck" (in einem Wort).
  9. rcfile: Der Dateiname der .rc-Datei. Falls der Eintrag fehlt, wird der Name der .ini-Datei angenommen.
  10. killfile: Der Dateiname der .kill-Datei. Falls der Eintrag fehlt, wird der Name der .ini-Datei angenommen.

Parametername und -wert werden durch ein "=" getrennt. Zwischen den Parametern dürfen Kommentarzeilen stehen; diese düfen aber kein "=" enthalten! Auf die Parameter muß das Schlüsselwort checkgroups: (mit dem Doppelpunkt) auf einer eigenen Zeile folgen.

Alle weiteren Zeilen enthalten jeweils den Namen einer zu checkenden Newsgroup, ein (!) Leerzeichen, "y" oder "n", um den Autocheck-Modus für diese Gruppe ein- ("y") oder auszuschalten ("n"), ein (!) Leerzeichen und danach den aktuellen Stand des Artikelzählers für die betreffenden Gruppe, den der Checkbot selbständig aktualisiert. Bei der Ergänzung neuer Gruppen kann man den Zähler sowohl eintragen (wenn man einen passenden Wert kennt) wie auch weglassen. Kommentare o.ä. sind nach dem Schlüsselwort checkgroups: nicht mehr zulässig.

Auch im Feeding-Modus werden nur Postings in die Gruppen geprüft, die hier genannt werden; auch die Einstellungen für den Autocheck-Modus werden übernommen. Bei Crossposts in mehrere zu checkende Gruppen gilt die niedrigste Einstellung, im Zweifelsfall also ein abgeschalteter Autocheck-Modus.

.rc-Datei

In dieser Datei sind die Textbausteine enthalten, derer sich der Checknot bei der Generierung einer Antwort bedient, einschließlich der Headerzeilen. Sie lassen sich den eigenen Bedürfnissen anpassen.

Die einzelnen Textbausteine sind folgendermaßen aufgebaut:

[name]
;
Textbausteintext
;

Zu achten ist auf einen korrekten Zeilenumbruch im Textbausteintext. Das Löschen eines Textbausteins führt dazu, daß die entsprechenden Checkroutinen nicht mehr durchgeführt werden (d.h., genau genommen: sie werden durchgeführt, ein eventuell positives Ergebnis aber vor dem Posten der Antwort verworfen). Nicht gelöscht werden dürfen die Abschnitte [head] [header] [header-auto] [footer] [intro] [allok] [nr].

Es können seit Build 00061301 BETA auch spezielle newsreaderspezifische Textbausteine definiert werden. Diese bestehen dann aus dem Namen des Textbausteins, einem Bindestrich und der Newsreaderkennung, bspw.

[sigdel-oe]
;
Textbausteintext
;

Diese werden dann direkt nach dem allgemeinen Textbaustein ausgegeben. Für nähere Hinweise bzgl. der erkannten Newsreader und der zugehörigen Kürzel vgl. die .readme-Datei sowie sample.ini.

Es können seit Build 00080901 BETA auch Variablen verwendet werden. Diese werden dann automatisch mit dem entsprechenden Wert ersetzt. Zur Verfügung stehen alle Headerzeilen des gecheckten Postings als $header{'headername'} und nach Dekodierung von quoted/printable und Base64 als $header_decoded{'headername'} sowie ab Build 00082501 BETA der Localpart ($frlocpart/$rplocpart) und der Domainpart der Adresse im From: ($frdompart) sowie im Reply-To: ($rpdomain) und der (zuletzt) erkannte falsche Signaturtrenner ($wrongsig) zur Verfügung. Vgl. dazu auch die beigefügte sample.rc.

.disabled-Datei

Wenn eine solche Datei existiert, wird das Programm sofort ohne weitere Ausgabe beendet. Vorgesehen ist dieser Mechanismus, um den Checkbot (oder eine Inkarnation desselben) ohne die Notwendigkeit von Änderungen an cronjobs oder Taskplaner-Einträgen kurzzeitig zu dekativieren.

Eine Datei namens "artchk.pl.disabled" deaktiviert den Bot ganz, mit dem Namen "<inidatei>.disabled" nur den Lauf mit Aufruf der entsprechenden .ini-Datei.

.kill-Datei

In dieser Datei finden sich Einträge, um bestimmte Postings von der automatischen Prüfung auszunehmen.

Die einzelnen Einträge sind folgendermaßen aufgebaut:

headername = regular expression # Kommentar
# noch ein Kommentar

Dabei bedeutet headername den Namen einer Headerzeile (einer Kopfzeile), deren Inhalt mit der als regular expression angegeben "Regular Expression" verglichen wird. Wenn der reguläre Ausdruck bei einem Posting auf den Inhalt der entsprechenden Headerzeile paßt, wird das betreffende Posting nicht automatisch geprüft. Kommentare können als eigene Zeilen oder auch in einer anderen Zeile, aber imm mit "#" beginnend, eingefügt werden. Text zwischen "#" und dem Zeilenende wird ignoriert.

Das Killfile hat keine Wirkung bei einer durch "check" im Subject (Betreff) ausgelösten Prüfung.

Parameter beim Aufruf

Die Aufrufsyntax für den Checkbot ist

artchk.pl -v(vvv) -ppath -nname -lname --log

-v mit einem bis vier "v"s spezifiziert den Debug-Level für die Ausgabe. Je höher die Anzahl der "v"s, desto umfangreicher die Ausgabe. Die Option kann weggelassen werden; Voreinstellung ist "0".

-p path muß eine gültige (am besten absolute) Pfadangabe sein. Dieser Pfad wird den Dateinamen (-n) der Konfigurationsdateien vorangestellt. Die Option kann weggelassen werden; Voreinstellung ist ein leerer Pfad.

-n name muß der Dateiname der Konfigurationsdateien sein. Er wird um den Pfad (-p) ergänzt. Die Option kann weggelassen werden; Voreinstellung ist der Name des Checkbots einschließlich Extension, also im allgemeinen "artchk.pl".

-l name muß der Dateiname eines Logfiles sein. Er wird um den Pfad (-p) ergänzt. Die Option kann weggelassen werden; Voreinstellung ist die Angabe bei -n mit angehängtem ".log".

--log startet das Logging und schreibt wichtige Meldungen sowie das Ergebnis der Prüfroutinen ("check verbose" - Debug-Level 4) für jedes Posting mit der jeweiligen Message-ID in das Logfile, auch wenn die Prüfung nicht zu einem Antwortposting (Followup) führt.

--feedmode startet den Checkbot im Feeding-Modus. In dieser Betriebsart erwartet er auf STDIN die Übergabe des Pfades zum jeweils zu checkenden Posting; alle Bildschirmausgaben sind unterdrückt, das Aktivieren des Loggings ist empfohlen. Das Script bleibt in einer Schleife, bis die Eingabe auf STDIN beendet wird. Dieser Modus ist vorgesehen, um den Checkbot direkt aus einem INN heraus zu befeeden; vgl. dazu die Erläuterungen auf der Installationsseite.

--pedantic sorgt dafür, daß auch im Autocheck-Modus alle Probleme gemeldet werden.

Debug-Level

Mit der Einstellung des Debug-Levels kann die Ausgabe des Checkbots auf der Standardausgabe (STDOUT) beeinflußt werden. Je höher die Zahl, desto umfangreicher die Ausgabe.

Debug-Level ...bedeutet ...
0 Keine Statusmeldungen; nur Programmstart und -ende sowie Fehler. Standardeinstellung.
1 Zusätzlich Ausgabe der Konfiguration sowie des Status jeder neu zu checkenden Gruppe.
2 Zusätzlich Ausgabe eines laufenden Zählers ("Geprüft wird Posting xxxx, noch xxxx stehen aus."), Ausgabe der Message-ID jedes Postings, das beantwortet wird.
3 Zusätzlich Angabe der Serverantworten (NNTP-Statuscodes).
4 Zusätzlich Ausgabe einer umfangreichen Statusinformation bei jedem beantworteten Posting, der sich entnehmen läßt, warum geprüft wird und welche Punkte (teilweise auch warum) moniert wurden.