ProBoard Request Processor manual


ProBoard Request Processor v1.16

Written by Tom Torfs
(2:292/516@fidonet.org, tomtorfs@mail.dma.be, tomtorfs@village.uunet.be)


This is freeware. You are encouraged to copy this program and give copies to your friends. You may not, however, change this program or its documentation in any way or distribute modified versions of the original archive.

0.0 Contents

1.0 Overview

1.1 Installation

    A) FrontDoor/MainDoor
    B) InterMail
    C) McMail
    D) BinkleyTerm
    E) Xenia
    F) Cantaloup
    G) T-Mail
    H) Argus
    I) Other mailers

2.0 Configuration

    ADDRESS=<zone>:<net>/<node>[.<point>]
    AKA=<zone>:<net>/<node>[.<point>],<minzone>[-<maxzone>]
    ALLOWPOINTS=<YES|NO>
    AVOIDMULTI=<YES|NO>
    CCFROMADDR=<address to be used as from in carbon copy messages>
    CCPKTPATH=<path where local pkt's should be created>
    CHECKEXTENSION=<YES|NO>
    COPYLOCAL=<path>
    ERASECHAR=<character>
    FILEWAIT=<retries>
    FLAGS=<flaglist>
    FLAGS_LISTED=<flaglist>
    FLAGS_SECURE=<flaglist>
    FREEFILES=<YES|NO>
    FREEMAGIC=<YES|NO>
    GROUPS=<grouplist>
    GROUPS_LISTED=<grouplist>
    GROUPS_SECURE=<grouplist>
    KEEPCHAR=<character>
    LISTEDONLY=<YES|NO>
    LISTEDPOINTS=<YES|NO>
    LOGFILE=<logfile>
    MAGIC=<list with magic file names>
    MAGICFORMAT=<NORMAL|BINKLEY>
    MAXFILES=<maximum number of files>
    MAXFILES_LISTED=<maximum number of files>
    MAXFILES_SECURE=<maximum number of files>
    MAXKB=<maximum number of kilobytes>
    MAXKB_LISTED=<maximum number of kilobytes>
    MAXKB_SECURE=<maximum number of kilobytes>
    MAXLEVEL=<maximum security level>
    MAXLEVEL_LISTED=<maximum security level>
    MAXLEVEL_SECURE=<maximum security level>
    MAXFREQS=<n>
    MAXMATCHES=<n>
    MAXMAGICS=<n>
    MAXSPECSPERMAGIC=<n>
    PBPATH=<path to ProBoard system directory>
    PREPENDPLUS=<YES|NO>
    REPORT=[<ALWAYS|ERROR|NEVER>][,<BEFORE|AFTER>]
    SAMEFILE=<YES|NO>
    SENDDUPENAME=<YES|NO>
    SRIF=<YES|NO>
    SYSOPNAME=<local sysop name>
    TEMPDIR=<path>
    TICSYSTEM=<address>[,<password>[,<multidesc>]]
    TRASHCAN=<name of file containing locked-out systems>
    UPDATECOUNTERS=<YES|NO>

2.1 Response template

2.2 FILES.BBS

2.3 Errorlevels

3.0 Contacting the author

3.1 Source code

4.0 History of PRP

4.1 Credits

5.0 Disclaimer

1.0 Overview

ProBoard Request Processor is a simple program that quickly generates responses to file requests, even from cd-roms, by reading the ProBoard index files directly.

It is compatible with most popular mailers, including but not limited to FrontDoor, MainDoor, InterMail, McMail, BinkleyTerm, Xenia, Cantaloup, T-Mail, Argus. PRP should work with all mailers that support external file request processors either through a command line interface or through the SRIF interface.

PRP can send TIC files along with requested files, which can be used for automated file processing by the requesting system.

PRP comes in the following flavours:

   PRP.EXE   : 16-bit DOS version
   PRP2.EXE  : 32-bit OS/2 version
   PRP32.EXE : 32-bit Windows 95/NT version

PRP runs fine on multi-node systems; all its file access is done in shared mode and you can configure a retry delay if it encounters a sharing violation while accessing the ProBoard index files.

Both normal file requests and update requests (only if a file is newer than a certain date) are supported. Separate request limits for secure and unsecure sessions, and unlimited requests from free areas (optionally) are also supported.

You can selectively prevent systems from requesting files through a trashcan file (both address & sysop based), allowing only listed systems to request files and/or not allowing points to request files.

You can also give selective access to secure and unsecure systems via security levels, flags and groups.

Passwords are supported for magic files (for example to send gamma or registered versions of a program only to authorized people). Passwords for files in general are not supported, and will most likely not be supported in the future either, as the usefulness of such a feature seems doubtful to me.

If you are looking for bells and whistles, like timeslots, multi-colour windowed screens and setup programs, this program is not for you. If you are looking for a simple, robust and most of all fast file request processor for your ProBoard-based BBS, this is what you've been waiting for.

1.1 Installation

First unpack the archive into a separate directory (recommended) or into your mailer's directory.

