#!/bin/sh
###################################################################
#
# Script to dial the remote system, negotiate the connection, and send
# it the id. Then wait for the modem to disconnect. Reset the modem
# to answer mode and wait for the system to call back.
#
# The telephone number and modempass are used when establishing the
# connection to the modem.
#
PHONE=555-1212
MODEMPASS=modem_identifier
#
# Once the modem calls back, the account name and password are used for
# a UNIX style login operation.
#
ACCOUNT=my_account_name
PASSWORD=my_password

###################################################################
#
# Step 1. Dial the modem and negotiate the initial dialog.
#         note: the modem is configured to ignore loss of DCD at this point.
#         it is important that this be performed because the loss of DCD
#         will normally prevent system from working since 'modem' is used
#         for pppd.
#
#         The script is terminated normally when the carrier is lost.
#
chat -v							\
	TIMEOUT		3				\
	ABORT		'\nBUSY\r'			\
	ABORT		'\nNO ANSWER\r'			\
	ABORT		'\nRINGING\r\n\r\nRINGING\r'	\
	''		AT				\
	'OK-+++\c-OK'	'AT&C0&D2S0=0H0'		\
	TIMEOUT		30				\
	OK		ATDT$TELEPHONE			\
	CONNECT		''				\
	assword:	$MODEMPASS			\
	"\nNO CARRIER\r"

if [ "$?" = "0" ]; then

###################################################################
#
# Step 2. Wait for the call back from the remote. This will wait for at most
#         30 seconds for the call back should the first attempt fail or
#         something happen with the callback logic at the remote.
#
#         note: when the callback occurs, the DCD setting is re-enabled.
#
# If some voice call should happen during this period, the system will
# answer the telephone and then hang up on them. I realize that this is
# rude, but there is little that this script can do.
#
  chat -v						\
	TIMEOUT		30				\
	ABORT		'\nVOICE\r'			\
	'\nRING\r'	'AT&C1A'			\
	CONNECT		''				\
	TIMEOUT		10				\
	ogin:--ogin:	$ACCOUNT			\
	TIMEOUT		45				\
	assword:	$PASSWORD

  if [ "$?" = "0" ]; then
    exit 0
  fi
fi

###################################################################
#
# The script has failed. Terminate the connection mode.
#
chat -v TIMEOUT 3 "" AT 'OK-+++\c-OK' 'AT&C1&D2S0=0H0' OK
exit 1
