]>
git.ipfire.org Git - people/stevee/network.git/blob - src/ppp/dialer
2 ###############################################################################
4 # IPFire.org - A linux based firewall #
5 # Copyright (C) 2012 IPFire Network Development Team #
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. #
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. #
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/>. #
20 ###############################################################################
22 LOG_FACILITY
=$
(basename ${0})
24 # Do not print any log messages because these may be sent to the modem.
25 LOG_DISABLE_STDOUT
="true"
27 .
/usr
/lib
/network
/functions
29 # Read network settings
32 log DEBUG
"dialer called with arguments: $@"
34 # The zone is an optional argument.
38 # If we have the zone information, we will
39 # load the zone configuration.
40 if zone_exists
${ZONE}; then
41 zone_settings_read
"${ZONE}"
44 # The default speaker settings is on.
45 at_speaker
=${AT_SPEAKER_ON}
47 # The default dial method is tone dial.
48 at_dial
=${AT_TONE_DIAL}
50 # Initalize the commandline
53 # If we are running in debug mode, we start chat with the
54 # verbose flag as well.
55 if enabled DEBUG
; then
56 commandline
="${commandline} -v"
59 # Create a temporary chat script file.
61 commandline
="${commandline} -f ${file}"
63 # Helper function to write beatiful lines to
66 printf "%-30s %s\n" "$@" >> ${file}
69 ### Write the connect script.
71 # Set the timeout value for the configuration commands to
72 # 3 seconds. This will be increased later.
75 # Let's log everything until we are properly connected.
76 println
"REPORT" "CONNECT"
78 # End the connection, when one of the following conditions
80 for condition
in "BUSY" "NO ANSWER" "NO CARRIER" "NO DIALTONE"; do
81 println
"ABORT" "'${condition}'"
84 # Now, we get to the exciting stuff.
85 # Initalize the modem.
86 println
"''" "${AT_INITIALIZE}"
88 println
"''" "${AT_INITIALIZE}"
90 # End all left over connections by hanging up.
91 println
"OK" "${AT_HANGUP}"
93 # Apply the speaker setting.
94 println
"OK" "${at_speaker}"
98 println
"''" "'AT+CGDCONT=1,\"IP\",\"${APN}\"'"
101 # Enter a 5 seconds break so the modem can setup itself
102 # to the settings we just transmitted to it.
103 for i
in $
(seq 0 5); do
107 # Reset the timeout value to 30 seconds.
110 # Actually dial the number.
111 println
"OK" "${at_dial}${PHONE_NUMBER}"
113 # Wait for the CONNECT string.
114 println
"CONNECT" "\\c"
116 # If login credentials were set, we send them.
117 if isset USERNAME
&& isset PASSWORD
; then
118 println
"ogin:--ogin:" "${USERNAME}"
119 println
"assword:" "${PASSWORD}"
122 # Exec the chat command which will start talking to the modem.
123 log DEBUG
"Exec'ing chat with command line: ${commandline}"
124 exec chat
${commandline}
126 error
"Could not execute chat. Exiting."