To upgrade from a previous version of PRP, simply unpack the archive into the PRP directory. Your configuration and template files will be left intact. However, to use some of the new features, changing the configuration file will be necessary.

For any mailer, you should use the PRP version for the same operating system as the mailer itself. So use PRP.EXE for DOS mailers, PRP2.EXE for OS/2 mailers and PRP32.EXE for Windows 95/NT mailers.

A) FrontDoor/MainDoor

Set SRIF=NO in PRP.CFG.

Launch FDSETUP/MDSETUP and set the following information in Mailer/File requests/Request processor:

Program     C:\FD\PRP\PRP.EXE =R =T =X =A "=O"                (*)
Enabled     Yes
Swapping    No                                                (**)

(*) use the correct path, of course
(**) set to Yes if you're really low on memory

This requires the registered version of FrontDoor. It works with the unregistered version of MainDoor, though.

B) InterMail

Set SRIF=NO, PREPENDPLUS=NO and SAMEFILE=YES in PRP.CFG.

Set up the following command string for the request processor:

C:\IMAIL\PRP\PRP.EXE %F %X %A %O                            (*)

(*) use the correct path, of course

C) McMail

You can install PRP either using the SRIF interface or the command line interface.

1) Command line interface

Set SRIF=NO in PRP.CFG.

Set up the following command string:

ReqProcessor C:\MCMAIL\PRP\PRP.EXE =PFL =PXL =SU =PA "=RS"  (*)
2) SRIF interface

Set SRIF=YES in PRP.CFG.

Set up the following command string:

ReqProcessor C:\MCMAIL\PRP\PRP.EXE =SRIF                    (*)

(*) use the correct path, of course

D) BinkleyTerm 2.60 XE or later

Set SRIF=YES in PRP.CFG.

Insert the following line in BINKLEY.CFG:

SRIF C:\BT\PRP\PRP.EXE $s                                   (*)

(*) use the correct path, of course.

The $s will be replaced with the full path to the SRIF file.

NOTE: BinkleyTerm prior to version 2.60 XE does not support external request processors.
BinkleyTerm 2.60 XE currently does not support SRIF external request processors when using the Janus protocol. Therefore you should also add NoJanus to your BINKLEY.CFG.

E) Xenia 1.98.04 or later

Set SRIF=YES in PRP.CFG.

Remove the line Request from the Xenia configuration file if that is present. Then add the following line:

ExtReq C:\XENIA\PRP\PRP.EXE                                 (*)

(*) use the correct path, of course.

Xenia will append the full path to the SRIF file.

NOTE: SRIF does not function properly with Xenia prior to version 1.98.04

F) Cantaloup

Set SRIF=YES in PRP.CFG.

Create the file FREQPROC.CMD with the following contents:

@C:\CLOUP\PRP\PRP.EXE %6                                    (*)

(*) use the correct path, of course.

Alternatively, you can also set up Cantaloup without using the SRIF interface. Cantaloup passes the following command line parameters to FREQPROC.CMD:

FREQPROC <baud> <task> <time> <originator> <secure> <srif> <req> <attach>

G) T-Mail

Set SRIF=YES, PREPENDPLUS=NO and ERASECHAR=^ in PRP.CFG.

Add the following lines to T-MAIL.CTL:

FLAG_DIR C:\T-MAIL\SEM                                            (*)
FLAG_SESSION BUSY.%TASKNO%
PROCESS FREQ C:\T-MAIL\PRP\PRP.EXE C:\T-MAIL\SEM\BUSY.%TASKNO%    (*)

(*) use the correct path, of course.

H) Argus

Set SRIF=YES in PRP.CFG.

In Argus' request processor configuration, make sure the SRIF box is checked and set the following commandline:

C:\PRP\PRP.EXE %SRIF%                                             (*)

(*) use the correct path, of course.

I) Other mailers

Find out if your mailer supports external request processors, and whether it can call these using a command line interface or through the SRIF interface.

1) Command line interface with different request/response file

Set SRIF=NO and SAMEFILE=NO in PRP.CFG.

Set up the command line as follows (look in your mailer's manual for the required macros):

PRP.EXE <infile> <outfile> <SECURE|UNSECURE> <address> "<sysopname>"
2) Command line interface with same request/response file

Set SRIF=NO and SAMEFILE=YES in PRP.CFG.

Set up the command line as follows (look in your mailer's manual for the required macros):

PRP.EXE <in & outfile> <SECURE|UNSECURE> <address> "<sysopname>"

If you provide me with the correct command line for another mailer, it will be added to this doc and I will give credit to you.

3) SRIF interface

Set SRIF=YES in PRP.CFG.

Set up the mailer so that it will call PRP.EXE with the full path and filename of the SRIF-file as only parameter.

Now also check if your mailer requires a special character before filenames that should be and that should not be deleted in the response file and set the PREPENDPLUS, KEEPCHAR and ERASECHAR keywords accordingly. (usually they should be left to the defaults: YES, + and -, resp.)

