File: connect

package info (click to toggle)
diald 0.99.4-5
  • links: PTS
  • area: main
  • in suites: sarge, woody
  • size: 1,076 kB
  • ctags: 936
  • sloc: ansic: 7,109; tcl: 977; sh: 891; perl: 306; makefile: 110
file content (154 lines) | stat: -rwxr-xr-x 4,172 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#!/bin/sh
# Copyright (c) 1996, Eric Schenk.
# Copyright (c) 1997, 1998 Philippe Troin <phil@fifi.org> for Debian GNU/Linux.
#
# $Id:$
#
# This script is intended to give an example of a connection script that
# uses the "message" facility of diald to communicate progress through
# the dialing process to a diald monitoring program such as dctrl or diald-top.
# It also reports progress to the system logs. This can be useful if you
# are seeing failed attempts to connect and you want to know when and why
# they are failing.
#
# This script requires the use of chat-1.9 or greater for full
# functionality. It should work with older versions of chat,
# but it will not be able to report the reason for a connection failure.

# Configuration parameters

# When debugging a connection, set DEBUG to -v to increase chat's
# verbosity and to report on this script's progress.
# WARNING: THIS MIGHT CAUSE YOUR PASSWORD TO SHOW UP IN THE SYSTEM LOGS
# DEBUG=-v

# The initialization string for your modem
MODEM_INIT="ATZ&C1&D2%C0"

# The phone number to dial
PHONE_NUMBER="5551212"

# If the remote system calls you back, set to 1; otherwise leave to 0.
CALLBACK=0

# If you authentify using PAP or CHAP (that is let pppd handle the 
# authentification, set this to 0.
AUTHENTIFY=1

# The chat sequence to recognize that the remote system
# is asking for your user name.
USER_CHAT_SEQ="name:--name:--name:--name:--name:--name:--name:"

# The string to send in response to the request for your user name.
USER_NAME="USER"

# The chat sequence to recongnize that the remote system
# is asking for your password.
PASSWD_CHAT_SEQ="word:"

# The string to send in response to the request for your password.
PASSWORD="PASSWORD"

# The prompt the remote system will give once you are logged in
# If you do not define this then the script will assume that
# there is no command to be issued to start up the remote protocol.
PROMPT="annex:"

# The command to issue to start up the remote protocol
PROTOCOL_START="ppp"

# The string to wait for to see that the protocol on the remote
# end started OK. If this is empty then no check will be performed.
START_ACK="Switching to PPP."

# Pass a message on to diald and the system logs.
message () {
    if [ "$DEBUG" != "" ]
    then
	[ "$FIFO" != "" ] && echo "message $*" >$FIFO
	logger -p local2.info -t connect "$*"
    fi
}

# Initialize the modem. Usually this just resets it.
message "Initializing Modem"
chat $DEBUG TIMEOUT 5 OK-AT-OK "$MODEM_INIT" TIMEOUT 45 OK ""
if [ $? != 0 ]; then
    message "Failed to initialize modem"
    exit 1
fi

# Dial the remote system.

message "Dialing system"
chat $DEBUG \
	TIMEOUT 45 \
	ABORT "NO CARRIER" \
	ABORT BUSY \
	ABORT "NO DIALTONE" \
	ABORT ERROR \
	"" "ATDT$PHONE_NUMBER" \
	CONNECT "\c"
case $? in
   0) message Connected;;
   1) message "Chat Error"; exit 1;;
   2) message "Chat Script Error"; exit 1;;
   3) message "Chat Timeout"; exit 1;;
   4) message "No Carrier"; exit 1;;
   5) message "Busy"; exit 1;;
   6) message "No DialTone"; exit 1;;
   7) message "Modem Error"; exit 1;;
   *)
esac

# Return here if the script doesn't handle authentification (pppd should).
if [ "$AUTHENTIFY" = 0 ]; then
    exit 0
fi

# We're connected try to log in.
message "Logging in"
chat $DEBUG \
	TIMEOUT 5 \
	"$USER_CHAT_SEQ" "\\q$USER_NAME" \
	TIMEOUT 45 \
	"$PASSWD_CHAT_SEQ" "$PASSWORD"
if [ $? != 0 ]; then
    message "Failed to log in"
    exit 1
fi

# Wait eventually for callback
if [ "$CALLBACK" != 0 ]; then
    message "Waiting for callback"
    chat $DEBUG \
	TIMEOUT 20 \
	RING ATA
    if [ $? != 0]; then
	message "Remote system did not call back"
	exit 1
    fi
fi

# We logged in, try to start up the protocol (provided that the
# user has specified how to do this)

if [ "$PROMPT" != "" ]; then
    message "Starting Comm Protocol"
    chat $DEBUG TIMEOUT 15 "$PROMPT" "$PROTOCOL_START"
    if [ $? != 0 ]; then
        message "Prompt not received"
        exit 1
    fi
fi

if [ "$START_ACK" != "" ]; then
    chat $DEBUG TIMEOUT 15 "$START_ACK" ""
    if [ $? != 0 ]; then
	message "Failed to start Protocol"
	exit 1
    fi
fi

# Success!
message "Protocol started"