Discussion:
Eigenen Channel schreiben fuer INN2?
(zu alt für eine Antwort)
Sebastian Suchanek
2017-01-04 18:30:25 UTC
Permalink
Hallo NG!

Vor einiger Zeit hatte ich hierzugroup nach Monitoring-Lösungen
für INN gefragt[1]. Da ich damals nicht fündig geworden bin,
wollte ich nun eben selbst versuchen, mir etwas passendes zu
schreiben. Mein Plan dazu ist/war, ein Programm zu schreiben,
das sich als Channel bzw. Newsfeed in INN2 einklinkt und alle
für mich interessanten Daten zu durchlaufenden Postings
mitloggt.

Um überhaupt erstmal einen Anfang zu finden, habe ich mir
zunächst ein Perl-"Miniprogramm" geschrieben, das nichts weiter
tut als alles, was per STDIN vorgworfen bekommt, an eine
bestehende Datei anhängt.

,------------------
| #!/usr/bin/perl
|
| use strict;
| use warnings;
| use POSIX qw(strftime);
|
| my $filename = '/tmp/perltest.txt';
| my $current_time;
|
| open(my $fh, '>>', $filename) or die "Could not open file
| '$filename'";
|
| while(my $line = <>) {
| $current_time = strftime("%F %T", localtime);
| print $fh "$current_time $line";
| }
|
| close $fh;
'------------------


In der /etc/news/newsfeeds habe ich das wie folgt eingetragen:

| [...]
| sist!:*:Tc,Wm\
| :/usr/local/bin/test.pl
| [...]

Das Problem dabei: Die Msg-IDs werden zwar den Newsfeed
übergeben (zu sehen in /var/log/news/news), werden aber nicht
bzw. nicht zeitnah vom Perl-Programm verarbeitet. Erst wenn ich
INN beende, werden die Daten geschrieben.
Eine Änderung des Newsfeed-Typs von "Tc" nach "Tp" hat dazu
geführt, dass laut /var/log/news/news die Daten immer noch aber
den Newsfeed weitergereicht werden, das Perl-Programm aber gar
nichts mehr schreibt.

Wie kann ich also INN bzw. mein eigenes Programm dazu bringen,
die einlaufenden Daten auch wirklich zeitnah zu verarbeiten?


TIA,

Sebastian

_____
[1] <***@msgid.suchanek.de>
Sven Hartge
2017-01-04 19:46:09 UTC
Permalink
Post by Sebastian Suchanek
| [...]
| sist!:*:Tc,Wm\
| :/usr/local/bin/test.pl
| [...]
Ich habe bei mir diverse Channel so definiert:

can!:*:Tc,Ap,WnstH:/usr/lib/news/cancelwatch/cancelwatch
ninp!:*:Tc,WP:/usr/lib/news/bin/ginpaths2
arc!:!*,de.alt.netdigest,de.admin.news.announce:Tc,Wn:/usr/lib/news/bin/archive -f -i /var/spool/news/archive/INDEX
autoresponder!:!*,*.test:Tp:/usr/lib/news/autoresponder/autoresponder %s

Wie man sieht, ist nur der Autoresponder vom Typ "P"rogramm, der Rest
ist alles "C"hannel.


--
Sigmentation fault. Core dumped.
Dennis Preiser
2017-01-04 19:52:28 UTC
Permalink
Post by Sebastian Suchanek
Das Problem dabei: Die Msg-IDs werden zwar den Newsfeed
übergeben (zu sehen in /var/log/news/news), werden aber nicht
bzw. nicht zeitnah vom Perl-Programm verarbeitet. Erst wenn ich
INN beende, werden die Daten geschrieben.
Wie kann ich also INN bzw. mein eigenes Programm dazu bringen,
die einlaufenden Daten auch wirklich zeitnah zu verarbeiten?
Evtl. hilft schon etwas von hier:

<http://perldoc.perl.org/perlfaq5.html#How-do-I-flush%2funbuffer-an-output-filehandle%3f-Why-must-I-do-this%3f>

Dennis
Sebastian Suchanek
2017-01-07 19:36:27 UTC
Permalink
Post by Sebastian Suchanek
Das Problem dabei: Die Msg-IDs werden zwar den Newsfeed
übergeben (zu sehen in /var/log/news/news), werden aber
nicht bzw. nicht zeitnah vom Perl-Programm verarbeitet.
Erst wenn ich INN beende, werden die Daten geschrieben.
Wie kann ich also INN bzw. mein eigenes Programm dazu
bringen, die einlaufenden Daten auch wirklich zeitnah zu
verarbeiten?
[...]
Danke, das scheint in der Tat geholfen zu haben.