2.0 Configuration

The configuration file must be named PRP.CFG and must be in the same directory as PRP.EXE/PRP2.EXE. It is a text file configuration, and can contain the following keywords (in alphabetical order).
Everything after a semicolon (;) is treated as a comment and ignored.

ADDRESS=<zone>:<net>/<node>[.<point>]

Your main address, in the form zone:net/node.point. Any omitted fields in the address (e.g. point) are assumed to be zero.
This address will be used as the origin for the file request response message if no other AKA is matched, and as the destination for the local carbon copy of the response messages.

AKA=<zone>:<net>/<node>[.<point>],<minzone>[-<maxzone>]

Your main address or an AKA, in the form zone:net/node.point. Any omitted fields in the address (e.g. point) are assumed to be zero. If maxzone is omitted, it will be assumed to be equal to minzone. The first AKA that contains the receiver's main zone number in the minzone-maxzone range, will be used as the origin for the file request response message. If no AKA is matched, the main address will be used instead.
There may be upto 16 AKAs.

ALLOWPOINTS=<YES|NO>

If set to NO, points are not allowed to request any files. If set to YES , points are allowed to request files (however, if LISTEDONLY=YES the LISTEDPOINTS setting applies).
The default is YES.

AVOIDMULTI=<YES|NO>

If set to YES, PRP 'remembers' how much a system requested today, and will prevent the request limits being exceeded by multiple calls.
The default is NO, which is also the behaviour of PRP versions prior to 1.13.
To implement this, PRP creates a binary file called PRPTODAY.DAT in the same directory as PRP.EXE, which is erased every day. This file has the following structure:

2 bytes  current day (1..31)
2 bytes  current month (1..12)
2 bytes  current year (1996..?)
2 bytes  number of nodes in file
For every node:
2 bytes  zone
2 bytes  net
2 bytes  node
2 bytes  point
2 bytes  number of files requested today upto now
4 bytes  number of bytes requested today upto now

NOTE: People can of course still masquerade as someone else to request files. There's nothing I can do about that.

CCFROMADDR=<address to be used as from in carbon copy messages>

If you omit this option, your main address will be used (note that in that case some tossers may have problems with tossing the messages so it may be a good idea to use e.g. a fake point for this address).

CCPKTPATH=<path where local pkt's should be created>

If you use this option, PRP will make a carbon copy of the response message addressed to the local sysop's name (see SYSOPNAME keyword). The PKT file for this message will be created in the path you specify. This should be the same path as your mailer/tosser's "inbound mail packets" path.
The message will be processed by your mail tosser the next time you toss your mail.

CHECKEXTENSION=<YES|NO>

When set to NO, the default and also the behaviour of previous versions of PRP, the extension of files is ignored, and the first matching file will be sent. For example, if someone freqs TEST.ARJ and you have TEST.ZIP and TEST.LZH, TEST.ZIP will be sent.
This option also implies that if somebody freqs for example TEST.*, he will only receive the first file, the others will be considered duplicates.
If set to YES, the file extension is significant. So if someone freqs TEST.ARJ and you have TEST.ZIP and TEST.LZH, neither of them will be sent.
This option also implies that if somebody freqs for example TEST.*, he will receive all matching files, like TEST.ZIP, TEST.ARJ, etc.

NOTE: There are two exceptions to this option:
1) extensions that end in two digits (most often some form of nodelist) will always be treated as if this option was set to YES. So if someone freqs NODEDIFF.Z96 and you have NODEDIFF.Z89 and NODEDIFF.Z82, neither of them will be sent, regardless of this setting.
2) if the base filename contains only a *, the extension will always be significant. So if someone freqs *.RUL, not the entire filebase will be sent.

COPYLOCAL=<path>

If this option is present, files from CD-ROM areas will be copied to <path> before sending them. If this option is left out, the files won't be copied to a local drive. The <path> must be a valid directory, with or without trailing backslash. If the <path> is invalid, PRP will not function properly.

ERASECHAR=<character>

The character that should be prepended to filenames in the response file that should be deleted after sending (e.g. the response message packet and CD-ROM files that have been copied locally). By default (and for most mailers) this is -.

FILEWAIT=<retries>

Defines the number of times PRP will retry to open the ProBoard index files if an access denied error occurs, e.g. because PBUTIL FI is running in another task. PRP will wait one second between every retry, so this is effectively the time in seconds during which it will retry opening the files.
Especially multi-node systems are recommended to use a high enough value here (also the more files there are, the longer PBUTIL FI will take and the higher this value should be).
You can always abort the retry sequence manually by pressing ESC.
The default setting is 0 (no retry).

FLAGS=<flaglist>

List of flags the requesting system will be assigned. Valid flags are A..Z and 1..6. There are no commas between the different flags. Default is no flags.
In the ProCfg File Area Manager you can specify flags that a user is required to have to be able to access a specific area and flags that a user may not have to access it.

FLAGS_LISTED=<flaglist>

