..$not::.ascii <000>/NOT/ ; NOTE ..$qui::.ascii <000>/QUI/ ; QUIT ..$rec::.ascii <000>/REC/ ; RECEIVE ..$rem::.ascii <000>/REM/ ; REMOTE ..$ren::.ascii <000>/REN/ ; RENAME ..$rdi::.ascii <000>/RDI/ ; REMOTE DIR ..$sen::.ascii <000>/SEN/ ; SEND ..$ser::.ascii <000>/SER/ ; SERVER ..$set::.ascii <000>/SET/ ; SET ..$sho::.ascii <000>/SHO/ ; SHOW ..$spa::.ascii <000>/SPA/ ; SPACE ..$sys::.ascii <000>/SYS/ ; SYSTEM ..$tak::.ascii <000>/TAK/ ; TAKE ..$tra::.ascii <000>/TRA/ ; TRANSMIT ..$typ::.ascii <000>/TYP/ ; TYPE ..$who::.ascii <000>/WHO/ ; WHO .byte 0,0,0,0 .even .sbttl using onlpat for RSTS/E to patch this .if ne ,0 .ift ! RSTS/E Kermit optional patches ! ! Brian Nelson 30-Mar-84 09:47:07 ! ! ! Example of patching RSTS/E Kermit to disable commands based ! on user programmer number. The effect of the following ! patches is to disallow any user with a programmer number ! greater than 127 (ie, 100,221) to access the commands ! DELETE ,DIRECTORY, ERASE and RENAME. If you would like to ! do this based on project number instead you can patch ! either ...UIC+0 to be the high cutoff point instead of ! patching ...UIC+2, or you can use different project numbers ! for each command by changing the '377' (which is in octal) ! to the desired cutoff point. To restict access to the DIR ! command to users with a project (group) number less than ! (10,*), you would patch ..$DIR byte offset zero from 0 to ! 10. (the '.' is needed to force ONLPAT to use a decimal ! interpretation of the number. ! ! At this time the only other thing you may want to patch is ! location ..DIRP offset zero, which is by default 1. This ! value is checked against the user's project number by the ! DIRECTORY command. If the user's project number is greater ! than this number, the ppn (uic) field for the DIR command ! is zeroed, thus preventing that user from looking at the ! directory listing of ANY other account. The default is to ! restrict the use of ppn's for this command to [1,*] users ! only. The last patch here changes that to include [2,*]. ! ! ! Keep user's with programmer numbers > 127 from using DIR, DEL, REN and ERA. ! ! File to patch? Base address? ...UIC+2 Offset address? 0 Base Offset Old New? ?????? 000000 000000 ? 127. ?????? 000002 041000 ? ^Z Offset address? ^Z Base address? ..$DEL Offset address? -1 Base Offset Old New? ?????? 177777 120 ? ?????? 000000 000 ? 377 ?????? 000001 104 ? ^Z Offset address? ^Z Base address? ..$DIR Offset address? -1 Base Offset Old New? ?????? 177777 114 ? ?????? 000000 000 ? 377 ?????? 000001 104 ? ^Z Offset address? ^Z Base address? ..$ERA Offset address? -1 Base Offset Old New? ?????? 177777 123 ? ?????? 000000 000 ? 377 ?????? 000001 105 ? ^Z Offset address? ^Z Base address? ..$REN Offset address? -1 Base Offset Old New? ?????? 177777 115 ? ?????? 000000 000 ? 377 ?????? 000001 122 ? ^Z Offset address? ^Z Base address? ..DIRP Offset address? 0 Base Offset Old New? ?????? 000000 000001 ? 2 ?????? 000002 ?????? ? ^C .endc .sbttl possibly throttle back non priv users speed .psect $pdata slowgr::.word 2 ; cutoff for group numbers slowdo::.word 0 ; if <> 0, then slow xfers down slowbd::.word 1200. .psect $code ; resume r/o code section throtl::save tst slowdo ; really do this beq 100$ ; no tst pauset ; already a pause set ? bne 100$ ; yes, skip this please call getuic ; get the account number please swab r0 ; get group number in r0 please cmpb r0 ,slowgr ; ignore this user ? blos 100$ ; yes calls ttspeed ,<#ttname> ; get the current transfer rate tst r0 ; failure ? beq 100$ ; skip this in that case cmp r0 ,slowbd ; slow this user down ? K11LCLMAC[.050032]K11LCL.MAC[.050032]    X14|H [4;Ik(&'( k ߫H&P` \RrPP2PPzPP{PPPPP2P~\$\\TD 0D \~ hi) +\ ^( n ^( np\^txY\^ˀ\!kVk<\F˰<˴ˬ\VVkˤ1`@lP ABCDEFGHIJKLMNOPQRSTUVWXYZ$.?0123456789<@<SЬTЬ UQS>?\\\\\\\\\`:#@'="\abcdefghi\\\\\\\jklmnopqr\\\\\\\~stuvwxyz\\\\\\\\\\\\\\\\\\\\\\{ABCDEFGHI\\\\\\}JKLMNOPQR\\\\\\\\STUVWXYZ\\\\\\0123456789\\\\\  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@ggh<i|o<m<4p<p<k|Zn<l fr rwx<x<x<x޺<w@]@@fjnr]Ze@@|> | |v<H|  |  |xz|  |zt f r   < &^ @&@'*/V,"?Lh:hmBmz|z{x`y~|fN|@@|@͂|@ ݃ƃ<ns<|Ŏ |️|ep|u|-@率|<ᄇ2ֻr||ZRM | ntB|xyvZw|J=|R>|J? nnaa|bddf blos 100$ ; no mov r0 ,r1 ; yes, compute delay in seconds clr r0 ; based on baud/(cutoff*4). Thus div slowbd ,r0 ; for 4800 baud, the delay would be asr r0 ; 1 second, reducing the effective asr r0 ; rate to 2400 baud tst r0 ; anything left? bne 10$ ; nothing ? inc r0 ; always compute something 10$: mov r0 ,pauset ; and save it 100$: unsave return global .end