! "PSI PowerModem IV - 10/12/92   HYC"
!
@ORIGINATE
@ANSWER
!
serreset 19200, 0, 8, 1
!
matchclr
settries 0
matchstr 1 4 "OK\13\10"
@LABEL 1
write "AT&F\13"
matchread 30
inctries
iftries 2 59
jump 1
!
@LABEL 4
pause 5
matchstr 1 5 "OK\13\10"
write "AT&D3&Q6S0=0E0\13"
matchread 30
jump 59
!
@LABEL 5
pause 5
matchstr 1 6 "OK\13\10"
! XYLOGICS -- Changed to allow modem to do V42. 
! No V42 = write "ATS48=128S36=3S95=1X4\13"
write "ATS48=7S36=3S95=1X4\13"
matchread 30
jump 59
!
@LABEL 6
ifstr 2 8 "1"
pause 5
matchstr 1 8 "OK\13\10"
write "ATM0\13"
matchread 30
jump 59
!
@LABEL 8
pause 5
ifANSWER 30
note "Dialing ^1" 3
write "ATDT^1\13"
!
@LABEL 9
matchstr 1 11 "CONNECT 1200\13\10"
matchstr 2 12 "CONNECT 2400\13\10"
matchstr 3 13 "CONNECT 4800\13\10"
matchstr 4 19 "CONNECT 7200\13\10"
matchstr 5 14 "CONNECT 9600\13\10"
matchstr 6 20 "CONNECT 12000\13\10"
matchstr 7 18 "CONNECT 14400\13\10"
matchstr 8 50 "NO CARRIER\13\10"
matchstr 9 50 "ERROR\13\10"
matchstr 10 52 "NO DIALTONE\13\10"
matchstr 11 53 "BUSY\13\10"
matchstr 12 54 "NO ANSWER\13\10"
matchread 700
jump 59
!
@LABEL 11
note "Communicating at 1200 bps." 2
CommunicatingAt 1200
jump 15
!
@LABEL 12
note "Communicating at 2400 bps." 2
CommunicatingAt 2400
jump 15
!
@LABEL 13
note "Communicating at 4800 bps." 2
CommunicatingAt 4800
jump 15
!
@LABEL 19
note "Communicating at 7200 bps." 2
CommunicatingAt 7200
jump 15
!
@LABEL 14
note "Communicating at 9600 bps." 2
CommunicatingAt 9600
jump 15
!
@LABEL 20
note "Communicating at 12000 bps." 2
CommunicatingAt 12000
jump 15
!
@LABEL 18
note "Communicating at 14400 bps." 2
CommunicatingAt 14400
jump 15
!
@LABEL 15
HSReset 0 1 0 0 0 0 
ifANSWER 16
pause 30
@LABEL 16
! XYLOGICS -- Enter Annex security handler with this jump
jump 110
exit 0
!
@LABEL 30
write "ATS0=1\13"
matchstr 1 31 "OK\13\10"
matchread 30
jump 59
!
@LABEL 31
matchstr 1  32 "RING\13\10"
matchstr 2  11 "CONNECT 1200\13\10"
matchstr 3  12 "CONNECT 2400\13\10"
matchstr 4  13 "CONNECT 4800\13\10"
matchstr 5	19 "CONNECT 7200\13\10"
matchstr 6  14 "CONNECT 9600\13\10"
matchstr 7	20 "CONNECT 12000\13\10"
matchstr 8  18 "CONNECT 14400\13\10"
matchstr 9  50 "NO CARRIER\13\10"
matchstr 10	50 "ERROR\13\10"
matchstr 11	52 "NO DIALTONE\13\10"
matchstr 12	53 "BUSY\13\10"
matchstr 13 54 "NO ANSWER\13\10"
matchread 700
jump 31
!
@LABEL 32
userhook 1
note "Answering phone" 2
jump 31
!
! 50: error messages
!
@LABEL 50
exit -6021
!
@LABEL 52
exit -6020
!
@LABEL 53
exit -6022
!
@LABEL 54
exit -6023
!
@LABEL 59
exit -6019
!
! Hang up 
!
@HANGUP
@LABEL 60
settries 0
HSReset 0 0 0 0 0 0 
@LABEL 61
write "ATH\13"
matchclr
matchstr 1 62 "NO CARRIER\13\10"
matchstr 2 62 "OK\13\10"
matchstr 3 62 "ERROR\13\10"
matchread 30
inctries
iftries 3 62
!
write "+++"
matchclr
matchstr 1 61 "OK\13\10"
matchread 15
! 
DTRClear
pause 15
DTRSet
pause 15
jump 61
!
@LABEL 62
! 
pause 15
write "AT&F\13"
matchclr
matchstr 1 63 "OK\13\10"
matchread 30
!
@LABEL 63
pause 5
matchstr 1 64 "OK\13\10"
write "ATS0=0\13"
matchread 20