Same as FLAGS but for listed systems. If omitted, the FLAGS setting will be used for listed systems as well.

ATTENTION: using this option requires a recent ProBoard nodelist index to be present - see also the note at the LISTEDONLY keyword.

FLAGS_SECURE=<flaglist>

Same as FLAGS but for secure sessions. If omitted, the FLAGS setting will be used for secure sessions as well.

FREEFILES=<YES|NO>

If set to YES, request limits are ignored for file areas marked as 'free' in ProBoard. This is also the default behaviour.
This only affects number of files & kb limits, security level limits and flags & group access restrictions are still respected even if the area is marked as free.

FREEMAGIC=<YES|NO>

If set to YES, request limits are ignored for files requested using magic names. This is also the default behaviour.

GROUPS=<grouplist>

List of groups the requesting system has access to. A group is identified by a number between 1 and 255. Different groups are separated by a comma. You can specify a range of groups with a hyphen, e.g. 1-255. The default is all the groups.

GROUPS_LISTED=<grouplist>

Same as GROUPS but for listed systems. If omitted, the GROUPS setting will be used for listed systems as well.

ATTENTION: using this option requires a recent ProBoard nodelist index to be present - see also the note at the LISTEDONLY keyword.

GROUPS_SECURE=<grouplist>

Same as GROUPS but for secure sessions. If omitted, the GROUPS setting will be used for secure sessions as well.

KEEPCHAR=<character>

The character that should be prepended to filenames in the response file that should not be deleted after sending. By default this is +. This character is prepended only if PREPENDPLUS=YES.

NOTE: I don't currently know any mailer that requires changing this, but if you need it, the feature is there.

LISTEDONLY=<YES|NO>

If set to YES, only nodes listed in the nodelist(s) can request files. For points, the bossnode must be listed if LISTEDPOINTS=NO. They must be listed separately - with Point status - if LISTEDPOINTS=YES.
The default is NO.

NOTE: This feature requires that the NODE_IDX.PRO file is kept up to date by running PBUTIL NC when a new nodelist comes in. If you use nodelists other than NODELIST.nnn (e.g. nodelists of other networks and/or pointlists), you must specify these on PBUTIL NC's commandline (see the ProBoard documentation for more info). Point- lists are sometimes distributed in a so-called Boss-format; this format is incompatible with ProBoard (and PRP). You must use the so-called Point-format (where points are identified with Point in the status field).
If NODE_IDX.PRO or any of the nodelists referenced within can't be read, PRP will assume the system is listed (of course an error message will be written to the logfile as well).
This applies to LISTEDONLY as well as all the xxx_LISTED limits.

LISTEDPOINTS=<YES|NO>

If set to YES, points must be listed separately in the nodelist (see LISTEDONLY). If set to NO, it is enough that their bossnode is listed.
This applies to LISTEDONLY as well as all the xxx_LISTED limits.
This setting is ignored if ALLOWPOINTS=NO. The default is NO.

LOGFILE=<logfile>

Defines the path and filename of the logfile. Leave empty, or simply omit, to disable logging.

MAGIC=<list with magic file names>

Defines the path and filename of the file containing a list of magic filenames (same file as the alias file in FrontDoor). If MAGICFORMAT=NORMAL, each non-blank line in the magic file list should have the following structure. If MAGICFORMAT=BINKLEY, only the lines beginning with the @-sign will be read.

<magic name>[<space>!<password>] [[>]<filespec> [[>]<filespec> ...]]
(see SAMPLE.MAG for an example)

If a password is specified, it must be preceded by at least one space and an exclamation mark (!). The password itself may not contain spaces (it may contain exclamation marks though), and it is case insensitive.
The file specifications must be separated by at least one space. The file specifications may contain wildcards, but they should always be the full paths, including drive letter and directories.
In case of wildcards, by default all files conforming to the file specification will be sent (as in PRP versions 1.14 and 1.15). However, if you put a greater-than sign (>) immediately before the file specification (no space inbetween), PRP will search for the most recent matching file and will send this only (handy for nodelists and the like), as in PRP versions 1.12 and 1.13.
If this option is omitted, no magic files will be available.

NOTE: When magic files are requested, the files will be searched in the ProBoard filebase (even in areas normally not authorized by the security level). If they are found, the description will be taken from there, and the download counters will be updated if that option is set. If it fails, no description will be provided and no download counters will be updated.

MAGICFORMAT=<NORMAL|BINKLEY>

When set to NORMAL, the default and also the behaviour of previous versions of PRP, a standard magic file list as described above will be expected to be found in the file specified in the MAGIC= setting.
When set to BINKLEY, a magic file list such as used by BinkleyTerm, Allfix, etc. will be expected instead. This implies that all magic files should be preceded by the @-sign. All the other lines in the file will be ignored.

MAXFILES=<maximum number of files>

Defines the maximum number of files a system may request per session. If you omit this or set it to zero, there is no limit.

MAXFILES_LISTED=<maximum number of files>

Same as MAXFILES but for listed systems. If you omit this the setting from MAXFILES will be used.

