From: jonathan@ucsvc.ucs.unimelb.edu.au
Newsgroups: news.software.anu-news
Subject: NEWSSKIM_ALT.3-OF-7
Date: 15 Oct 92 03:09:01 GMT
Organization: The University of Melbourne

-+-+-+-+-+-+-+-+ START OF PART 3 -+-+-+-+-+-+-+-+
X$`20`20`20then
X$`20`20`20`20`20Fail_msg1`20=`20"%NEWSNNTP-F-BADPARAM,`20#N`20parameter`20must
V`20be`20P1."
X$`20`20`20`20`20goto`20`20ABORT
X$`20`20`20endif
X$`20`20`20if`20p2`20.eqs.`20""
X$`20`20`20then
X$`20`20`20`20`20Fail_msg1`20=`20"%NEWSNNTP-F-NONODE,`20No`20NODE`20specified
V`20to`20NEWSNNTP."
X$`20`20`20`20`20goto`20`20ABORT
X$`20`20`20else
X$`20`20`20`20`20Node`20=`20p2
X$`20`20`20endif
X$`20`20`20if`20p3`20.eqs.`20""
X$`20`20`20then
X$`20`20`20`20`20Fail_msg1`20=`20"%NEWSNNTP-F-NOPROTOCOL,`20No`20PROTOCOL`20spe
Vcified`20to`20NEWSNNTP."
X$`20`20`20`20`20goto`20`20ABORT
X$`20`20`20else
X$`20`20`20`20`20Protocol`20=`20p3
X$`20`20`20endif
X$`20`20`20NNTPman`09`20`20`20`20`20`20=`201
X$`20`20`20Asynchronous_NNTP`20=`200
X$`20`20`20if`20Process_Name`20.nes.`20"NNTP_''Node'"
X$`20`20`20then
X$`20`20`20`20`20set`20noon
X$`20`20`20`20`20set`20process`20/name="NNTP_''Node'"
X$`20`20`20`20`20if`20$status`20.eq.`20notset`20`20then`20`20goto`20`20EXIT_DOO
VR
X$`20`20`20`20`20set`20on
X$`20`20`20endif
X$`20`20`20RETURN
X$`20endif
X$
X$`20goto`20`20GET_PARAM
X$
X$`20RETURN`09!`20Safety`20net.
X$
X$!----------------------------------------------------------------------------
V--
X$!`20`20Extract`20any`20items`20MAILed`20to`20NEWSMGR.
X$
X$DO_EXTRACT_MAIL:
X$
X$`20gosub`20`20Check_Stop
X$
X$`20say`20"%Extracting`20any`20news`20items`20MAILed`20to`20NEWSMGR`20at`20''f
V$time()'"
X$`20set`20noon
X$`20mail
Xset`20folder`20newmail
Xextract`20/all`20/noheaders`20NEWS_MANAGER:NEWMAIL.MAIL
Xdelete`20/all
Xexit
X$`20set`20on
X$
X$`20RETURN
X$
X$!----------------------------------------------------------------------------
V--
X$!`20`20Determine`20if`20available`20disk`20space`20is`20low`20or`20even`20too
V`20low`20to`20add`20batches.
X$
X$CHECK_DISK_SPACE:
X$
X$`20Disk_Space_Problem`20=`200`09`09!`20`20Presume`20A-OK.
X$`20Freeblocks`20=`20f$getdvi`20("NEWS_DEVICE","FREEBLOCKS")
X$`20subject`20=`20"%NEWSSKIM`20WARNING:`20NEWS_DEVICE`20has`20only`20''Freeblo
Vcks'`20blocks`20free"
X$
X$`20if`20Freeblocks`20.lt.`20Disk_Warning_Limit`20`20then`20`20Disk_Space_Prob
Vlem`20=`202
X$
X$`20if`20Freeblocks`20.lt.`20Disk_Suspend_Limit
X$`20then
X$`20`20`20subject`20=`20subject`20+`20"`20-`20ALL`20ADD`20ACTIVITY`20STOPPED"
X$`20`20`20Disk_Space_Problem`20=`201
X$`20endif
X$
X$`20if`20Disk_Space_Problem`20.gt.`200
X$`20then
X$`20`20`20mail`20NL:`20SYS_ALARM_MAIL`20/subject="''subject'."`09!`20SITE-SPEC
VIFIC`20username
X$`20`20`20say`20subject
X$`20endif
X$
X$`20RETURN
X$
X$!----------------------------------------------------------------------------
V--
X$!`20`20Try`20to`20make`20some`20room`20on`20disk`20if`20there`20is`20a`20spac
Ve`20problem.
X$
X$CLEAN_UP_DISK:
X$
X$`20say`20"%Newsskim`20attempting`20to`20cleanup`20disk`20at`20''f$time()'"
X$`20set`20noon
X$`20delete`20/nolog`20NEWS_MANAGER:OLDNEWS.BATCH;*
X$`20purge`20`20/nolog`20NEWS_MANAGER:*.LOG
X$`20purge`20`20/nolog`20NEWS_ROOT:*.LOG
X$`20set`20on
X$
X$`20gosub`20`20Check_Disk_Space
X$`20if`20Disk_Space_Problem`20.gt.`200`20`20then`20`20gosub`20`20SKIM_CHECK
X$`20if`20Skim_News`20`20then`20`20gosub`20`20Do_Skim_News
X$
X$`20gosub`20`20Check_Disk_Space
X$`20if`20Disk_Space_Problem
X$`20then
X$`20`20`20Fail_msg1`20=`20"%NEWSSKIM`20ABORTING`20DUE`20TO`20LACK`20OF`20DISK
V`20SPACE`20"`20+`20-
X`09`09"(''Freeblocks'`20"blocks`20remaining)"
X$`20`20`20mail`20NL:`20SYS_ALARM_MAIL`20/subject="''Fail_msg1'"`09!`20SITE-SPE
VCIFIC`20username
X$`20`20`20goto`20`20ABORT
X$`20endif
X$
X$`20RETURN
X$
X$!----------------------------------------------------------------------------
V--
X$!`20`20Govern`20the`20flow`20of`20news`20by`20restricting`20the`20size`20of
V`20all`20batches`20added`20at`20any
X$!`20`20one`20time.
X$
X$GUVNING:`20`20SUBROUTINE
X$
X$`20limit`20=`2010000`09`09!`20Limit`20in`20disk`20blocks
X$`20used`20`20=`200
X$
X$`20set`20noon
X$`20rename`20NEWS_MANAGER:'p1'.BATCH;*`20NEWS_MANAGER:'p1'.WAITING;
X$`20set`20on
X$
X$CYCLE:
X$`20if`20(f$search`20("NEWS_MANAGER:''p1'.WAITING;")`20.eqs.`20"")`20.or.`20-
X`20`20`20`20`20(used`20.ge.`20limit)`20`20then`20`20EXIT
X$
X$`20rename`20NEWS_MANAGER:'p1'.WAITING;`20NEWS_MANAGER:'p1'.BATCH;
X$`20used`20=`20used`20+`20f$file_attributes`20("NEWS_MANAGER:''p1'.BATCH;","EO
VF")
X$`20goto`20`20CYCLE
X$
X$`20EXIT`09`09!`20Safety`20net.
X$`20ENDSUBROUTINE
X$
X$!----------------------------------------------------------------------------
V--
X$!`20`20Add`20news`20items`20from`20various`20sources:`20raw`20extracted`20MAI
VL`20files;
X$!`20`20news`20batch`20files;`20NNTP`20batch`20files.
X$
X$DO_ADD_NEWS:
X$
X$`20gosub`20`20Check_Stop
X$`20if`20Disk_Space_Problem`20`20then`20`20RETURN
X$
X$`20if`20f$search`20("NEWS_MANAGER:RETRY.BATCH")`20.nes.`20""
X$`20then
X$`20`20`20say`20"%Adding`20RETRY`20BATCH`20files`20to`20news`20database`20at
V`20''f$time()'"
X$`20`20`20if`20Guvner`20`20then`20`20call`20`20GUVNING`20`20retry
X$`20`20`20news`20/noscreen`20add`20file`20/retry`20NEWS_MANAGER:RETRY.BATCH;*
X$`20`20`20gosub`20`20Check_Stop
X$`20`20`20set`20noon
X$`20`20`20rename`20/log`20NEWS_MANAGER:RETRY.BATCH;*`20NEWS_MANAGER:OLDNEWS.BA
VTCH;
X$`20`20`20set`20on
X$`20`20`20New_News`20=`201
X$`20endif
X$
X$`20if`20f$search`20("NEWS_MANAGER:NEWMAIL.MAIL")`20.nes.`20""
X$`20then
X$`20`20`20say`20"%Adding`20raw`20extracted`20MAIL`20files`20to`20news`20databa
Vse`20at`20''f$time()'"
X$`20`20`20news`20/noscreen`20add`20file`20NEWS_MANAGER:NEWMAIL.MAIL;*
X$`20`20`20gosub`20`20Check_Stop
X$`20`20`20set`20noon
X$`20`20`20rename`20/log`20NEWS_MANAGER:NEWMAIL.MAIL;*`20NEWS_MANAGER:OLDMAIL.M
VAIL;
X$`20`20`20set`20on
X$`20`20`20New_News`20=`201
X$`20endif
X$
X$`20if`20(f$search`20("NEWS_MANAGER:N*.BATCH",NNTP_Batch_Search)`20.nes.`20"")
V
X$`20then
X$`20`20`20say`20"%Adding`20waiting`20news`20BATCH`20files`20to`20news`20databa
Vse`20at`20''f$time()'"
X$`20`20`20set`20noon
X$`20`20`20rename`20/nolog`20NEWS_MANAGER:NNTP*.BATCH;*`20NEWS_MANAGER:NEWS.BAT
VCH;
X$`20`20`20set`20on
X$`20`20`20if`20Guvner`20`20then`20`20call`20`20GUVNING`20`20news
X$`20`20`20news`20/noscreen`20add`20file`20NEWS_MANAGER:NEWS.BATCH;*
X$`20`20`20gosub`20`20Check_Stop
X$`20`20`20set`20noon
X$`20`20`20rename`20/log`20NEWS_MANAGER:NEWS.BATCH;*`20NEWS_MANAGER:OLDNEWS.BAT
VCH;
X$`20`20`20set`20on
X$`20`20`20New_News`20=`201
X$`20endif
X$
X$`20set`20noon
X$`20if`20f$search`20("NEWS_MANAGER:OLDNEWS.BATCH")`20.nes.`20""
X$`20then
X$`20`20`20purge`20`20/nolog`20/keep=40`09`09`20`20`20`20`20`20NEWS_MANAGER:OLD
VNEWS.BATCH
X$`20`20`20delete`20/nolog`20/modified`20/before=YESTERDAY`20NEWS_MANAGER:OLDNE
VWS.BATCH;*
X$`20endif
X$`20if`20f$search`20("NEWS_MANAGER:OLDMAIL.MAIL")`20.nes.`20""
X$`20then
X$`20`20`20purge`20`20/nolog`20/keep=10`09`09`20`20`20`20`20`20NEWS_MANAGER:OLD
VMAIL.MAIL
X$`20`20`20delete`20/nolog`20/modified`20/before=YESTERDAY`20NEWS_MANAGER:OLDMA
VIL.MAIL;*
X$`20endif
X$`20set`20on
X$
X$`20if`20.not.`20New_News`20`20then`20`20say`20"%No`20new`20news`20items`20to
V`20add`20to`20news`20database."
X$
X$`20if`20f$search`20("NEWS_MANAGER:*.WAITING;")`20.eqs.`20""`20`20then`20`20Gu
Vvner`20=`200`20`20!`20All`20done
X$
X$`20RETURN
X$
X$!----------------------------------------------------------------------------
V--
X$!`20`20Skim`20the`20NEWS`20database.`20`20News`20items`20in`20some`20SITE-SPE
VCIFIC`20newsgroups`20are
X$!`20`20archived`20before`20the`20main`20Skim.
X$
X$DO_SKIM_NEWS:
X$
X$`20gosub`20`20Check_Stop
X$
X$`20say`20"%Skimming`20the`20news`20database`20at`20''f$time()'"
X$`20news`20/noscreen
Xskim`20/nodirectories`20/nonewsgroups`20/noserved`20/nohistory`20/nofilecheck
V`20/nofiles`20-
X`20`20`20`20`20/items`20/archive=news_archive:aus_aarnet.arc`20`20aus.aarnet
Xskim`20/nodirectories`20/nonewsgroups`20/noserved`20/nohistory`20/nofilecheck
V`20/nofiles`20-
X`20`20`20`20`20/items`20/archive=news_archive:aus_comms.arc`20`20aus.comms
Xskim`20/nodirectories`20/nonewsgroups`20/noserved`20/nohistory`20/nofilecheck
V`20/nofiles`20-
X`20`20`20`20`20/items`20/archive=news_archive:comp_os_vms.arc`20`20comp.os.vms
V
Xskim`20/nodirectories`20/nonewsgroups`20/noserved`20/nohistory`20/nofilecheck
V`20/nofiles`20-
X`20`20`20`20`20/items`20/archive=news_archive:anu_news.arc`20`20news.software.
Vanu-news
Xskim`20/nodirectories`20/nonewsgroups`20/noserved`20/nohistory`20/nofilecheck
V`20/nofiles`20-
X`20`20`20`20`20/items`20/archive=news_archive:vmsnet.arc`20`20vmsnet.*
Xskim`20/noserved`20/history=30
Xexit
X$
X$`20Skim_News`20=`200`09`09!`20Done`20!
X$
X$!`20`20Record`20last`20successful`20skim`20...
X$
X$`20close`20/nolog`20stamp
X$`20open`20/write`20stamp`20NEWS_MANAGER:TIMESTAMP_SKIM.DAT
X$`20write`20stamp`20date_today
X$`20close`20/nolog`20stamp
X$`20purge`20/nolog`20NEWS_MANAGER:TIMESTAMP_SKIM.DAT
X$
X$`20RETURN
X$
X$!----------------------------------------------------------------------------
V--
X$!`20`20Get`20the`20addresses`20for`20MAIL`20and`20NNTP`20for`20the`20node`20i
Vf`20they`20exist.
X$!`20`20These`20are`20contained`20in`20the`20SITE-SPECIFIC`20file`20NEWS_MANAG
VER:NODE_INFO.DAT
X$!`20`20which`20has`20the`20following`20format:
X$!
X$!`20#`09node_name`20`20mail_address`20`20network_nodename_or_address`20`20#
V`20comments
X$!`20#`20`20`20where
X$!`20#`09node_name`20is`20the`20name`20used`20to`20identify`20the`20node`20to
V`20the`20NEWSSKIM`20job;
X$!`20#`09mail_address`20is`20the`20address`20used`20if`20MAIL`20is`20the`20del
Vivery`20mechanism;
X$!`20#`09network_nodename_or_address`20`20is`20the`20Internet`20name`20or`20nu
Vmeric`20address
X$!`20#`09`20`20(for`20TCP/IP)`20or`20DECnet`20nodename`20or`20number`20(for
V`20DECnet)`20if`20NNTP`20is
X$!`20#`09`20`20the`20delivery`20mechanism;`20e.g.`20mits.com.au`20or`20144.205
V.5.2`20for`20TCP/IP,
X$!`20#`09`20`20or`20wehik`20or`208216`20for`20DECnet.
X$!`20#`09"#"`20indicates`20a`20comment`20follows.
X$!`20#`20`20`20Entries`20are`20otherwise`20free`20format`20on`20single`20lines
V`20only.
X$!`20#`20`20`20If`20an`20address`20entry`20is`20"NL:"`20then`20the`20newsfeed
V`20to`20the`20node`20is`20currently
X$!`20#`20`20`20disabled,`20and`20no`20attempt`20to`20transfer`20news`20is`20re
Vquired`20at`20this`20time.
X$!`20#`20`20`20Some`20sample`20entries`20follow.
X$!`20#------------------------------------------------------------------------
V----
X$!`20#`20Node`20`20`20`20MAIL`20Address`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20NNTP`20Address`20`20`20`20
V`20`5BComment`5D
X$!`20#`20----`20`20`20`20------------`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20------------`20`20`20`20`20
V`20-------
X$!`20#
X$!`20ariel`20`20`20`20`20"IN%""rnews@ariel.its.unimelb.EDU.AU"""`20`20ariel.it
Vs.unimelb.EDU.AU
X$!`20INSTED`20`20`20`20INSTED::NEWSMGR`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20INSTED`20`20#`20NNTP`20via`20DECnet
X$!`20LICRA`20`20`20`20`20LICR::NEWSMGR`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20licr.ludwig.EDU.AU
X$!`20RENOIR`20`20NL:`20`20NL:`20#`20Newsfeed`20temporarily`20disabled`20-`20ba
Vd`20disk`20on`20RENOIR`2021-Sep
X$!`20###`20RENOIR`20`20`20`20RENOIR::NEWSMGR`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20RENOIR`20`20#`20NNTP`20via`20DECnet
X$
X$GET_ADDRESS:
X$
X$`20close`20/nolog`20info
X$`20open`20info`20NEWS_MANAGER:NODE_INFO.DAT`20/read`20/error=FILE_ERROR
X$`20Mail_Address`20=`20""
X$`20NNTP_Address`20=`20""
X$
X$LOOP:
X$`20read`20info`20Node_Data`20/end=END_LOOP`20/error=END_LOOP
X$`20on`20warning`20`20then`20`20goto`20`20ADDR_ERROR
X$`20Node_Data`20=`20f$edit`20(Node_Data,"COMPRESS,UNCOMMENT,TRIM,UPCASE")
X$`20if`20f$extract`20(0,1,Node_Data)`20.eqs.`20"#"`20`20then`20`20goto`20`20LO
VOP`09!`20Comment`20only.
X$`20Space`20=`20f$locate`20("`20",Node_Data)
X$`20This_Node`20=`20f$extract`20(0,Space,Node_Data)
X$`20if`20This_Node`20.nes.`20Node`20`20then`20`20goto`20`20LOOP
X$`20Node_Data`20=`20f$extract`20(Space+1,f$length(Node_Data)-Space-1,Node_Data
V)
X$`20Space`20=`20f$locate`20("`20",Node_Data)
X$`20Mail_Address`20=`20f$extract`20(0,Space,Node_Data)
X$`20Node_Data`20=`20f$extract`20(Space+1,f$length(Node_Data)-Space-1,Node_Data
V)
X$`20Space`20=`20f$locate`20("`20",Node_Data)
X$`20NNTP_Address`20=`20f$extract`20(0,Space,Node_Data)
X$`20if`20(MAIL_Address`20.eqs.`20"")`20.or.`20(NNTP_Address`20.eqs.`20"")`20
V`20then`20`20goto`20ADDR_ERROR
X$END_LOOP:
X$`20on`20warning`20`20then`20`20goto`20`20ABORT
X$`20close`20/nolog`20info
X$`20RETURN
X$
X$ADDR_ERROR:
X$`20say`20"%Error`20in`20Address`20file`20entry`20for`20node`20''Node'."
X$`20goto`20`20END_LOOP
X$
X$FILE_ERROR:
X$`20Fail_msg1`20=`20"%NEWSSKIM`20ERROR:`20CANNOT`20OPEN`20Node`20Address`20Fil
Ve."
X$`20goto`20`20ABORT
X$
X$`20RETURN`09!`20Safety`20net.
X$
X$!----------------------------------------------------------------------------
V--
X$!`20`20Send`20any`20News`20items`20to`20given`20nodes`20by`20MAIL,`20either
V`20within`20this`20job
X$!`20`20(synchronously)`20or`20by`20submitting`20an`20asynchronous`20job`20to
V`20do`20it.
X$!`20`20Search`20for`20all`20directories`20of`20the`20form`20NEWS_MANAGER:POST
V_<node>.DIR.
X$!`20`20Send`20all`20batch`20files`20in`20the`20node-specific`20directory`20to
V`20the`20remote`20node.
X$!`20`20Delete`20each`20batch`20file`20in`20the`20directory`20after`20successf
Vul`20transfer.
X$
X$DO_POST_NEWS:
X$
X$`20if`20Postman
X$`20then
X$`20`20`20say`20"%Checking`20for`20news`20to`20send`20to`20''Node'`20via`20MAI
VL`20at`20''f$time()'"
X$`20else
X$`20`20`20say`20"%Checking`20for`20news`20to`20send`20to`20other`20sites`20via
V`20MAIL`20at`20''f$time()'"
X$`20endif
X$
X$`20Failure_Limit`20=`202
X$`20Batch_Count`20`20`20=`200
X$
X$DIR_SEARCH:
X$`20on`20warning`20`20then`20`20goto`20`20ABORT
X$
X$`20Xfer_Failure`20=`200
X$
X$`20if`20Postman
X$`20then
X$`20`20`20Post_Dir`20=`20f$search`20("NEWS_MANAGER:POST_''Node'.DIR")
X$`20`20`20if`20Post_Dir`20.eqs.`20""
X$`20`20`20then
X$`20`20`20`20`20Fail_msg1`20=`20"%NEWSPOST:`20ERROR`20-`20no`20post`20director
Vy`20for`20node`20''Node'"
X$`20`20`20`20`20goto`20`20ABORT
X$`20`20`20endif
X$`20else
X$`20`20`20Post_Dir`20=`20f$search`20("NEWS_MANAGER:POST_*.DIR",Node_Search)
X$`20`20`20if`20Post_Dir`20.eqs.`20""`20`20then`20`20RETURN
X$`20`20`20Node`20=`20f$parse`20(Post_Dir,,,"NAME","SYNTAX_ONLY")`20-`20"POST_"
V
X$`20endif
X$
X$`20gosub`20`20Get_Address
X$`20if`20MAIL_Address`20.eqs.`20""`09`09!`20`20Unknown`20node.
X$`20then
X$`20`20`20Mail_Subject`20=`20"%NEWSPOST`20Alarm:`20MAIL`20XFER_FAILURE:`20''No
+-+-+-+-+-+-+-+-  END  OF PART 3 +-+-+-+-+-+-+-+-