@LABEL 64
exit 0

@LABEL 110
! XYLOGICS -- Log in through all the current security programs on the annex.
! and start up ARA.  This includes ACP CLI username/password, port password, 
! SECURID Passcode, local security, Access code for nodial, and autobaud.
! It relies upon these assumptions:
!   1) Use standard erpcd/acp_policy.h prompt strings.  If you change them
!      you must change the expect strings.  Each matchstr has a comment to
!      map it to the prompt define when applicable.
!   2) The prompt is unique from the above strings.  IE the annex prompt
!      can't be Annex since it would be a substring of the Annex Username string
!      from acp.  If you change your prompt then fix the matchstr.
!   3) We can't support dialback with this script, so only a direct connect
!      access code will work.
!

! Setup all the possible strings we care about.
matchclr

! ACP_USERPROMPT - ACP user name prompt
matchstr 1 114 "Annex username:"
! ACP_PASSPROMPT - ACP password prompt 
matchstr 2 115 "Annex password:"
! ACP_PERMDENIED - ACP denial
matchstr 3 116 "Permission denied"
! ACP_USERPROMPT - ACP Securid username message
matchstr 5 114 "Username:"
! ACP_PASSPROMPT - ACP passcode message
matchstr 6 118 "Enter PASSCODE"
! ACP_PERMDENIED - ACP Securid deny message
matchstr 8 116 "Access Denied"
! ACP_INCORRECT - Securid deny message #2
matchstr 9 116 "Username/PASSCODE Incorrect"
! ACP_ACCESSCODEPROMPT - ACP dialback message, only nodial suported
matchstr 10 119 "Access Code:"
! ACP_PORTPROMPT - Port Password option from ACP.
matchstr 11 120 "Port password:"
! annex prompt - Looks for annex:.  
matchstr 12 121 "annex:"
! AppleTalk not enabled error message
matchstr 13 122 "CLI: Command not found."
! ARAP starting message
matchstr 14 123 "Switching to ARAP"
! CLI local security, unchangeable by the administrators
matchstr 15 124 "Annex administrator password:"

@LABEL 111
! Settries to 0 for each new token search
settries 0
pause 20

@LABEL 112
! Read for above strings
matchread 30
inctries
iftries 6 113
jump 112

@LABEL 113
! Looped many times, and saw nothing.  Give up
exit -6002 "Annex script failure."

@LABEL 114
! Ask for username and send to server, then back to the state machine
ask 0 "Annex Username:"
write "^*\13" 
jump 111

@LABEL 115
! Get annex password 
ask 1 "Annex Password:"
write "^*\13" 
jump 111

@LABEL 116 
! ACP denial.  Exit with error.  Used by ACP CLI Security and Securid
exit -6002 "Access denied by Annex"

@LABEL 118 
! Get securid PASSCODE
ask 0 "PASSCODE:"
write "^*\13" 
jump 111

@LABEL 119 
! Get Access Code.  Only supports a direct connect access code
ask 0 "Access Code:"
write "^*\13" 
jump 111

@LABEL 120
! Get an send port password
ask 0 "Port Password:"
write "^*\13" 
jump 111

@LABEL 121
! Got to the CLI prompt, send ARAP command
write "arap\13"
jump 111

@LABEL 122 
! Error, arap not enabled on this annex!
exit -6002 "ARAP not enabled on the Annex"

@LABEL 123
! ARA started on cli port.  
exit 0

@LABEL 124
! Get an send port password
ask 0 "Annex Administrators Password:"
write "^*\13" 
jump 111