ATTENTION: using this option requires a recent ProBoard nodelist index to be present - see also the note at the LISTEDONLY keyword.

MAXFILES_SECURE=<maximum number of files>

Same as MAXFILES but for secure sessions. If you omit this the setting from MAXFILES will be used.

MAXKB=<maximum number of kilobytes>

Defines the maximum number of kilobytes a system may request per session. If you omit this or set it to zero, there is no limit.

MAXKB_LISTED=<maximum number of kilobytes>

Same as MAXKB but for listed systems. If you omit this the setting from MAXKB will be used.

ATTENTION: using this option requires a recent ProBoard nodelist index to be present - see also the note at the LISTEDONLY keyword.

MAXKB_SECURE=<maximum number of kilobytes>

Same as MAXKB but for secure sessions. If you omit this the setting from MAXKB will be used.

MAXLEVEL=<maximum security level>

Defines the maximum security level a file area may have in ProBoard for a system to be allowed to request from it. Set this to 32767 (or omit it) if you want no limit.

MAXLEVEL_LISTED=<maximum security level>

Same as MAXLEVEL but for listed systems. If you omit this the setting from MAXLEVEL will be used.

ATTENTION: using this option requires a recent ProBoard nodelist index to be present - see also the note at the LISTEDONLY keyword.

MAXLEVEL_SECURE=<maximum security level>

Same as MAXLEVEL but for secure sessions. If you omit this the setting from MAXLEVEL will be used.

MAXFREQS=<n>

The maximum number of separate file requests that can be processed at a time. The default is 256, as in the previous versions of PRP.
In the DOS version, if you set this value too high you will get a "not enough memory" error. In the 32-bit versions that should not be a problem.

MAXMATCHES=<n>

The maximum number of matching files that can be processed at a time. The default is 256, as in the previous versions of PRP.
In the DOS version, if you set this value too high you will get a "not enough memory" error. In the 32-bit versions that should not be a problem.

MAXMAGICS=<n>

The maximum number of magic filenames that can be processed. The default is 128, as in the previous versions of PRP.
In the DOS version, if you set this value too high you will get a "not enough memory" error. In the 32-bit versions that should not be a problem.

MAXSPECSPERMAGIC=<n>

The maximum number of file specifications per magic filename that can be processed. The default is 16. If you don't use multiple file specifications per magic, you can safely change this to 1.
In the DOS version, if you set this value too high you will get a "not enough memory" error. In the 32-bit versions that should not be a problem.

PBPATH=<path to ProBoard system directory>

If you omit this, the environment variable PROBOARD will be read, and if that isn't set, C:\PB will be assumed.

PREPENDPLUS=<YES|NO>

If set to YES (the default), PRP will prepend the character you define in KEEPCHAR ('+' by default) to the filenames in the response file that should not be deleted. This should usually be left to the default: YES.

REPORT=[<ALWAYS|ERROR|NEVER>][,<BEFORE|AFTER>]

The parts must be separated by a comma and both need not be present (when a part is left empty the default is configured).
The first part selects when a report message should be sent to the remote sysop:

   ALWAYS : always send a report message (default)
   ERROR  : send a report message only if an error occurred
            (file not found, limit exceeded)
   NEVER  : never send a report message, send the files only
The second part selects whether the report message, if one is sent, should be sent before or after the files:
   BEFORE : send report message before files
            (so the remote will receive a report even if the
             transfer is aborted and not all files are received)
            This is the default value. It was also the behaviour of
            PRP versions prior to 1.14 was.
   AFTER  : send report message after files
            (so the remote will NOT receive a report if the
             transfer is aborted and not all files are received)
            This was the behaviour of PRP versions 1.14 and 1.15.
SAMEFILE=<YES|NO>

This option is only significant if SRIF=NO. If set to NO (the default), PRP will take 5 parameters of which the first two will be the request file and the response file. If set to YES, PRP will take 4 parameters of which the first one will be both the request and response file. This is only required by InterMail as far as I know.

SENDDUPENAME=<YES|NO>

If set to NO, the default and also the behaviour of previous versions of PRP, of more files with the same file name, including extension, only the first will be sent.
If set to YES, the other files will be sent. Depending on the remote sysop's software, the files will be renamed, skipped, or the first files will be overwritten.
If the files are copied to a local disk first, they are renamed, for example TEST.ZIP becomes TEST.ZI1, TEST.ZI2, etc.
Two files with the same file name are sent *only* if they have different file sizes.

SRIF=<YES|NO>

Whether your mailer uses the SRIF interface (e.g. Binkley 2.60 XE, Xenia) or a command line interface (e.g. FrontDoor). For more information see the installation instructions. The default is NO.

SYSOPNAME=<local sysop name>

Your name. This is the name that the local carbon copy message will be addressed to if you use the CCPKTPATH option.
The default is Sysop.

TEMPDIR=<path>

By default PRP will read out the TEMP environment variable for the directory in which the response mail packets are created, and if that environment variable is not defined the current directory will be used. With this keyword you can overrule this setting.