Jetzt geht's erstmal ans Weiterbasteln. Sobald ich 'was halbwegs
Vorzeigbares fertig habe, melde ich mich wieder. :-)


Tschüs,

Sebastian
Holger Marzen
2017-01-08 09:07:16 UTC
Permalink
Post by Sebastian Suchanek
Post by Sebastian Suchanek
Das Problem dabei: Die Msg-IDs werden zwar den Newsfeed
übergeben (zu sehen in /var/log/news/news), werden aber
nicht bzw. nicht zeitnah vom Perl-Programm verarbeitet.
Erst wenn ich INN beende, werden die Daten geschrieben.
Wie kann ich also INN bzw. mein eigenes Programm dazu
bringen, die einlaufenden Daten auch wirklich zeitnah zu
verarbeiten?
[...]
Danke, das scheint in der Tat geholfen zu haben.
Jetzt geht's erstmal ans Weiterbasteln. Sobald ich 'was halbwegs
Vorzeigbares fertig habe, melde ich mich wieder. :-)
Was definitiv funktioniert, ist cancelwatch, ein Perl-Script das bei
Cancels und Supersedes Mails verschickt. Ich weiß nicht mehr, von wem
ich das hab, vermutlich von Sven Hartge. Bei Interesse kannst Du mir
mailen, ich schicke Dir das relativ kleine Script dann zu.
Holger Marzen
2017-01-08 09:13:17 UTC
Permalink
Post by Sebastian Suchanek
Post by Sebastian Suchanek
Das Problem dabei: Die Msg-IDs werden zwar den Newsfeed
übergeben (zu sehen in /var/log/news/news), werden aber
nicht bzw. nicht zeitnah vom Perl-Programm verarbeitet.
Erst wenn ich INN beende, werden die Daten geschrieben.
Wie kann ich also INN bzw. mein eigenes Programm dazu
bringen, die einlaufenden Daten auch wirklich zeitnah zu
verarbeiten?
[...]
Danke, das scheint in der Tat geholfen zu haben.
Jetzt geht's erstmal ans Weiterbasteln. Sobald ich 'was halbwegs
Vorzeigbares fertig habe, melde ich mich wieder. :-)
Was definitiv funktioniert, ist cancelwatch, ein Perl-Script, das bei
Cancels und Supersedes Mails verschickt. Ich weiß nicht mehr, von wem
ich das hab, vermutlich von Sven Hartge. Bei Interesse kannst Du mir
mailen, ich schicke Dir das relativ kleine Script dann zu.
Sebastian Suchanek
2017-01-08 09:59:35 UTC
Permalink
Post by Holger Marzen
[...]
Was definitiv funktioniert, ist cancelwatch, ein
Perl-Script, das bei Cancels und Supersedes Mails
verschickt. Ich weiß nicht mehr, von wem ich das hab,
vermutlich von Sven Hartge. Bei Interesse kannst Du mir
mailen, ich schicke Dir das relativ kleine Script dann zu.
Danke, Anregungen sind immer willkommen - meine From-Adresse
funktioniert.


Tschüs,

Sebastian
Sven Hartge
2017-01-08 10:08:49 UTC
Permalink
Post by Holger Marzen
Was definitiv funktioniert, ist cancelwatch, ein Perl-Script, das bei
Cancels und Supersedes Mails verschickt. Ich weiß nicht mehr, von wem
ich das hab, vermutlich von Sven Hartge. Bei Interesse kannst Du mir
mailen, ich schicke Dir das relativ kleine Script dann zu.
Nein, das Script ist definitiv nicht von mir. Geschrieben hat das Ralf
Döblitz.


--
Sigmentation fault. Core dumped.
Thomas Hochstein
2017-01-15 16:44:31 UTC
Permalink
Post by Sven Hartge
Post by Holger Marzen
Was definitiv funktioniert, ist cancelwatch, ein Perl-Script, das bei
Cancels und Supersedes Mails verschickt. Ich weiß nicht mehr, von wem
ich das hab, vermutlich von Sven Hartge. Bei Interesse kannst Du mir
mailen, ich schicke Dir das relativ kleine Script dann zu.
Nein, das Script ist definitiv nicht von mir. Geschrieben hat das Ralf
Döblitz.
Und er hat es auch online gestellt:
<http://www.escape.de/~selene/Usenet/cancelwatch

Loading...