;
; This is a script file that demonstrates how
; to establish a PPP connection with a host
; that uses a menu system.
;
; A script file must have a 'main' procedure.
; All script execution starts with this 'main'
; procedure.
;


; Main entry point to script
;
proc main

   ; Change these variables to customize for your
   ; specific Internet service provider

   integer nTries = 3

   ; This is the login prompt and timeout values

   string szLogin = "username:"
   integer nLoginTimeout = 3

   ; This is the password prompt and timeout values

   string szPW = "password:"
   integer nPWTimeout = 3

   ; This is the prompt once your password is verified

   string szPrompt = "annex:"

   ; This is the command to send to establish the 
   ; connection.  This script assumes you only need
   ; to issue one command to continue.  Feel free
   ; to add more commands if your provider requires
   ; it.

   ;
   ; This provider has a menu list like this:
   ;
   ;   1              : Our special GUI
   ;   2              : Establish slip connection
   ;   3              : Establish PPP connection
   ;   4              : Establish shell access
   ;   5              : Download our software
   ;   6              : Exit
   ;
   ;   annex:
   ;

   string szConnect = "3^M"

   ; Set this to FALSE if you don't want to get an IP
   ; address

   boolean bUseSlip = FALSE

   
   ; -----------------------------------------------------


   ; Delay for 2 seconds first to make sure the
   ; host doesn't get confused when we send the
   ; two carriage-returns.

   delay 2
   transmit "^M^M"

   ; Attempt to login at most 'nTries' times

   while 0 < nTries do

      ; Wait for the login prompt before entering
      ; the user ID, timeout after x seconds

      waitfor szLogin then DoLogin 
        until nLoginTimeout

TryAgain:
      transmit "^M"        ; ping
      nTries = nTries - 1

   endwhile

   goto BailOut

DoLogin:
   ; Enter user ID

   transmit $USERID, raw
   transmit "^M"

   ; Wait for the password prompt 

   waitfor szPW until nPWTimeout
   if FALSE == $SUCCESS then
      goto TryAgain
   endif

   ; Send the password

   transmit $PASSWORD, raw
   transmit "^M"

   ; Wait for the prompt

   waitfor szPrompt

   transmit szConnect

   if bUseSlip then
      ; An alternative to the following line is
      ;
      ;     waitfor "Your address is "
      ;     set ipaddr getip
      ;
      ; if we don't know the order of the IP addresses.

      set ipaddr getip 2
   endif
   goto Done

BailOut:
   ; Something isn't responding.  Halt the script
   ; and let the user handle it manually.

   set screen keyboard on
   halt

Done:

endproc


