]> git.ipfire.org Git - people/ms/network.git/blame - src/ppp/dialer
Use autotools.
[people/ms/network.git] / src / ppp / dialer
CommitLineData
6c74a64c
MT
1#!/bin/bash
2###############################################################################
3# #
4# IPFire.org - A linux based firewall #
5# Copyright (C) 2012 IPFire Network Development Team #
6# #
7# This program is free software: you can redistribute it and/or modify #
8# it under the terms of the GNU General Public License as published by #
9# the Free Software Foundation, either version 3 of the License, or #
10# (at your option) any later version. #
11# #
12# This program is distributed in the hope that it will be useful, #
13# but WITHOUT ANY WARRANTY; without even the implied warranty of #
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15# GNU General Public License for more details. #
16# #
17# You should have received a copy of the GNU General Public License #
18# along with this program. If not, see <http://www.gnu.org/licenses/>. #
19# #
20###############################################################################
21
22LOG_FACILITY=$(basename ${0})
23
24# Do not print any log messages because these may be sent to the modem.
25LOG_DISABLE_STDOUT="true"
26
27. /usr/lib/network/functions
28
29log DEBUG "dialer called with arguments: $@"
30
31# The zone is an optional argument.
32ZONE=${1}
33assert isset ZONE
34
35# If we have the zone information, we will
36# load the zone configuration.
37if zone_exists ${ZONE}; then
38 zone_config_read ${ZONE}
39fi
40
41# The default speaker settings is on.
42at_speaker=${AT_SPEAKER_ON}
43
44# The default dial method is tone dial.
45at_dial=${AT_TONE_DIAL}
46
47# Initalize the commandline
48commandline=""
49
50# If we are running in debug mode, we start chat with the
51# verbose flag as well.
52if enabled DEBUG; then
53 commandline="${commandline} -v"
54fi
55
56# Create a temporary chat script file.
57file=$(mktemp)
58commandline="${commandline} -f ${file}"
59
60# Helper function to write beatiful lines to
61# the chat scripts.
62function println() {
63 printf "%-30s %s\n" "$@" >> ${file}
64}
65
66### Write the connect script.
67
68# Set the timeout value for the configuration commands to
69# 3 seconds. This will be increased later.
70println "TIMEOUT" 3
71
72# Let's log everything until we are properly connected.
73println "REPORT" "CONNECT"
74
75# End the connection, when one of the following conditions
76# happens:
77for condition in "BUSY" "NO ANSWER" "NO CARRIER" "NO DIALTONE"; do
78 println "ABORT" "'${condition}'"
79done
80
81# Now, we get to the exciting stuff.
82# Initalize the modem.
83println "''" "${AT_INITIALIZE}"
84println "''" "AT"
85println "''" "${AT_INITIALIZE}"
86
87# End all left over connections by hanging up.
88println "OK" "${AT_HANGUP}"
89
90# Apply the speaker setting.
91println "OK" "${at_speaker}"
92
93# Set the APN if any.
94if isset APN; then
95 println "''" "'AT+CGDCONT=1,\"IP\",\"${APN}\"'"
96fi
97
98# Enter a 5 seconds break so the modem can setup itself
99# to the settings we just transmitted to it.
100for i in $(seq 0 5); do
101 println "''" "\\d"
102done
103
104# Reset the timeout value to 30 seconds.
105println "TIMEOUT" 30
106
107# Actually dial the number.
108println "OK" "${at_dial}${PHONE_NUMBER}"
109
110# Wait for the CONNECT string.
111println "CONNECT" "\\c"
112
113# If login credentials were set, we send them.
114if isset USERNAME && isset PASSWORD; then
115 println "ogin:--ogin:" "${USERNAME}"
116 println "assword:" "${PASSWORD}"
117fi
118
119# Exec the chat command which will start talking to the modem.
120log DEBUG "Exec'ing chat with command line: ${commandline}"
121exec chat ${commandline}
122
123error "Could not execute chat. Exiting."
124exit ${EXIT_ERROR}