LSTSRV-L Archives

LISTSERV Site Administrators' Forum

LSTSRV-L

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Topic: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Peter Furmonavicius <PETER@YALEVM>
Wed, 13 Sep 89 07:39:56 EDT
text/plain (106 lines)
I wanted to have similar information so I modified the
LSV$GETQ EXEC to record it.  A very simple change, and
the information is saved in a file called
"listservlistname  GETSTATS". Here is what I use...
/***********************************************************************
 *                                                                     *
 * LSV$GETQ -- LISTSERV system, GET quota exit                         *
 *                                                                     *
 *         (c) Eric Thomas 1987,1988     <[log in to unmask]>         *
 *                                                                     *
 * This file was last updated on Saturday, March the 5th of 1988       *
 *                                                                     *
 ***********************************************************************/
/*
   This exit receives control whenever  LISTSERV processes a GET command,
   be  it from  a  postmaster or  a "general"  user.  The first  argument
   indicates  the command  originator, total  number of  files previously
   ordered today,  total number of  kilobytes of data  previously ordered
   today,  file size  in kilobytes,  and  fileid. Note  that the  numbers
   supplied correspond to the files sent to the address that will receive
   the  current  file   in  previous  GET  requests   (usually,  but  not
   necessarily,  the command  originator). That  is, if  the user  hasn't
   ordered any file today, the first two parameters will be zeroes (not 1
   and  file-size).  The second  argument,  if  present, denotes  a  GIVE
   command and  contains the  address of  the person  who is  to actually
   receive  the data.  That  is, the  actual  destination is  Word(giveto
   origin,1). The third argument is  a free-format "user data", extracted
   from the GETLOG  file and defaulted to '' if  the file destination was
   not in the  GETLOG file. This user data is  reserved for the exclusive
   use of this exit (see below).
 
   This exit must  return to LSVGET by means of  an 'Exit' instruction of
   the following form:
 
                        Exit rc userdata
 
   'rc'  is the  return code.  '0' indicates  that the  request is  to be
   accepted, anything else  means that it should be denied.  Note that in
   the latter case, no error message will be sent to the originator. That
   is, it is the exit's responsibility to send appropriate error messages
   to the address listed in the 'origin' variable.
 
   'userdata' is  the new value  of the user  data string, which  will be
   stored back  into the GETLOG file  (regardless of the value  of 'rc').
   The  maximum  size  of  'userdata'   depends  on  the  length  of  the
   userid@node; for  a 80-bytes userid@node,  about 40 bytes of  data are
   available, which should be enough for most applications.
 
   The default exit  just compares the various parameters  to the SYSVARS
   thresholds MAXGET and MAXGETK, unconditionally letting postmasters and
   GETWAIVE people through.  Additionally, NADs are not  subjected to the
   'file size' test.  Finally, the first GET request issued  on any given
   day may exceed the MAXGETK threshold. See the code for more details.
*/
 
/* Do NOT alter this first section */
 Address COMMAND
 Parse arg origin totf totk #blocks fn ft filelist,giveto,userdata
 destination = Word(giveto origin,1) /* Actual destination */
'GLOBALV SELECT LISTSERV GET POSTMASTER MAXGET MAXGETK GETQWAIVE'
 GETQWAIVE = GETQWAIVE postmaster
 
/* The following code is yours to configure */
 
/* GETQWAIVE as ORIGINATOR or DESTINATION bypasses the test */
 If Find(GETQWAIVE,origin) ^== 0 |,
    Find(GETQWAIVE,destination) ^== 0 Then Signal Ok
 
 If totf ^< maxget Then Call Sorry 'too many files (more than' maxget') today. Y
 
 If totf ^== 0 & totk+#blocks ^< maxgetk Then
    If #blocks ^< maxgetk
     Then If origin = destination
           Then Call Sorry 'Sorry, the file you are attempting to order exceeds
           Else Call Sorry 'Sorry, the file you are attempting to give exceeds t
     Else Call Sorry 'too much data today (more than' maxgetk'Kb, counting the f
 
/* Otherwise it's ok */
 Signal Ok
 
Ok:
 /* The next two lines are for debugging purposes */
 /* Call LSVTELL postmaster,'LSV$GETQ: Entering Ok subroutine' */
 /* Call LSVTELL postmaster,'LSV$GETQ:' origin fn ft filelist */
Push date('O')  Substr(time(),1,5)  Substr(fn,1,8)  Substr(ft,1,8) origin
'EXECIO 1 DISKW' filelist 'GETSTATS A'
 Exit 0 userdata
 
Sorry:
 Parse arg message,options
 If Find(options,'NADOK') ^== 0 Then If LSVNAD(origin) Then Exit 0
 If origin = destination
  Then hdr = 'Sorry, you have ordered'
  Else hdr = 'Sorry,' destination 'has been sent'
 If Find(options,'NOHDR') == 0 Then message = hdr message
 Call LSVLTELL origin,message
 Exit 1 userdata
 
When:
 mm = (1455-Time('M'))%15*15
 If mm < 60 Then Return mm 'minutes'
 hh = mm%60
 mm = mm//60
 If mm = 0 Then Return hh'h'
 Return hh'h'mm

ATOM RSS1 RSS2