Note: this is only for response mail packets, not for local copies of files. See COPYLOCAL for the latter.

TICSYSTEM=<address>[,<password>[,<multidesc>]]

This keyword specifies a system that will receive TIC files together with the requested files.
<address> is the system's address, in the form zone:net/node[.point].
<password> is the system's file password; when omitted the TIC files will not contain a password. The password is case-insensitive and is limited to 20 characters.
<multidesc> is either YES or NO, depending on whether the system supports multiple description lines in the TIC file. The default is NO, which means the entire description will be put on a single description line (truncated at 255 characters).

NOTE: The directory name the files are in will be used as the file area name after conversion to uppercase; e.g. if a certain file comes from the path E:\FILES\NODEDIFF\ then the file area name in the TIC will be NODEDIFF. You can configure upto 256 TIC-receiving systems.

TRASHCAN=<name of file containing locked-out systems>

This file is an ASCII list of either sysop names or node numbers (or a mixture of them) that are not allowed to request any files except free files.
No wildcards are allowed. Example:

Julius Caesar
1:2/3.4
Would lock out everybody whose name is Julius Caesar and also everybody whose nodenumber is 1:2/3.4.

NOTE: People can of course still masquerade as someone else to request files. There's nothing I can do about that.

If you omit this option, all systems will be allowed to request.

UPDATECOUNTERS=<YES|NO>

If set to YES, PRP will append the requested files to the download logfile, so that on the next PBUTIL FC the download counter for this file will be updated. The default is NO.

2.1 Response template

The response template file must be named PRP.TPL and must be in the same directory as PRP.EXE. If this file isn't found, no response will be generated.

The first character of each line can define when a line should be included in the response:

;       comment, always ignored
+       only if the request succeeded entirely
*       only if the request succeeded at least partly
-       only if the request didn't succeed entirely
!       only if the request limits were exceeded
%       only if a password error occurred
?       only if some of the requested files weren't found
&       only if the system was found in TRASHCAN.CTL
$       only if ALLOWPOINTS=NO and the system is a point
^       only if LISTEDONLY=YES and the system is unlisted
#       always include this line

All other characters will cause the line to be always included. The # character is useful if you want a line beginning with any of the above characters to be always included.

You can use the following macros in the response template (case sensitive):

@SYSOPNAME@     name of sysop of requesting system
@SYSOPFIRST@    first name of sysop of requesting system
@FILES@         number of files sent
@KB@            number of kilobytes sent
@FREEFILES@     number of free files sent
@FREEKB@        number of free kilobytes sent
@MAXFILES@      maximum number of files this system can request
                per session (UNLIMITED if 0)
@MAXKB@         maximum number of kilobytes this system can request
                per session (UNLIMITED if 0)
@SENTFILES@     names and descriptions of sent files (everything
                else on this line will be ignored)
@OVERLIMIT@     names and descriptions of files which exceeded limits
                (everything else on this line will be ignored)
@BADPASSWORD@   names and descriptions of files for which the
                required password was not given
                (everything else on this line will be ignored)
@NOTFOUND@      names of files for which no match was found
                (everything else on this line will be ignored)

See the example SAMPLE.TPL for an example on how to use these.

2.2 FILES.BBS

When a match is found, the file size and date/time stamp are looked up. It ignores this info in the FILES.BBS if present, so that an incorrect FILES.BBS doesn't cause incorrect results (like an attempt to send a missing file you forgot to delete from FILES.BBS etc.). Only the description is read from the FILES.BBS, with all optional information like file size, date/time, download counters etc. stripped. This way PRP avoids compatibility problems with the different date formats etc.

Extended descriptions are supported. The first non-whitespace character on each extended description line must be a +, | or >.

2.3 Errorlevels

0 = all OK
1 = syntax error
2 = file error
3 = memory error

3.0 Contacting the author

Although this is a freeware program, I am willing to give (limited) support for it. You can write netmail to me at 2:292/516@fidonet.org, or e-mail to tomtorfs@mail.dma.be or tomtorfs@village.uunet.be or tomtorfs@iname.com or call my BBS at 32-15-24.62.32 and leave a message.

You can always download the latest versions of my software and read about new features on my homepage: http://bewoner.dma.be/tomtorfs or http://80x86.home.ml.org.

3.1 Source code

Sorry, no source code for this one. If you want to write your own file request processor, you'll find enough information in the FrontDoor development kit (FDDEV) and in the file SRIF.DOC (inside the MaxF'Req archive) to do so without having to see my source.

4.0 History of PRP

Version         Release date    Changes

1.0             9 Apr 1996      Original version

1.01            3 May 1996      * Added file sharing support for
                                  multiline BBSes

1.02            27 May 1996     * Unlimited requests from free
                                  file areas & free magic names
                                  (configurable)
                                * Logging now possible
                                * Added documentation for setup
                                  with McMail mailer
                                * Miscellaneous small changes to
                                  the documentation & code

