diff --git a/Makefile b/Makefile index a7896ffb..865fce45 100644 --- a/Makefile +++ b/Makefile @@ -372,7 +372,8 @@ $(OUT)/syshst/$(H3TEXT): build/$(H3TEXT) $(OUT)/_mail_/$(NAMES): build/$(NAMES) $(MKDIR) $(OUT)/_mail_ - $(SED) -e 's/%MCHN%/$(MCHN)/' < $< > $@ + $(SED) -e 's/%MCHN%/$(MCHN)/' \ + -e 's/%GW%/$(GW)/' < $< > $@ $(KLH10): cd tools/klh10; \ diff --git a/build/misc.tcl b/build/misc.tcl index cc01e22c..0af7c881 100644 --- a/build/misc.tcl +++ b/build/misc.tcl @@ -222,10 +222,7 @@ expect ":KILL" respond "*" "comsat\033j" respond "*" "\033l.mail.;comsat bin\r" -respond "*" "bughst/$ip\r" -type "domgat/$gw\r" -type "tcpgat/$gw\r" -type "debug/0\r" +respond "*" "debug/0\r" type "xvers/0\r" type "purify\033g" respond ":PDUMP DSK:.MAIL.;COMSAT LAUNCH" "\r" diff --git a/build/names.2010 b/build/names.2011 similarity index 83% rename from build/names.2010 rename to build/names.2011 index 6bdb7b4b..1eb8a18d 100644 --- a/build/names.2010 +++ b/build/names.2011 @@ -25,6 +25,22 @@ (SYS-OPERATING-TROUBLE (EQV-LIST %MCHN%-ADMIN)) (MAGIC-DRAGON-KEEPER (EQV-LIST %MCHN%-ADMIN)) +; Gateways and bug host. To set a value, use (EQV-LIST @host), where +; host is a known host name, or an (octal) Chaosnet address, or +; an IP address such as 192.168.1.1. Remember the @. +; *COMSAT-TCP-GATEWAY sets TCPGAT, which is used for all non-Chaosnet mail. +(*COMSAT-TCP-GATEWAY (EQV-LIST @%GW%)) +; *COMSAT-DOMAIN-GATEWAY sets DOMGAT, which is used as a relay +; for all unknown hostnames. +(*COMSAT-DOMAIN-GATEWAY (EQV-LIST @%GW%)) +; *COMSAT-BUGHOST sets BUGHST: where to send BUG mail which isn't specified +; below. Default is the local host. +; *COMSAT-HEADER-GATEWAY sets HDRGAT, which is used in headers to create +; user%host@HDRGAT headers on outgoing mail through relays. +; *COMSAT-GATEWAY-HOST sets GATHST which is used to set the default +; HDRGAT, TCPGAT, and DOMGAT for Chaos-only hosts. It has no effect on +; Internet-connected hosts. It's better to set the entries above explicitly. + ; Mail maintenance stuff. Do not fuck with this. (BUG-MAIL (EQV-LIST BUG-QMAIL)) (BUG-MAILER (EQV-LIST BUG-QMAIL)) diff --git a/src/sysnet/comsat.585 b/src/sysnet/comsat.586 similarity index 99% rename from src/sysnet/comsat.585 rename to src/sysnet/comsat.586 index 6026a9f3..41945b1e 100644 --- a/src/sysnet/comsat.585 +++ b/src/sysnet/comsat.586 @@ -2296,6 +2296,8 @@ INIT10: CALL SCOPN ; Initialize SC statistics channel. CALL MGCFIX ; Fix whatever. SETOM GCQFLG ; Garbage collect the queues when convenient + CALL MYGTWS ;Set up gateways etc + ; Must initialize Schedule List. This implies setting up ; initial requests for any reminders or network sites which ; are queued. @@ -2307,6 +2309,73 @@ INIT10: CALL SCOPN ; Initialize SC statistics channel. ; sleep... JRST WAKEUP +;; Set up BUGHST, TCPGAT, DOMGAT and GATHST from entries in NAMES. +;; Get each special name, and update the corresponding setting if found. +MYGTWS: PUSH P,EQVTIB ; Save time of EQV file last loaded + CALL EQVCHK ; Update EQV if needed + POP P,A + CAME A,EQVTIB ; Same EQV time? Then do the update + RET ; If different, EQVCHK already called MYGTW0 +; Call here from EQVCHK if EQV was updated. +MYGTW0: MOVE A,[ASCNT [*COMSAT-BUGHOST]] + CALL MYGTW + MOVEM A,BUGHST + MOVE A,[ASCNT [*COMSAT-TCP-GATEWAY]] + CALL MYGTW + MOVEM A,TCPGAT + MOVE A,[ASCNT [*COMSAT-DOMAIN-GATEWAY]] + CALL MYGTW + MOVEM A,TCPGAT + MOVE A,[ASCNT [*COMSAT-GATEWAY-HOST]] + CALL MYGTW + MOVEM B,GATHST + MOVE A,[ASCNT [*COMSAT-HEADER-GATEWAY]] + CALL MYGTW + MOVEM A,HDRGAT + ;; Special hackery for header gw + SKIPN B,HDRGAT + RET + MOVE A,[440700,,GATNAM] ; Is there, get its name for header munging + CALL RESOLV"HSTSRC + JSR AUTPSY ; Better find it if are using it! + RET + +;; Call with ASCNT in A. Returns +1 with address in A, or +2 if no match found. +MYGTW: PUSHAE [B,C,D] + MOVE D,A ;Save arg + MOVE B,[ASCNT [*MSG]] + CALL RCPEQV ;Get LP in A + JRST [ SKIPE DEBUG + PSTAT (,("No "),TC(D),(" found")) + JRST MYGTWZ ] + SKIPE DEBUG + PSTAT (,("Found "),TC(D)) + PUSH P,L ;Save LSE + MOVE L,$ARLOC+EQVAR ;Make it current LSE + FINDA B,[A$RNAM,,[LISTAR(A)+1]] ; Get name + SETZ B, + FINDA C,[A$RHST,,[LISTAR(A)+1]] ; Get host + TDZA C,C ; none + MOVE C,LISTAR(C)+1 ; get its address + SKIPN C + JRST [ PSTAT (,("Warning: "),TC(D),(" defined but no host part given, or unknown host")) + POP P,L + JRST MYGTWZ ] + SKIPN B + JRST MYGTW2 + HLRZ B,LISTAR(B)+1 ;get name part length + SKIPE B + PSTAT (,("Note: Only host part needed for "),TC(d)) +MYGTW2: SKIPE DEBUG + PSTAT (,TC(D),(" name len "),DEC(B),(" host "),HST(C),(" = "),OCT(C)) +MYGTW9: MOVE A,C ;Return its address + POP P,L ;Restore LSE + POPAE [D,C,B] ;and some acs + RET ;and return +1 +MYGTWZ: POPAE [D,C,B] ;Restore some acs + SETZ A, ;No address to return + JRST POPJ1 ; and return +2 (not found) + SUBTTL INIT - Time checking ;;; The following performs follow-up checking on system time, after @@ -2438,7 +2507,7 @@ HN$ML==: HN$LCS==: ; LCS.MIT.EDU mail relay machine ; Magic address to drop into TCPGAT if we're a chaos-only machine. -GATHST: HN$LCS +LVAR GATHST: HN$LCS ; MTMHNG - Time Hanger... called immediately after determining that system ; doesn't know time. If running under DDT, will .VALUE appropriate @@ -3000,6 +3069,7 @@ EQVCH3: CALL EQVGOB ; Attempt compile STAT (,("Note: Backup failed... dying.")) JSR AUTPSY ; Refuse to run without beloved EQV file! EQVCH7: STAT (,("Note: EQV file compiled.")) + CALL MYGTW0 ; Update gateways and BUGHST is case of changes. EQVCH9: POPAE P,[B,A] .CLOSE DKIC, RET @@ -3025,19 +3095,34 @@ EQVCH5: .IOPUSH DKIC, ; Save channel. ;;; EQVBIN/EQVGET - Slurp binary up into core. +LVAR EQVTIB: 0 ;has creation date of last binary file loaded + EQVBIN: PUSH P,A MOVE A,[EQVAR,,EQVFN1] CALL DFGET ; Get compiled EQV data file. JRST POPAJ ; Not there? + CALL EQVGTB ; Keep track of creation date JRST POPAJ1 EQVGET: PUSH P,A ; Same but no erret provision MOVE A,[EQVAR,,EQVFN1] CALL DFGET JSR AUTPSY + CALL EQVGTB ; Keep track of creation date POP P,A RET +;; Get creation date +EQVGTB: .IOPUSH DKIC, + MOVEI A,EQVFN1 + CALL OPNMFI + JSR AUTPSY ; Can't not be there now? + SYSCAL RFDATE,[CIMM DKIC ? CRET A] + JSR SYSLOS + MOVEM A,EQVTIB ;Save it + .IOPOP DKIC, + RET + SUBTTL EQVGOB - Compilation of NAMES > ascii equivalence file @@ -3097,6 +3182,7 @@ EQVG95: FWRITE TMPC,[[No errors detected for file ],6F,EQAFR1,[ ],6F,EQAFR2,[ CALL EQRPUT MOVE A,[EQVAR,,EQVFN1] CALL DFPUT ;write out the LSE + CALL EQVGTB ; Keep track of creation date AOS -6(P) ;won, skip on return EQVG99: POPAE P,[L,E,D,C,B,A] ;return @@ -8469,7 +8555,7 @@ RXPB90: AOS -3(P) RET ;; Kludge -- magic host address which can deal with BUG-RANDOM-PROGRAM -BUGHST: 0 ; If zero, use local host +LVAR BUGHST: 0 ; If zero, use local host SUBTTL RXPERR - send error message after expansion/header.