From: MERC::"uunet!WKUVX1.BITNET!DSJ-Mgr" 21-DEC-1992 09:16:15.76 To: galaxy::gleeve CC: Subj: DECEMBER92.NETNFO $! ------------------ CUT HERE ----------------------- $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))' $! $! This archive created by VMS_SHARE Version 8.1 $! On 1-DEC-1992 07:49:14.97 By user GOATHUNTER (@WKUVX1.BITNET) $! $! The VMS_SHARE software that created this archive $! was written by Andy Harper, Kings College London UK $! -- September 1992 $! $! Credit is due to these people for their original ideas: $! James Gray, Michael Bednarek $! $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER $! AND EXECUTE AS A COMMAND PROCEDURE ( @name ) $! $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING: $! 1. NETINFO.COM;1 $! $set="set" $set symbol/scope=(nolocal,noglobal) $f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID")) $e="write sys$error ""%UNPACK"", " $w="write sys$output ""%UNPACK"", " $ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!" $ ve=f$getsyi("version") $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start $ e "-E-OLDVER, Must run at least VMS 4.4" $ v=f$verify(v) $ exit 44 $unpack: subroutine ! P1=filename, P2=checksum, P3=attributes $ if f$search(P1) .eqs. "" then $ goto file_absent $ e "-W-EXISTS, File ''P1' exists. Skipped." $ delete 'f'* $ exit $file_absent: $ if f$parse(P1) .nes. "" then $ goto dirok $ dn=f$parse(P1,,,"DIRECTORY") $ w "-I-CREDIR, Creating directory ''dn'" $ create/dir 'dn' $ if $status then $ goto dirok $ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped." $ delete 'f'* $ exit $dirok: $ w "-I-UNPACK, Unpacking file ''P1'" $ n=P1 $ if P3 .nes. "" then $ n=f $ if .not. f$verify() then $ define/user sys$output nl: $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='n' PROCEDURE GetHex LOCAL x1,x2;x1:=INDEX(t,ERASE_CHARACTER(1))-1;x2:=INDEX(t, ERASE_CHARACTER(1))-1;RETURN 16*x1+x2;ENDPROCEDURE; PROCEDURE SkipPartsep LOOP EXITIF INDEX(ERASE_LINE,"-+-+-+-+-+-+-+-+")=1; ENDLOOP;ENDPROCEDURE; PROCEDURE ExpandChar CASE CURRENT_CHARACTER FROM ' ' TO 'z' ["`"] :ERASE_CHARACTER(1);COPY_TEXT(ASCII(GetHex));[" "]:ERASE_CHARACTER(1);[ OUTRANGE,INRANGE]:MOVE_HORIZONTAL(1);ENDCASE;ENDPROCEDURE; PROCEDURE ProcessLine s:=ERASE_CHARACTER(1);LOOP EXITIF CURRENT_OFFSET>=LENGTH( CURRENT_LINE);ExpandChar;ENDLOOP;IF s="V" THEN APPEND_LINE;ENDIF;ENDPROCEDURE; PROCEDURE AdvanceLine MOVE_HORIZONTAL(-CURRENT_OFFSET);MOVE_VERTICAL(1); ENDPROCEDURE;PROCEDURE Decode POSITION(BEGINNING_OF(b));LOOP EXITIF MARK(NONE)= END_OF(b);IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep; ELSE ProcessLine;AdvanceLine;ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME, "UNPACK");SET(SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:= GET_INFO(COMMAND_LINE,"file_name");b:=CREATE_BUFFER(f,f);Decode;WRITE_FILE(b, GET_INFO(COMMAND_LINE,"output_file"));QUIT; $ if p3 .eqs. "" then $ goto dl $ open/write fdl &f $ write fdl "RECORD" $ write fdl P3 $ close fdl $ w "-I-CONVRFM, Converting record format to ", P3 $ convert/fdl=&f &f-1 &P1 $dl: delete 'f'* $ if P2 .eqs. "" then $ goto ckskip $ checksum 'P1' $ if checksum$checksum .nes. P2 then $ - e "-E-CHKSMFAIL, Checksum of ''P1' failed." $ exit $ckskip: e "-W-CHKSUMSKIP, checksum validation unavailable for ''P1'" $ endsubroutine $start: $! $ create 'f' X$`20PROGRAM`20=`20"`20NETINFO`20V2.0`20" X$`20LOG`20:=`20WRITE`20SYS$OUTPUT`20F$TIME()+PROGRAM+ X$`20ON`20WARNING`20THEN`20GOTO`20SOS X$! X$!`20NETINFO`20VERSION`202.0`20-`20AUGUST`201992 X$! X$!`20BY:`20JOHN`20MCMAHON X$!`20`20`20`20`20TGV,`20INCORPORATED X$!`20`20`20`20`20PHONE:`20`20800-848-3440 X$!`20`20`20`20`20E-MAIL:`20MCMAHON@TGV.COM X$! X$!`20DCL`20VERSION`20BASED`20ON`20EARLIER`20WORKS`20BY`20JOHN`20MCMAHON X$!`20THAT`20WERE`20DEVELOPED`20UNDER`20CONTRACT`20TO`20THE`20ADVANCED X$!`20DATA`20FLOW`20TECHNOLOGY`20OFFICE`20(NASA`20GODDARD`20SPACE X$!`20FLIGHT`20CENTER)`20AND`20THE`20COSMIC`20BACKGROUND`20EXPLORER X$!`20SCIENCE`20DATA`20ROOM`20PROJECT`20(NASA`20GODDARD`20SPACE`20FLIGHT X$!`20CENTER) X$! X$!`20SUGGESTED`20BY`20A`20SAMPLE`20PROGRAM`20IN`20A`20DEC`20SEMINAR X$!`20ON`20"NETWORK`20SECURITY" X$! X$!`20INSTALLING`20THIS`20PROGRAM: X$! X$!`201)`20PERMANENT`20NETSERVERS`20SHOULD`20BE`20TURNED`20OFF`20BY X$!`20`20`20`20ISSUING`20THE`20COMMAND: X$! X$!`20`20`20`20DEFINE/SYSTEM/EXEC`20NETSERVER$TIMEOUT`20"0" X$! X$!`20`20`20`20IN`20THE`20SYSTEM`20STARTUP`20PROCEDURE. X$! X$!`202)`20THE`20GLOBAL`20SYMBOL`20NETSERVER$COMMAND`20SHOULD X$!`20`20`20`20BE`20DEFINED`20IN`20THE`20SYSTEM`20LOGIN`20PROCEDURE X$!`20`20`20`20AS:`20 X$! X$!`20`20`20`20NETSERVER$COMMAND`20:==`20@DISK:`5BDIRECTORY`5DTHIS-PROCEDURE X$! X$!`203)`20THE`20PROTECTION`20ON`20THE`20COMMAND`20PROCEDURE`20SHOULD`20BE: X$!`20`20`20`20(S:RE,O:RE,G:E,W:E) X$! X$!`20NOTE:`20THIS`20SOFTWARE`20IS`20PROVIDED`20AS-IS,`20THE`20AUTHOR`20AND`20H VIS`20EMPLOYERS X$!`20ASSUME`20NO`20RESPONSIBILTY`20FOR`20THE`20USE,`20LOSSES`20FROM`20THE`20US VE,`20OR`20RELIABILITY X$!`20OF`20THIS`20SOFTWARE. X$! X$`20LOG`20"WRITTEN`20AUGUST`201992`20BY`20JOHN`20MCMAHON" X$! X$!`20THIS`20ONLY`20WORKS`20FOR`20NETWORK`20PROCESSES X$! X$`20IF`20F$MODE()`20.NES.`20"NETWORK" X$`20THEN X$`09LOG`20"EXITING`20-`20THIS`20IS`20NOT`20A`20NETWORK`20PROCESS" X$`20`09EXIT X$`20ENDIF X$! X$!`20USEFUL`20THINGS`20TO`20DO`20FIRST... X$! X$!`20(NOTE`20J) X$! X$`20DEFINE`20FAL$LOG`201`20!`20FAL`20DEBUGGING`20LOGICAL`20THAT X$`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20!`20REPORTS`20FILENAMES V`20BEING`20ACCESSED X$! X$!`20SAVE`20THE`20NETSERVER`20FILES`20FROM`20RANDOM`20PURGING X$! X$!`20AN`20ALTERNATE`20TECHNIQUE`20WOULD`20BE`20TO`20RENAME`20FILES`20TO`20AN X$!`20ALTERNATE`20DIRECTORY X$! X$!`20(NOTE`20H) X$! X$`20IF`20F$SEARCH("SYS$LOGIN:NETSERVER.LOG")`20.NES.`20"" X$`20THEN X$`09SET`20PROTECTION=(S:RWE,O:RWE,G,W)`20SYS$LOGIN:NETSERVER.LOG.* X$`20ENDIF X$! X$!`20NETSERVER.COM`20VERIFY`20SETTING X$! X$`20NETSERVER$VERIFY`20:==`200`20!`200=OFF,`201=ON X$! X$!`20TABLE`20OF`20OBJECTS`20REGISTERED`20IN`20NCP X$! X$!`20`09THIS`20IS`20A`20SUBSET`20OF`20THE`20OBJECTS`20THAT`20DO`20NOT`20HAVE V`20PROCESSES X$!`20`09ASSOCIATED`20WITH`20THEM`20(EXAMPLE:`20IGNORE`20REMACP`20AND`20SMISERV VER) X$! X$!`09THIS`20INFORMATION`20WAS`20RETRIEVED`20USING`20THE`20NCP`20COMMAND X$!`09NCP>`20SHOW`20KNOWN`20OBJECTS X$! X$`20OBJECTTABLE_0`20`20`20=`20"MOM,NICONFIG,TASK" X$`20OBJECTTABLE_17`20`20=`20"FAL,SUBMIT/REMOTE"`09!`20File`20Access X$`20OBJECTTABLE_18`20`20=`20"HLD" X$`20OBJECTTABLE_19`20`20=`20"NML"`09`09!`20NCP`20Commands X$`20OBJECTTABLE_25`20`20=`20"MIRROR" X$`20OBJECTTABLE_26`20`20=`20"EVL" X$`20OBJECTTABLE_27`20`20=`20"MAIL"`09`09!`20Electronic`20Mail X$`20OBJECTTABLE_29`20`20=`20"PHONE"`09`09!`20Phone X$`20OBJECTTABLE_51`20`20=`20"VPM"`09`09!`20Monitor X$`20OBJECTTABLE_63`20`20=`20"DTR" X$! X$!`20GET`20THE`20NCB`20OUT`20OF`20THE`20SYS$NET`20LOGICAL`20NAME X$! X$`20NETINFO_NCB`20=`20F$TRNLNM("SYS$NET") X$! X$!`20(NOTE`20A) X$! X$!`20GET`20THE`20REMOTE`20NODENAME`20AND`20USERNAME X$! X$!`09NODENAME`20IS`20PRIOR`20TO`20THE`20FIRST`20COLON`20 X$! X$`20NETINFO_NODENAME`20=`20F$ELEMENT(0,":",NETINFO_NCB) X$! X$!`20(NOTE`20B) X$! X$!`09EXTRACT`20THE`20STRING`20BETWEEN`20THE`20"="`20AND`20THE`20"/" X$!`09THIS`20IS`20THE`20USERNAME X$! X$`20WORK_STRING`20=`20F$ELEMENT(1,"=",NETINFO_NCB) X$`20NETINFO_USERNAME`20=`20F$ELEMENT(0,"/",WORK_STRING) X$! X$!`20(NOTE`20C) X$! X$!`20GET`20THE`20LOCAL`20LINK`20NUMBER,`20OPTIONAL`20INFO, X$!`20OBJECT`20FORMAT`20AND`20OBJECT`20NUMBER X$! X$!`09EXTRACT`20THE`20STRING`20AFTER`20THE`20"/" X$!`09THIS`20SIMPLIFIES`20LOCATING`20THINGS`20BECAUSE X$!`09WE`20AREN'T`20DEALING`20WITH`20A`20RANDOM`20LENGTH X$!`09USERNAME`20OR`20NODENAME X$! X$!`09BYTES`200-1`20`20IS`20THE`20LINK`20NUMBER X$!`09BYTE`20`202`20`20`20`20IS`20THE`20OPTIONAL`20INFO`20LENGTH X$!`09BYTES`203-18`20IS`20THE`20OPTIONAL`20INFO X$!`09BYTE`20`2019`20`20`20IS`20THE`20OBJECT`20FORMAT X$!`09BYTE`20`2020`20`20`20IS`20THE`20OBJECT`20NUMBER X$! X$`20WORK_STRING`20=`20F$ELEMENT(1,"/",NETINFO_NCB) X$`20NETINFO_LINK_NUMBER`20=`20F$CVUI(0,16,WORK_STRING)`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 X$`20NETINFO_OPTIONAL_INFO_LENGTH`20=`20F$CVUI(0,8,`20F$EXTRACT(2,1,WORK_STRING V)`20) X$`20NETINFO_OPTIONAL_INFO`20=`20F$EXTRACT(3,16,WORK_STRING)`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20`20 X$!`20(NOTE`20D) X$`20NETINFO_OBJECT_FORMAT`20=`20F$CVUI(0,8,`20F$EXTRACT(19,1,WORK_STRING)`20) V`20`20`20`20`20`20 X$`20NETINFO_OBJECT_NUMBER`20=`20F$CVUI(0,8,`20F$EXTRACT(20,1,WORK_STRING)`20) X$! X$!`20CONVERT`20THE`20OPTIONAL_INFO`20INTO`20HEX X$! X$`20NETINFO_OPTIONAL_INFO_HEX`20=`20"" X$`20COUNT`20=`200 X$`20LOOP: X$`09BYTE`20=`20F$EXTRACT(COUNT,1,NETINFO_OPTIONAL_INFO) X$!`20(NOTE`20G) X$`09NETINFO_OPTIONAL_INFO_HEX`20=`20- X`20`20`20`20`20`20`20`20NETINFO_OPTIONAL_INFO_HEX`20+- X`20`20`20`20`20`20`20`20F$FAO(`20"!2XL",F$CVUI(0,8,BYTE)`20) X$`09COUNT`20=`20COUNT`20+`201 X$`09IF`20COUNT`20.LT.`2016`20THEN`20GOTO`20LOOP X$`20ENDLOOP:`09 X$! X$!`20IF`20THE`20OBJECT`20FORMAT`20IS`201,`20THEN`20GET`20THE`20OBJECT`20NAME X$!`20LENGTH`20AND`20THE`20OBJECT`20NAME`20 X$! X$!`09BYTE`2021`20IS`20THE`20OBJECT`20NAME`20LENGTH X$!`09BYTE`2022`20BEGINS`20THE`20OBJECT`20NAME X$!`20 X$`20NETINFO_OBJECT_NAME_LENGTH`20=`200 X$`20NETINFO_OBJECT_NAME`20=`20"" X$`20IF`20NETINFO_OBJECT_FORMAT`20.EQ.`201 X$`20THEN X$`09NETINFO_OBJECT_NAME_LENGTH`20=`20F$CVUI(0,8,`20F$EXTRACT(21,1,WORK_STRING) V) X$!`20(NOTE`20E) X$`09NETINFO_OBJECT_NAME`20=`20- X`20`20`20`20`20`20`20`20`20F$EXTRACT(22,NETINFO_OBJECT_NAME_LENGTH,WORK_STRING V) X$`20ENDIF X$! X$!`20IF`20THE`20OBJECT`20NUMBER`20CAN`20BE`20MAPPED`20TO`20A`20KNOWN`20NAME, X$!`20THEN`20DO`20SO X$! X$`20NETINFO_KNOWN_OBJECT_NAME`20=`20"" X$`20IF`20F$TYPE(OBJECTTABLE_'NETINFO_OBJECT_NUMBER')`20.EQS.`20"STRING"`20 X$`20THEN X$`09NETINFO_KNOWN_OBJECT_NAME`20=`20OBJECTTABLE_'NETINFO_OBJECT_NUMBER' X$`20ENDIF X$! X$!`20WHAT'S`20MY`20LOCAL`20PID,`20USERNAME,`20PROCESS`20AND`20NODENAME`20? X$! X$`20NETINFO_PID`20=`20F$GETJPI(0,"PID") X$`20NETINFO_LOCAL_USERNAME`20=`20F$GETJPI(0,"USERNAME") X$`20NETINFO_LOCAL_PROCESSNAME`20=`20F$GETJPI(0,"PRCNAM") X$`20NETINFO_LOCAL_NODENAME`20=`20F$GETSYI("NODENAME") X$! X$!`20FORMAT`20THE`20OPCOM`20MESSAGE`20SIMILAR`20TO`20THE`20SECURITY`20ALARM X$! X$!`09THE`20REQUEST`20VERB`20ONLY`20TAKES`20LINES`20UP`20TO`20(ABOUT)`20255`20C VHARACTERS X$!`09SO`20WE`20SEND`20THE`20DATA`20AS`20TWO`20MESSAGES,`20APPROXIMATELY`20200 V`20BYTES X$!`09EACH. X$! X$`20WALL_CLOCK`20=`20F$TIME() X$!`20(NOTE`20F) X$`20NETINFO_OUTPUT`20=`20- X`20`20`20F$FAO("!AS-`20NETWORK`20LOGIN`20REPORT!/EVENT`20TIME:!_!_!AS!/",PROGR VAM,WALL_CLOCK) X$`20NETINFO_OUTPUT`20=`20NETINFO_OUTPUT`20+`20- X`20`20`20F$FAO("PID:!_!_!_!AS!_PROCESS`20NAME:!_!AS!/",- X`20`20`20NETINFO_PID,NETINFO_LOCAL_PROCESSNAME) X$`20NETINFO_OUTPUT`20=`20NETINFO_OUTPUT`20+`20- X`20`20`20F$FAO("LOCAL`20USERNAME:!_!_!AS!/",NETINFO_LOCAL_USERNAME) X$`20NETINFO_OUTPUT`20=`20NETINFO_OUTPUT`20+`20- X`20`20`20F$FAO("LOCAL`20NODENAME:!_!_!AS!/",NETINFO_LOCAL_NODENAME) X$! X$!`09THE`20SECURITY`20ALARM`20INCLUDES`20THE`20REMOTE`20NODENUMBER. X$!`09THIS`20CANNOT`20BE`20RETRIEVED`20WITHOUT X$!`09SYSPRV`20(VIA`20AN`20INDEXED`20DCL`20READ`20INTO`20SYS$SYSTEM:NETNODE_REM VOTE.DAT),`20 X$!`09SO`20WE`20DON'T`20DO`20IT. X$! X$`20NETINFO_OUTPUT`20=`20NETINFO_OUTPUT`20+`20- X`20`20`20F$FAO("REMOTE`20NODENAME:!_!AS!/",NETINFO_NODENAME) X$`20NETINFO_OUTPUT`20=`20NETINFO_OUTPUT`20+`20- X`20`20`20F$FAO("REMOTE`20USERNAME:!_!AS!/",NETINFO_USERNAME) X$! X$!`09FEED`20THE`20FORMATTED`20TEXT`20TO`20REQUEST X$! X$`20LOG`20"SENDING`20MESSAGE`201,`20LENGTH=",F$LENGTH(NETINFO_OUTPUT) X$`20REQUEST/TO=(NETWORK,SECURITY)`20"''NETINFO_OUTPUT'"`20!`20FIRST`20MESSAGE X$! X$!`09DO`20IT`20AGAIN`20WITH`20THE`20REST`20OF`20THE`20DATA X$! X$`20NETINFO_OUTPUT2`20=`20- X`20`20`20F$FAO("!AS-`20NETWORK`20LOGIN`20REPORT`20(CONTINUED)!/EVENT`20TIME:!_ V!_!AS!/",- X`20`20`20PROGRAM,WALL_CLOCK) X$`20NETINFO_OUTPUT2`20=`20NETINFO_OUTPUT2`20+`20- X`20`20`20F$FAO("PID:!_!_!_!AS!_PROCESS`20NAME:!_!AS!/",- X`20`20`20NETINFO_PID,NETINFO_LOCAL_PROCESSNAME) X$`20NETINFO_OUTPUT2`20=`20NETINFO_OUTPUT2`20+`20- X`20`20`20F$FAO("LOCAL`20LINK`20NUMBER:!_!SL!/",NETINFO_LINK_NUMBER) X$`20NETINFO_OUTPUT2`20=`20NETINFO_OUTPUT2`20+`20- X`20`20`20F$FAO("OBJECT`20NUMBER:!_!_!SL",NETINFO_OBJECT_NUMBER) X$`20IF`20NETINFO_KNOWN_OBJECT_NAME`20.NES.`20""`20THEN`20- X`20`20`20NETINFO_OUTPUT2`20=`20NETINFO_OUTPUT2`20+`20- X`20`20`20F$FAO("`20(!AS)",NETINFO_KNOWN_OBJECT_NAME) X$`20NETINFO_OUTPUT2`20=`20NETINFO_OUTPUT2`20+`20F$FAO("!/") X$`20IF`20NETINFO_OBJECT_NAME`20.NES.`20""`20THEN`20- X`20`20`20NETINFO_OUTPUT2`20=`20NETINFO_OUTPUT2`20+`20- X`20`20`20F$FAO("OBJECT`20NAME:!_!_!AS!/",NETINFO_OBJECT_NAME) X$`20LOG`20"SENDING`20MESSAGE`202,`20LENGTH=",F$LENGTH(NETINFO_OUTPUT2) X$`20REQUEST/TO=(NETWORK,SECURITY)`20"''NETINFO_OUTPUT2'"`20!`20SECOND`20MESSAG VE`20 X$! X$!`20DUMP`20ALL`20OF`20THE`20NETINFO`20SYMBOLS`20INTO`20NETSERVER.LOG X$! X$`20LOG`20"DUMPING`20CURRENT`20NETINFO`20SYMBOLS" X$`20SHOW`20SYMBOL`20NETINFO* X$! X$!`20ANY`20SPECIAL`20PROCESSING`20COULD`20GO`20HERE X$! X$!`20"CARTWRIGHT"`20IS`20USED`20AS`20AN`20EXAMPLE`20LOCAL`20USERNAME`20HERE. X$! X$!`20(NOTE`20K) X$! X$!`20EXAMPLE`20OF`20DISABLING`20FILE`20ACCESS`20FOR`20A`20PARTICULAR`20USER X$! X$!`20IF`20(NETINFO_LOCAL_USERNAME`20.EQS.`20"CARTWRIGHT")`20.AND.`20- X$!`20`20`20`20(NETINFO_KNOWN_OBJECT_NAME`20.EQS.`20"FAL")`20 X$!`20THEN X$!`09WRITE`20SYS$OUTPUT`20"ACCESS`20TO`20FAL`20DENIED`20FOR`20USER`20CARTWRIGH VT" X$!`09LOGOUT/FULL X$!`20ENDIF X$! X$!`20(NOTE`20M) X$! X$!`20EXAMPLE`20OF`20DISABLING`20SUBMIT/REMOTE`20ACCESS`20FOR`20A`20PARTICULAR V`20USER X$! X$!`20IF`20(NETINFO_LOCAL_USERNAME`20.EQS.`20"CARTWRIGHT")`20.AND.`20- X$!`20`20`20`20(NETINFO_KNOWN_OBJECT_NAME`20.EQS.`20"FAL")`20 X$!`20THEN X$!`09DEFINE`20SYS$BATCH`20"$NOT$A$REAL$BATCH$QUEUE$NAME$" X$!`09WRITE`20SYS$OUTPUT`20"ACCESS`20TO`20SUBMIT/REMOTE`20DENIED`20FOR`20USER V`20CARTWRIGHT" X$!`20ENDIF X X$!`20(NOTE`20N) X$! X$!`20EXAMPLE`20OF`20DISABLING`20OBJECT`20ZERO`20ACCESS`20FOR`20A`20PARTICULAR V`20USER X$!`20ADDITIONAL`20CODE`20COULD`20BE`20ADDED`20TO`20TEST`20FOR`20"DIGITAL-RESER VVED"`20OBJECTS X$!`20(EXAMPLE:`20$MOM)`20IF`20YOU`20STILL`20WANT`20THOSE`20OBJECTS`20TO`20WORK V X$! X$!`20IF`20(NETINFO_LOCAL_USERNAME`20.EQS.`20"CARTWRIGHT")`20.AND.`20- X$!`20`20`20`20(NETINFO_OBJECT_NUMBER`20.EQ.`200)`20 X$!`20THEN X$!`09WRITE`20SYS$OUTPUT`20"ACCESS`20TO`20OBJECT`20ZERO`20DENIED`20FOR`20USER V`20CARTWRIGHT" X$!`09LOGOUT X$!`20ENDIF X$! X$`20LOG`20"NORMAL`20EXIT" X$`20EXIT X X$`20SOS: X$! X$!`20IF`20A`20WARNING`20(OR`20WORSE)`20OCCURS,`20WE`20BOUNCE`20TO`20HERE X$! X$`20SAVE_STATUS`20=`20$STATUS X$`20REQUEST/TO=(NETWORK,SECURITY)`20- X`20`20`20"''PROGRAM'`20-`20ABNORMAL`20EXIT,`20STATUS=''SAVE_STATUS'" X$`20LOG`20"ABNORMAL`20EXIT,`20STATUS="+SAVE_STATUS X$`20EXIT`20'SAVE_STATUS $ call unpack NETINFO.COM;1 1395659386 "" $ v=f$verify(v) $ exit