1.02a           3 Jun 1996      * OS/2 problem fixed

1.03            2 Aug 1996      * 32-bit OS/2 version included
                                * Copy local for cd-rom drives
                                * Supports ^AINTL,^AFMPT and ^ATOPT
                                  for correctly creating messages
                                  to points and/or other zones
                                * A tearline is now added to the
                                  response message
                                * Fixed bug in wildcard matching

1.10            20 Aug 1996     * Now supports SRIF interface, used
                                  by Binkley 2.60 XE, Xenia, McMail,
                                  Cantaloup, ...
                                * Option to update download counters
                                * More selective dupe-checking
                                * Limits are no longer hardcoded and
                                  can now be set in PRP.CFG
                                * Proper descriptions are now given
                                  with magic names if they are in the
                                  PB filebase, the listingfile needs
                                  no longer be FILES.BBS in the same
                                  directory as the magic file
                                * Fixed a small bug that caused
                                  download counters >99 not to be
                                  stripped off properly
                                * Fixed another small bug in wildcard
                                  matching; should be all fixed now
                                * If PBPATH is not defined in PRP.CFG,
                                  PRP now reads PROBOARD environment
                                  variable instead of PB

1.11            7 Sep 1996      * Binkley 2.60 XE seems to expect ERPs
                                  to create the necessary outbound
                                  subdirectories themselves; PRP does
                                  this now
                                * Documented the fact that Janus protocol
                                  should be disabled in Binkley 2.60 XE
                                * Temporary mail packets are now created
                                  in the directory where the environment
                                  variable TEMP points at, instead of
                                  always in the current directory
                                * Added REPORT option to disable generating
                                  a response message if no errors occurred
                                * Added macros @FILES@, @KB@, @FREEFILES@
                                  and @FREEKB@ in message template
                                * Error messages are now also written to
                                  the logfile for later examination
                                * Added PREPENDPLUS keyword to disable
                                  the '+' before the filenames in the
                                  response file
                                * Added SAMEFILE keyword for mailers that
                                  use the same file for the request and
                                  the response file (e.g. InterMail)
                                * Added InterMail setup information
                                
1.12            30 Sep 1996     * Added support for passwords with
                                  magic names; added @BADPASSWORD@
                                  macros and % condition character
                                  to handle password errors
                                * Magic files with wildcards will
                                  now always send the most recent
                                  file instead of the first file
                                * Comments now allowed in magic list
                                * Added sample magic list SAMPLE.MAG
                                * Added CCPKTPATH & SYSOPNAME options
                                  to send a carbon copy of the report
                                  message to the local sysop
                                * Fixed bug introduced in v1.10 that
                                  caused files requested using magic
                                  names to not have descriptions in
                                  the response message sometimes
                                * Fixed bug that caused the very first
                                  file in the file-index to never be
                                  found
                                * Fixed bug that caused undefined
                                  behaviour when a SRIF file doesn't
                                  contain a RemoteStatus statement
                                * PRP now works properly with filepaths
                                  that end with a (back)slash already

1.13            16 Nov 1996     * T-Mail is now supported
                                * Added KEEPCHAR and ERASECHAR keywords
                                * Added the AVOIDMULTI keyword to prevent
                                  people from avoiding the request limits
                                  by doing multiple calls after each other
                                * Added support for TRASHCAN.CTL; also
                                  added the & condition character for
                                  systems found in TRASHCAN.CTL
                                * Fixed bug that caused local carbon
                                  copies of the response message to
                                  only display the first line of
                                  multiline descriptions
                                * Fixed bug that caused PRP to always
                                  use the last AKA of the remote system
                                  when operating in SRIF mode, instead
                                  of the first
                                * Fixed bug that caused bogus requests
                                  like ROCKWELL*.* to fail
                                * Re-organized the configuration keywords
                                  for better clarity; in this doc they
                                  are listed alphabetically now and in
                                  the sample configuration file they are
                                  listed systematically

1.13a           28 Nov 1996     * Fixed bug that caused the AVOIDMULTI
                                  feature to be quite unstable (crashed
                                  under some circumstances)

