.KEY DIAL,USER/K,HOSTNAME/K,POPHOST/K,FORCE/S,SAFER/S,INETD/S,RESET/S,POPONLY/S,STACKONLY/S,EXIT/S,DEBUG/S,TCPARGS/K/F
.BRA {
.KET }
.DEF DIAL new
.DEF USER joe
.DEF HOSTNAME localhost
.DEF POPHOST mail.{DIAL}.nl

; $VER: startnet 1.9 (10.11.97) multi-provider, interactive password, etc, etc, etc.

; **** command line arguments ****************************
; *                                                      *
; *       DIAL/K ... postfix for DIAL and POPARGS files  *
; *       USER/K ... Amiga login name                    *
; *   HOSTNAME/K ... local hostname                      *
; *    POPHOST/K ... AmiPOP POPHost                      *
; *      FORCE/S ... force enter new password            *
; *      SAFER/S ... delete password after use           *
; *      INETD/S ... Start the internet `super server'   *
; *      RESET/S ... Send RESET to AmiTCP                *
; *    POPONLY/S ... (re)start AmiPOP                    *
; *  STACKONLY/S ... start TCP/IP stack, nothing else    *
; *       EXIT/S ... abort shell after use               *
; *      DEBUG/S ... type the DIALSTRING, nothing else   *
; *  TCPARGS/K/F ... optional AmiTCP argument(s)         *
; *                                                      *
; ********************************************************

;--- Login on Amiga
If "$USER" EQ "*$USER"
  Echo "login: {USER}"
EndIf
login -f {USER}
umask 022

If {STACKONLY}
  Skip StartTCP
EndIf

;--- check DIAL exist
If "${DIAL}DIAL" EQ "*${DIAL}DIAL"
  Echo "DIAL *"{DIAL}*" not found"
  Skip Cleanup
EndIf

;--- Ask for password
If {FORCE}
  FileNote >NIL: ENV:{DIAL}DIAL "" ; delete old password
EndIf
If "`List ENV:{DIAL}DIAL LFORMAT %C`" NOT EQ "NOPASSWORD"
  If "`List ENV:{DIAL}DIAL LFORMAT %C`" EQ ""
    Echo "*N{DIAL} password: *E[40;30m" NOLINE
    FileNote >NIL: ENV:{DIAL}DIAL ?
    Echo "*E[40;31m"
  EndIf
EndIf

If {POPONLY}
  Skip StartPOP
EndIf
 
;--- make dialscript
If "`List ENV:{DIAL}DIAL LFORMAT %C`" EQ "NOPASSWORD"
  Echo "${DIAL}DIAL" TO T:DIALSCRIPT
Else
  List TO T:DIALSCRIPT ENV:{DIAL}DIAL LFORMAT "TIMEOUT 1500*NREDIAL BUSY*NREDIALDELAY 50*N${DIAL}DIAL %C"
EndIf
If "${DIAL}DIAL2" NOT EQ "*${DIAL}DIAL2"
  Echo >>T:DIALSCRIPT "${DIAL}DIAL2"
EndIf

If {DEBUG}
  Type T:DIALSCRIPT NUMBER
  Skip Cleanup
EndIf

;--- Start TCP/IP stack
Lab StartTCP
If "$HOSTNAME" NOT EQ "*$HOSTNAME"
  Echo "net still running"
  Skip Cleanup
EndIf

Assign >NIL: TCP: EXISTS
If WARN
  AmiTCP:AmiTCP {TCPARGS} ; Start AmiTCP
  WaitForPort AMITCP
  Mount TCP: FROM AmiTCP:Devs/Inet-Mountlist
Else
  If {RESET}
    rx "address AMITCP; RESET" ; Send "RESET" to AmiTCP
  EndIf
EndIf

;--- Configure loop-back device
ifconfig lo0 {HOSTNAME}

If {STACKONLY}
  Skip SetHostName
EndIf

;--- connect
FailAt 21
online ppp0
If ERROR
  FailAt 10
  Echo "ppp0 not connected to DIAL *"{DIAL}*""
  Skip Cleanup
EndIf
FailAt 10

ifconfig ppp0 $ppp0IPLocal $ppp0IPRemote ; Configure ppp0

route >NIL: add $ppp0IPLocal {HOSTNAME} ; Add route to this host

route >NIL: add default $ppp0IPRemote ; Add route to the default gateway

;--- Start AmiPOP
Lab StartPOP
If "${DIAL}POPARGS" EQ "*${DIAL}POPARGS"
  If {POPONLY}
    Echo "no POPARGS for DIAL *"{DIAL}*""
  EndIf
Else
  If {DEBUG}
    Echo "POPARGS: Password=`List ENV:{DIAL}DIAL LFORMAT %C` ${DIAL}POPARGS POPHost={POPHOST} MailBox=HOME:{DIAL}.mbox Port=110 CX_Popkey=*"ctrl lalt '*" WinX=50 WinY=50"
  Else
    Run >NIL: AmiPOP Password=`List ENV:{DIAL}DIAL LFORMAT %C` ${DIAL}POPARGS POPHost={POPHOST} MailBox=HOME:{DIAL}.mbox Port=110 CX_Popkey="ctrl lalt '" WinX=50 WinY=50
  EndIf
EndIf
If {POPONLY}
  Skip Cleanup
EndIf

Lab SetHostName
If {STACKONLY}
  rx "address AMITCP; SET HOSTNAME '{HOSTNAME}'"
Else
  rx "address AMITCP; SET HOSTNAME Word('`resolve $ppp0IPLocal`',3)"
EndIf
SetEnv HOSTNAME `hostname`

;--- Start servers
If {INETD}
  If NOT "`Status COM=inetd'"
    Echo "super server allready running"
  Else
    Run >NIL: inetd ; Start the internet `super server'
  EndIf
  If NOT "`Status COM=aws:aws'"
    Echo "web server allready running"
  Else
    Run >NIL: aws:aws ; Start the web server
  EndIf
EndIf

Lab Cleanup

Delete >NIL: T:DIALSCRIPT ;remove dialscript

If {SAFER}
  FileNote ENV:{DIAL}DIAL "" ; remove password
EndIf

If {EXIT}
  EndCLI >NIL: ; remove shell
EndIf

Unset TCPNEW
