Subject: | |
From: | Eric Thomas <ERIC@FRECP11> |
Reply To: | The Revised LISTSERV Distribution List <LSTSRV-L@EB0UB011> |
Date: | Wed, 12 Nov 1986 23:03 SET |
Content-Type: | text/plain |
Parts/Attachments: |
|
|
This kind of feature was in the initial NETINFO idea (as part of the FAC) and
I have used this idea in LISTSERV, but as part of the FILEID control list since
FACs are local to each filelist (and for security reasons the owner of the
filelist must not be able to cause just any exec to be called).
Let me explain how the mechanism works.
1) The FILELIST owner adds an entry in the filelist for a new file.
2) With each filelist there is an associated "filelistname FILEID" file which
is automatically maintained by LISTSERV but can be modified by the postmas-
ter. This file lists the "true fileid" for each file of the filelist, along
with two very important optional fields: execname and execparms.
3) The file owner sends a PUT command for that file. LISTSERV call LSVFILID
to determine the 'real' fileid of the file. This may have been overridden
by the postmaster (eg I want CHAT EXEC to be stored as CHAT EXEC, for ob-
vious reasons) on a file per file basis. If the file had already been stored
once, the same fileid is used of course. Otherwise a new fileid is generated
("nnnnnnnn filelistname A1"). However, if an "*DEFAULT*" entry exists in the
FILEID file, its contents are used to determine the filemode, execname and
execparms.
4) If execname ^= '', the exec receives control with various arguments inclu-
ding invoker, fileid, filelist name, the complete line from the filelist
with FACs and the like, execparm (as specified in the FILEID file), etc.
The exec can either reject the PUT command, accept it as is, or impose a
different "true fileid".
5) The file is received under the specified fileid.
6) The exit gets control a second time to perform any kind of post-processing
job that may be required. It can again change the "true fileid" associated
with the file.
7) LISTSERV processes to execute or queued FUI and AFD processes.
Example:
PUT $LISTSRV NAMES
--> LSV_$NAM gets control, checks you're the contact person for your node.
It then either rejects or accepts with a fileid of "LISTSERV CMSUT1 A1".
--> The file is received as LISTSERV CMSUT1
--> LSV_$NAM COPYFILEs it to LISTSERV UPDNAME A1 (APPEND, and indicates the
LISTSERV FILEID list must not be updated.
There are a lot of other examples in a memo I wrote a long time ago for
NETINFO. I will send it to the list so you can see yourself.
Eric
|
|
|