mirror of
https://github.com/PDP-10/its.git
synced 2026-01-28 12:59:20 +00:00
Added PWORD and PANDA. Set up initial password database.
Did not link sys;atsign hactrn to sysbin;pword bin, so logins are not required.
This commit is contained in:
committed by
Lars Brinkhoff
parent
af866af9c7
commit
d274195213
3
src/acount/-read-.-this-
Executable file
3
src/acount/-read-.-this-
Executable file
@@ -0,0 +1,3 @@
|
||||
This directory is for purposes of the password system.
|
||||
Please do not delete any files on it.
|
||||
--RWK
|
||||
170
src/sysen1/pwfile.60
Normal file
170
src/sysen1/pwfile.60
Normal file
@@ -0,0 +1,170 @@
|
||||
;-*-MIDAS-*-
|
||||
|
||||
subttl PWFILE -- Define format of the password file
|
||||
|
||||
;PRINT VERSION NUMBER
|
||||
.TYO6 .IFNM1
|
||||
.TYO 40
|
||||
.TYO6 .IFNM2
|
||||
PRINTX/ INCLUDED IN THIS ASSEMBLY.
|
||||
/
|
||||
|
||||
pwfile=:pwpage*2000 ; Where we put it
|
||||
|
||||
pwinit==:pwpage*2000 ;time of system invocation for locks feature
|
||||
pwdone=:pwpage*2000+1 ;time of system invocation for locks feature
|
||||
pwlock=:pwpage*2000+2 ;lock. If locked, database is closed for
|
||||
;writing.
|
||||
pwunkl=:pwpage*200+3 ;must be pwlock+1 ... this gets unlink inst.
|
||||
pwlkid=:pwpage*2000+4 ;UIND of job doing the locking
|
||||
pwtime=:pwpage*2000+5 ;time of last update
|
||||
|
||||
pwuhak=:pwpage*2000+11 ;UNAME of last person to update, other than
|
||||
;INIT
|
||||
pwjhak=:pwpage*2000+12 ;JNAME of last person to update, other than
|
||||
;an INIT.
|
||||
pwaccc=:pwpage*2000+13 ;# of times database has been accessed
|
||||
pwordc==:6 ; # of override tables
|
||||
pwordt=:pwpage*2000+14 ; Date override tables are in effect
|
||||
; In halfword disk-date form, 1 date per
|
||||
; halfword.
|
||||
pwcnt=:pwpage*2000+17 ;# of passwords we have in our database, *10
|
||||
|
||||
pwrbfp=:pwpage*2000+20 ;pointer into buffer
|
||||
|
||||
pfgrp=:pwpage*2000+21 ; Default user group
|
||||
|
||||
ddtty0=:pwpage*2000+22 ; 0-43 TTY #'s to get DDT directly.
|
||||
ddtty1=:pwpage*2000+23 ; 44-107 TTY #'s to get DDT directly.
|
||||
dltty0=:pwpage*2000+24 ; 0-43 TTY #'s to not let randoms use
|
||||
dltty1=:pwpage*2000+25 ; 44-107 TTY #'s to not let randoms use
|
||||
|
||||
pwsptr=:pwpage*2000+26 ; AOBJN ptr to free area in PWSTR area.
|
||||
|
||||
atoapl=:pwpage*2000+27 ; -1 ==> Allow applications
|
||||
|
||||
pwgdil=:pwpage*2000+30 ; Dialup restriction for each group, a 1
|
||||
; bit n from the right marks that group as
|
||||
; priveleged. This bit is overridden
|
||||
; by the %PFDIL bit in the individual's flag
|
||||
; word, which says the individual is
|
||||
; priveleged to use the dialups
|
||||
|
||||
pwsgcp=:pwpage*2000+31 ; -1 iff incomplete GC performed.
|
||||
; If incomplete GC has been performed,
|
||||
; it must be done before adding a string.
|
||||
|
||||
pwholp=:pwpage*2000+32 ; -1 ==> Today is a holiday.
|
||||
; Turn this on to ignore time restrictions.
|
||||
|
||||
pwrbfl==:200 ;length of buffer
|
||||
pwrbuf=:pwpage*2000+100 ;password data entry history buffer
|
||||
|
||||
pwgrct=:20 ; # of possible groups
|
||||
pwgrdm=:pwpage*2000+300 ; 1 entry per group
|
||||
dm$wds=:360600,,0 ; 1.1-1.6 When restriction starts, weekday
|
||||
; # of half-hours after midnight
|
||||
; 77 = no restriction
|
||||
dm$sts=:300600,,0 ; 1.7-2.3 When restriction starts, Saturday
|
||||
dm$sns=:220600,,0 ; 2.4-2.9 When restriction starts, Sunday
|
||||
dm$wde=:140600,,0 ; 3.1-3.6 When restriction ends, weekday
|
||||
dm$ste=:060600,,0 ; 3.7-4.3 When restriction ends, Saturday
|
||||
dm$sne=:000600,,0 ; 4.4-4.9 When restriction ends, Sunday
|
||||
|
||||
|
||||
pwgors=:pwpage*2000+320 ; This table contains the override start
|
||||
; times for each of the 20 groups. Each
|
||||
; word is divided into six 6-bit bytes,
|
||||
; one for each override date, and contains
|
||||
; the start time in 1/2 hour past 0000 units
|
||||
pwgore=:pwpage*2000+340 ; Same, override restriction end times.
|
||||
pwgnam=:pwpage*2000+360 ; SIXBIT name of group
|
||||
|
||||
pwstbg==:pwpage*2000+1000 ; Start of string-space AOBJN ptrs
|
||||
; From here to PWSTBG are ptrs into the
|
||||
; database...
|
||||
timmsg=:pwpage*2000+1000 ; Message for each group for logging in
|
||||
; during the wrong time.
|
||||
dilmsg=:pwpage*2000+1020 ; Message for each group for using dialups
|
||||
ovrmsg=:pwpage*2000+1040 ; 20 x 6 table of messages for each group
|
||||
; on each override date
|
||||
pwadmn=:pwpage*2000+1200 ; AOBJN ptr (into string space) of people
|
||||
; who have created/modified accounts
|
||||
lucktb=:pwpage*2000+1201 ; Table of lucky sites that don't get PWORD
|
||||
losers=:pwpage*2000+1202 ; Table of sites we need protection from
|
||||
phone=:pwpage*2000+1203 ; cnt,,offset string phone number for help
|
||||
naplmg=:pwpage*2000+1204 ; Message to print why no applications
|
||||
nocmnd=:pwpage*2000+1205 ; Commands to disable
|
||||
|
||||
pwstln==:205 ; # of strings to update
|
||||
|
||||
pwstpg==:1 ; Page # of string space
|
||||
pwstr=:<pwpage+pwstpg>*2000 ; String Space. This is divided into thre
|
||||
; consing areas, NEW, OLD, and NEXT
|
||||
; When NEW is filled, all pointers into
|
||||
; OLD are copied into NEXT space, which
|
||||
; then becomes the NEW space. The old NEW
|
||||
; space, not suprisingly, becomes the OLD
|
||||
; space. This is done to avoid half-move
|
||||
; strings, to guarantee consistancy at all
|
||||
; times. Strings are pointed to by AOBJN
|
||||
; ptrs, relative to PWSTR. The AOBJN ptrs
|
||||
; are examined and updated only with the
|
||||
; database locked, and are updated only
|
||||
; after any necessary copying is done.
|
||||
; Each consing area is 2 pgs long.
|
||||
pstrln==:4000 ; Length of a string space
|
||||
pistr0==:0
|
||||
pwstr0==:<pwpage+pwstpg>*2000 ; String Space 0
|
||||
pistr1==:pistr0+pstrln
|
||||
pwstr1=:<pwpage+pwstpg>*2000+pstrln ; String Space 1
|
||||
pistr2==:10000
|
||||
pwstr2=:<pwpage+pwstpg>*2000+2*pstrln ; String Space 2
|
||||
|
||||
pdpage==:7 ; Page # of UNAME data in file
|
||||
|
||||
pwdata=:pwpage*2000+16000
|
||||
pwname=:pwpage*2000+16000 ;location of first UNAME entry
|
||||
pwpass=:pwpage*2000+16001 ;location of first password entry
|
||||
pwflag=:pwpage*2000+16002 ;location of first flag entry
|
||||
|
||||
%pf==:1,,525252 ; bit typeout mask
|
||||
%pfnew==:400000 ; This account has never logged in
|
||||
%pfdil==:200000 ; is permitted to use dialups.
|
||||
%pfday==:100000 ; can use it in the daytime.
|
||||
%pfbad==:040000 ; Means that this name shouldn't be able to
|
||||
; log in from loser sites.
|
||||
%pfmsg==:020000 ; Means that he has seen the REFUSE or OFF
|
||||
; message
|
||||
|
||||
pwinfo=:pwpage*2000+16003 ; Various miscellaneous info
|
||||
pi$==:777400,,170677
|
||||
pi$crt==:321200,,0 ; 3.9-4.9 Index into creator table for
|
||||
; who created this account
|
||||
pi$mod==:201200,,0 ; 2.8-3.8 who last modified this account
|
||||
pi$grp==:140400,,0 ; 2.4-2.7 access-control group
|
||||
|
||||
pi$sta==:100400,,0 ; 1.9-2.3 state of this account
|
||||
ps%==:400000,,0 ; typeout mask
|
||||
ps%new==:0 ; Account is nonexistant
|
||||
ps%apl==:1 ; Account is applied for
|
||||
ps%hld==:2 ; Account is being held
|
||||
ps%off==:3 ; Account is turned off
|
||||
ps%rfs==:4 ; Account is refused
|
||||
ps%ok==:5 ; Account is OK
|
||||
ps%sys==:6 ; Account is a system account
|
||||
ps%del==:7 ; Account is being deleted
|
||||
; (should never actually be in file)
|
||||
|
||||
pi$nul==:001000,,0 ; 1.1-1.8 MBZ
|
||||
|
||||
pwdate=:pwpage*2000+16004 ;<creation>,,<login>
|
||||
pd$crt==:222200,,0
|
||||
pd$log==:002200,,0
|
||||
|
||||
pwmod=:pwpage*2000+16005 ;<modification date>,,0
|
||||
pm$mod=:222200,,0
|
||||
|
||||
pwmore=:pwpage*2000+16007 ;this slot reserved for debugging, etc.
|
||||
pwleng==:10 ;entries are 8 long
|
||||
|
||||
145
src/sysen1/pwinit.1
Normal file
145
src/sysen1/pwinit.1
Normal file
@@ -0,0 +1,145 @@
|
||||
;-*-MIDAS-*-
|
||||
|
||||
title initialize PWORD database
|
||||
|
||||
x=:0 ;super temporary
|
||||
a=:1
|
||||
b=:2
|
||||
c=:3
|
||||
d=:4
|
||||
e=:5
|
||||
ct=:6
|
||||
t=:7 ;temporary arithmetic register
|
||||
tt=:10 ;temporary arithmetic register, T+1
|
||||
|
||||
dski=:11
|
||||
dsko=:12
|
||||
lsrc==13 ;channel for LSRTNS
|
||||
|
||||
sp=:17
|
||||
p==:sp
|
||||
|
||||
call=:pushj sp,
|
||||
|
||||
|
||||
DEFINE SYSCAL A,B
|
||||
.CALL [SETZ ? SIXBIT/A/ ? B ((SETZ))] TERMIN
|
||||
|
||||
loc 2000
|
||||
|
||||
buffer: block 2000
|
||||
|
||||
pwpage==buffer/2000
|
||||
|
||||
.insrt SYSEN1;PWFILE >
|
||||
|
||||
pdl: -100,,pdl
|
||||
block 100
|
||||
|
||||
go: move sp,pdl
|
||||
movei a,lsrc ;A <- channel for LSRTNS
|
||||
syscal OPEN,[ %clbit,,.uio ? %climm,,dsko ? [sixbit /DSK/]
|
||||
[sixbit /BIG/] ? [sixbit /DAT/] ? [sixbit /CSTACY/] ]
|
||||
.lose %lsfil
|
||||
move t,[444400,,buffer]
|
||||
setzm pwcnt ;Nothing yet.
|
||||
setom atoapl ;We allow applications
|
||||
setom pwordt ;Set no date override
|
||||
setom pwordt+1
|
||||
setom pwordt+2
|
||||
setom pwinit
|
||||
setom pwdone
|
||||
setzm pwrbfp
|
||||
setom pwgrdm
|
||||
setom pwgrdm+1
|
||||
setom pwgrdm+2
|
||||
setom pwgrdm+3
|
||||
setom pwgrdm+4
|
||||
setom pwgrdm+5
|
||||
setom pwgrdm+6
|
||||
setom pwgrdm+7
|
||||
setom pwgrdm+10
|
||||
setom pwgrdm+11
|
||||
setom pwgrdm+12
|
||||
setom pwgrdm+13
|
||||
setom pwgrdm+14
|
||||
setom pwgrdm+15
|
||||
setom pwgrdm+16
|
||||
setom pwgrdm+17
|
||||
..foo==0
|
||||
irp gr,,[USER,DAY,DIAL,TURIST,GRP.04,GRP.05,GRP.06,GRP.07,GRP.08,GRP.09,GRP.10,GRP.11,GRP.12,GRP.13,GRP.14,GRP.15]
|
||||
move x,[sixbit /gr/]
|
||||
movem x,pwgnam+..foo
|
||||
..foo==..foo+1
|
||||
TERMIN
|
||||
|
||||
.suset [.runame,,pwuhak]
|
||||
.suset [.rjname,,pwjhak]
|
||||
|
||||
move t,[444400,,buffer]
|
||||
movei tt,2000
|
||||
syscal SIOT,[ %climm,,dsko ? t ? tt]
|
||||
.lose %lsfil
|
||||
setzm buffer ; Clear the buffer
|
||||
move x,[buffer,,buffer+1]
|
||||
blt x,buffer+1777
|
||||
move t,[444400,,buffer] ; Write 6 blank pages to disk
|
||||
movei tt,2000
|
||||
syscal SIOT,[ %climm,,dsko ? t ? tt]
|
||||
.lose %lsfil
|
||||
move t,[444400,,buffer]
|
||||
movei tt,2000
|
||||
syscal SIOT,[ %climm,,dsko ? t ? tt]
|
||||
.lose %lsfil
|
||||
move t,[444400,,buffer]
|
||||
movei tt,2000
|
||||
syscal SIOT,[ %climm,,dsko ? t ? tt]
|
||||
.lose %lsfil
|
||||
move t,[444400,,buffer]
|
||||
movei tt,2000
|
||||
syscal SIOT,[ %climm,,dsko ? t ? tt]
|
||||
.lose %lsfil
|
||||
move t,[444400,,buffer]
|
||||
movei tt,2000
|
||||
syscal SIOT,[ %climm,,dsko ? t ? tt]
|
||||
.lose %lsfil
|
||||
move t,[444400,,buffer]
|
||||
movei tt,2000
|
||||
syscal SIOT,[ %climm,,dsko ? t ? tt]
|
||||
.lose %lsfil
|
||||
move t,[444400,,buffer] ; Provide 8 pages of emptyness
|
||||
movei tt,2000
|
||||
syscal SIOT,[ %climm,,dsko ? t ? tt]
|
||||
.lose %lsfil
|
||||
move t,[444400,,buffer]
|
||||
movei tt,2000
|
||||
syscal SIOT,[ %climm,,dsko ? t ? tt]
|
||||
.lose %lsfil
|
||||
move t,[444400,,buffer]
|
||||
movei tt,2000
|
||||
syscal SIOT,[ %climm,,dsko ? t ? tt]
|
||||
.lose %lsfil
|
||||
move t,[444400,,buffer]
|
||||
movei tt,2000
|
||||
syscal SIOT,[ %climm,,dsko ? t ? tt]
|
||||
.lose %lsfil
|
||||
move t,[444400,,buffer]
|
||||
movei tt,2000
|
||||
syscal SIOT,[ %climm,,dsko ? t ? tt]
|
||||
.lose %lsfil
|
||||
move t,[444400,,buffer]
|
||||
movei tt,2000
|
||||
syscal SIOT,[ %climm,,dsko ? t ? tt]
|
||||
.lose %lsfil
|
||||
move t,[444400,,buffer]
|
||||
movei tt,2000
|
||||
syscal SIOT,[ %climm,,dsko ? t ? tt]
|
||||
.lose %lsfil
|
||||
move t,[444400,,buffer]
|
||||
movei tt,2000
|
||||
syscal SIOT,[ %climm,,dsko ? t ? tt]
|
||||
.lose %lsfil
|
||||
.close dsko,
|
||||
.logout 1,
|
||||
|
||||
end go
|
||||
10441
src/sysen1/pword.2661
Normal file
10441
src/sysen1/pword.2661
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user