Automatic Article Checker
v1.6 Copyright (C) June 2, 1999 by Heinrich Schramm
mailto:heinrich@schramm.com
converted to perl by Wilfried Klaebe <wk@orion.toppoint.de>
(not really converted, more or less rewritten in perl)
modified & enhanced (more or less rewritten ;-))
by Thomas Hochstein <THochstein@gmx.de> since March/April 2000
(c) artchk.pl (mod.) January 06, 2001 by Thomas Hochstein
Version: 1.2.01 BETA
_________ ATTENTION please! - This is a BETA version! _________
---------------------------------------------------------------------------
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
---------------------------------------------------------------------------
(1) REQUIREMENTS
* Perl 5.x
* the "News::NNTPClient"-module from CPAN.
* the "MIME::QuotedPrint"-module from CPAN.
* the "MIME::Base64"-module from CPAN.
* the "Net::DNS"-module from CPAN.
* a (local) NNTP-server
(2) INSTALLATION
* Install
- artchk.pl # main program
and
- sample.ini # .ini-file: server, port, user/password, groups, counter
- sample.rc # .rc-file: customize headers / body of followups
- domains # valid TLDs for MID-FQDNs
to the same directory.
The last three files must reside in the same directory as the first, or
you have to specify the path to them when invoking artchk.pl
You may specify different .ini-/.rc-files when invoking artchk.pl
* Modify "sample.ini" to fit your needs and rename it to "artchk.pl.ini"
(default) or anything you like.
The .ini-file has to contain
- parameters
- the special word "checkgroups:" including the colon
- a list of groups to check
The parameters are written one on a line, "parametername = parameter".
Allowed parameters are:
- reader : the newsserver (and port) you read the postings from,
"server.name,port"
This entry is necessary; you can drop the port.
Default for port is 119.
- reader_user : your username for authorization
Default: (none) ---> no authorization
- reader_pass : your password for authorization
- poster : the newsserver (and port) you post to,
"server.name,port"
Default: [none] ---> post to the server you read from
You can drop the port. Default for port is 119.
- reader_user : your username for authorization
Default: [none] ---> no authorization
- reader_pass : your password for authorization
- trigger_check : a regular expression for the string that initiates
a check when found in "Subject:".
Default: check
You should change "[header]" in the .rc-file accordingly!
- trigger_ignore: a regular expression for the string that stops a check
in auto-mode (see below) when found in "Subject:" or
first line of body.
Default: (ignore)|(no[ ]*repl(y|(ies)))
You should change "[header-auto]" in the .rc-file accordingly!
- rcfile : the name of your .rc-file
Default: [name of .ini-file]
- killfile : the name of your .kill-file
Default: [name of .ini-file]
You can place comment lines in between; they may NOT contain a "=".
The list of groups is in the following format:
- the name of a group to check
- a single space and a "y" or "n" to enable/disable auto-mode. Set it
to "n" - artchk will only post followups to postings with
trigger_check in the subject (but if trigger_check is
found, it _will_ post a followup, even if trigger_ignore is
also found)
to "y" - auto-mode; artchk will also post followups if it found
something to correct as long as trigger_ignore is _not_
found in the subject or the first line of the body and no
killfile-expresion matches
You may NOT place anything else after the magic word "checkgroups:".
- Example:
reader = server.pro.vider,119
reader_user = user
reader_pass = pass
---> We do not have another posting server.
checkgroups:
de.test y
de.alt.test n
* Modify "sample.rc" to fit your needs and rename it to "artchk.pl.rc"
(default) or anything you like.
- [head]-Section:
Edit at least the "From:" header configuration.
Edit or delete the "Sender:" header.
Edit or delete the "Path:" header.
Edit or delete the "Reply-To:" header.
Add any other headers you like,
e.g. "X-Checkbot-Owner: My Name <my.name@do.main.invalid>"
Do _NOT_ insert a "Newsgroups:" header!
Do _NOT_ insert "Subject:", "Message-ID:", "References:" or "X-Artchk-Version:"!
- Edit the [header]-/[header-auto]- and/or [footer] text section if
you like. You should do that if you have changed the trigger_check/
trigger_ignore-settings!
- Later on, you can edit the other sections as you like. Please be
sure to have a look at the source code in this case to understand
how these sections are used.
- Later on, you may add sections with special tips for certain
newsclients. Those sections will be printed out immediately after
the standard-reply. They have the form of [standard-nr] with nr being
one of
oe (Outlook Express, all versions)
moz (Mozilla, all versions)
agent (Fort<72> Agent _and_ Free Agent, all versions)
xnews (XNews, all versions)
gnus (Gnus, all versions)
macsoup (MacSoup, all versions)
slrn (slrn, all versions)
mpg (Microplanet's Gravity, all versions)
pine
xp (crosspoint)
pminews
- You may also delete sections - except for the following:
[head] [header] [header-auto] [footer] [intro] [allok] [nr]
The corresponding checks will then be skipped.
* Attention! The sample files have CR/LF as linebreaks (DOS). On UNIX
machines, you'll have to convert the files to use just LF as EOL, for
example using "tr -d '\r' < sample.rc > sample.rc-unix".
(3) HOW TO RUN artchk.pl
* Just start it up. ;-)
- "perl artchk.pl" should do fine, but artchk.pl will also accept parameters:
perl artchk.pl -p<path> -n<name> -v[vvv] -l<logfile> -c<mid> --log
- -v[vvv]
Default: 0
Verbosity level from "0" to "4". See below.
e.g. "perl artchk.pl -vvv".
- -p
Default: (empty)
Path to your .ini-/.rc-/domains/.disabled/.kill/.log-file.
e.g. "perl artchk.pl -pc:\programme\artchk\".
- -n
Default: artchk.pl[.ini]
Name for your .ini-file. This name also applies for the .disabled-file.
See below.
e.g. "perl artchk.pl -nserver1".
- -l
Default: (the name set via -n)[.log]
Name for the logfile (if activated). See "--log" below.
e.g. "perl artchk.pl -lartchk.log".
- -c
Default: (there is none)
Force check of a posting with "-c<message-id>".
e.g. "perl artchk.pl -c<176r23r2erwfwe@do.main>"
- --log
Activate logfile.
- artchk.pl will recognize the parameters regardless of their order.
* artchk.pl will _not_ start if a file artchk.pl.disabled (or a file with
any other, depending on the "-n"-parameter) exists in the path given
with "-p".
* Normally, it will read the .rc- and .ini-file and do a little bit (!)
of syntax-checking with them.
* Then it'll connect to your server and check the first group. It'll get
every new article from there, check it and -possibly- generate a
followup and post it to that group. Then it'll do all other groups.
It will delete and rewrite (!) the .ini-file to keep the article
counter up to date.
* It will check every posting unless it
- is not in a group containing "test"
- is a control message
- already is a checkbot answers (detected by MID)
- contains trigger_ignore in Keywords:
- doesn't contain trigger_check in Subject:
AND auto-mode is off
If auto-mode is on, it will also check postings without
trigger_check in Subject:, unless they
- contain trigger_ignore in Subject: or first line of body
- matcht the killfile (see below)
* It will include an excerpt from the logfile if $trigger_check is
followed by "verbose".
* The display output of artchk.pl can be more or less verbose.
A debug level
of: means:
0 - introduction/end + error messages
1 - 0 + configuration and summaries
2 - 1 + progress indicator
3 - 2 + NNTP status replies from server
4 - 3 + (debug-)output from check-routines
Default is 0.
* You can add a killfile to exclude certain postings from auto-mode.
This file must have the name defined in your .ini-file and reside
in the path given with "-p".
It must have the following format:
headerfield = regular expression # comment
where headerfield is the name of any header field
regular expression is any regular expression
comment (anything from # to EOL) is a comment that is ignored
If the regular expression matches the content of the header field,
the posting is ignored in auto-mode. It is _not_ ignored if a check
is requested via trigger-check in the Subject:.
---------------------------------------------------------------------------
Please remember:
(1) This is a BETA version. Report all bugs and suggestions to
<artchk@akallabeth.de>.
(2) If you start running this bot in a non-local newsgroup, please send a
short notice to <artchk@akallabeth.de>. That will make it possible to
report bugs, problems and updates to you.
(3) Please use this program with care and sense of responsibility!
Thank you.
---------------------------------------------------------------------------