Metropoli BBS
VIEWER: callback MODE: TEXT (ASCII)
#!/bin/bash
#############################################################################
# This is the callback script from ppp-2.3.1 with one little fix and change.
#
# If your service provider uses (c)all (b)ack (c)onfiguration (p)rotocol,
# you have to compile ppp-2.?.? to support cbcp.
#
# Patch ppp-2.?.? to get cbcp support.
# ppp-2.?.?# patch -p1 < README.cbcp
#
# I have no experience with cbcp, but in addition to answering the
# questions below. PHONE=? MODEMPASS=? ACCOUNT=? PASSWORD=?
# You may also have to put this in your /etc/ppp/options file.
#
# Sample /etc/ppp/options file...
#
# lock
# connect "chat -v -f /etc/ppp/callback"
# defaultroute
# noipdefault
# 38400
# modem
# /dev/modem
# crtscts
# debug
# callback "7771818"
#
# Your "phone number" for the callback, include the quotation marks.
#
# pppd       <-Start pppd.)
#
# 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=5551212
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		5				\
	ABORT		'\nBUSY\r'			\
	ABORT		'\nNO ANSWER\r'			\
	ABORT		'\nNO DIALTONE\r'		\
	ABORT		'\nRINGING\r\n\r\nRINGING\r'	\
	''		AT				\
	'OK-+++\c-OK'	'AT&F&C0&D2W2S0=0H0'  		\
	TIMEOUT		45				\
	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
#         45 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		45				\
	ABORT		'\nVOICE\r'			\
	'\nRING\r'	'AT&C1A'			\
	CONNECT		''				\
	TIMEOUT		15				\
	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 "" ATZ
exit 1
[ RETURN TO DIRECTORY ]