1.14            15 Jun 1997     * Added the LISTEDONLY and LISTEDPOINTS
                                  keywords to prevent unlisted nodes
                                  and/or points from requesting files
                                  (reads ProBoard's nodelist index);
                                  added ^ condition character
                                * Added the ALLOWPOINTS keyword to
                                  prevent points from requesting files;
                                  added $ condition character
                                * Added support for multiple AKAs
                                * The response message is now sent
                                  after the files, so that if the
                                  connection is aborted, no message
                                  is sent
                                * You can now use wildcards in the
                                  magic name definitions and you
                                  can put multiple filenames with
                                  one magic
                                * Ignores the CHECKEXTENSION=NO setting
                                  if the base filename contains only
                                  a *
                                * PRP wrote 'sent' to the logfile if a
                                  wrong password was specified; it writes
                                  'bad pwd' now

1.14a           21 Jun 1997     * Fixed bug that caused a general
                                  protection fault in the OS/2 version

1.15            21 Aug 1997     * Included Win95/NT version
                                * Added support for selective access based
                                  on access flags and/or file groups
                                * Added support for Binkley-style
                                  magic lists (with @-signs)
                                * Now supports sending TIC files together
                                  with requested files
                                * Can now use a different address as
                                  'from' in the carbon copy message
                                * Can now retry during a configurable time
                                  if access to the ProBoard index files is
                                  denied (for multi-node systems)
                                * Reformatted the logfile slightly (now
                                  includes subdirectories)
                                * The subject line of the CC messages now
                                  also includes the requester's address
                                * Added WHATSNEW.115 file which contains
                                  the latest changes

1.16            03 Apr 1998     * New! HTML version of documentation
                                  (use an Internet browser, e.g.
                                   NetScape or MSIE, to read PRP.HTM)
                                * You can now specify separate limits
                                  for listed systems in addition to
                                  password-protected (secure) systems
                                  and normal (unlisted) systems
                                * Added TEMPDIR statement to overrule
                                  TEMP environment variable
                                * Extended REPORT option to allow
                                  configuring whether response message
                                  is sent before or after the files
                                  ATTENTION: the new default is
                                  to send it before the files, like
                                  in PRP versions prior to 1.14
                                * You can now instruct PRP to send
                                  only the most recent matching file
                                  for wildcards in magics, by putting
                                  a greater-than sign (>) before
                                  the file specification.
                                * Added /local switch to allow
                                  to search for files locally
                                * Added Argus setup information
                                * Fixed bug that caused problems on some
                                  8088-based PC-XTs
                                * Fixed a minor bug where PRP would
                                  sometimes not correctly strip the
                                  filesize information from the
                                  FILES.BBS description

4.1 Credits

Thanks to the following people for giving me useful suggestions and/or reporting bugs: (in chronological order)

v1.01
Jacques Theys     suggested file sharing compatibility
v1.02
Jacques Theys     provided the McMail setup string
v1.10
Jurre Van Dijken  requested download counter update option
v1.11
Hans Waasdorp     requested option to disable report if no errors
Tobias Ernst      informed me that Janus must be disabled in Binkley XE
David Moufarrege  informed me that InterMail didn't work with PRP 1.10
v1.12
Lots of people reported the bug with no descriptions being sent when
requesting using magic names in PRP 1.11.
v1.13
Jacques Theys     informed me about the last-AKA bug in SRIF mode
Hans Waasdorp     informed me about the "ROCKWELL*.*" problem
Christoph Grigo   reported the bug with multiline descriptions in
                  the local carbon copy & requested the TRASHCAN.CTL
                  support and the AVOIDMULTI feature
Ken Givens        requested T-Mail support and provided me with the
                  correct settings for T-Mail
v1.13a
Multiple people reported the bug with the AVOIDMULTI feature in
PRP 1.13.
v1.14
Christoph Grigo   requested the listed systems only feature
Ronald Glaeser    requested the support for multiple AKAs
Holger Riedl      requested that the response message be sent
                  after the files
Felix Mueller     requested the support for wildcards in the
                  magics and multiple filenames per magic
Rudolf Paege      reported the problem with CHECKEXTENSION=NO
                  and base filenames with only a *
v1.15
Sean Rima         requested the Win95/NT version and accepted
                  to become the betatester for it
                  & requested the CCFROMADDR feature
Holger Riedl      requested the support for flags & groups
Jochen De Smet    requested the support for Binkley-style
& Jacques Theys   magic lists
Hans Gras         requested the retry if access denied
                  & the minor logfile reformatting
Steven Leeman     requested adding the requester's address to
                  the subject line of the CC messages
v1.16
Hans Gras         reported the problem with the 8088-based XTs
                  & requested the TEMPDIR keyword
                  & requested the ability to configure whether
                    the response message is sent before or after
                    the files
Steven Leeman     requested the possibility to send only the
                  most recent file on wildcards in magics
                  & reported the problem with some filesizes not
                    being stripped properly from the description
                  & requested the local mode feature
Christoph Grigo   requested the separate limits for listed systems
David Moufarrege  provided Argus setup information

Thanks to the following people for helping me test PRP: (in alphabetical order)

Olivier Baum
Jochen De Smet
Joost Luyten
David Moufarrege
Sean Rima

Some of the SRIF-mailer settings were taken from the documentation of MaxF'Req file request processor written by Wilfried Brinkmann.

The SRIF (Standard Request Information File) file format is Copyright (c) 1994,95 by Gordian Schuermann & Mirko Mucko.

5.0 Disclaimer

I EXCLUDE ANY AND ALL IMPLIED WARRANTIES, INCLUDING WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. I MAKE NO WARRANTY OR REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THIS SOFTWARE, ITS QUALITY, PERFORMANCE, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. I SHALL HAVE NO LIABILITY FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RESULTING FROM THE USE OR MODIFICATION OF THIS SOFTWARE.