mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-28 19:53:09 +02:00
153 lines
4.7 KiB
Diff
153 lines
4.7 KiB
Diff
|
--- ppp-2.4.0b4.orig/scripts/redialer
|
||
|
+++ ppp-2.4.0b4/scripts/redialer
|
||
|
@@ -1,96 +1,69 @@
|
||
|
#!/bin/sh
|
||
|
-###################################################################
|
||
|
#
|
||
|
-# These parameters control the attack dialing sequence.
|
||
|
+# A chatscript that will attempt to dial multiple numbers in sequence, until
|
||
|
+# you get connected.
|
||
|
#
|
||
|
-# Maximum number of attempts to reach the telephone number(s)
|
||
|
-MAX_ATTEMPTS=10
|
||
|
-
|
||
|
-# Delay between each of the attempts. This is a parameter to sleep
|
||
|
-# so use "15s" for 15 seconds, "1m" for 1 minute, etc.
|
||
|
-SLEEP_DELAY=15s
|
||
|
-
|
||
|
-###################################################################
|
||
|
+# To use: edit /etc/peers/provider, and change the connect line to read:
|
||
|
+# connect "/usr/local/bin/redialer"
|
||
|
#
|
||
|
-# This is a list of telephone numbers. Add new numbers if you wish
|
||
|
-# and see the function 'callall' below for the dial process.
|
||
|
-PHONE1=555-1212
|
||
|
-PHONE2=411
|
||
|
+# See below for configuration.
|
||
|
|
||
|
-###################################################################
|
||
|
+# This is a list of chatscripts to use to get connected, and (optional)
|
||
|
+# telephone numbers to call for each of those chatscripts.
|
||
|
#
|
||
|
-# If you use the ppp-on script, then these are passed to this routine
|
||
|
-# automatically. There is no need to define them here. If not, then
|
||
|
-# you will need to set the values.
|
||
|
-#
|
||
|
-ACCOUNT=my_account_name
|
||
|
-PASSWORD=my_password
|
||
|
+# Note that in the chatscripts, you may use #NUMBER#, this will be replaced
|
||
|
+# with the number it is calling. You might want to use this to only have one
|
||
|
+# chatscript that is used for all numbers, or you might need multiple
|
||
|
+# chatscripts.
|
||
|
|
||
|
-###################################################################
|
||
|
-#
|
||
|
-# Function to initialize the modem and ensure that it is in command
|
||
|
-# state. This may not be needed, but it doesn't hurt.
|
||
|
-#
|
||
|
-function initialize
|
||
|
-{
|
||
|
- chat -v TIMEOUT 3 '' AT 'OK-+++\c-OK'
|
||
|
- return
|
||
|
-}
|
||
|
+PHONE1=123456789
|
||
|
+CHAT1=/etc/chatscripts/provider
|
||
|
|
||
|
-###################################################################
|
||
|
-#
|
||
|
-# Script to dial a telephone
|
||
|
-#
|
||
|
-function callnumber
|
||
|
-{
|
||
|
-chat -v \
|
||
|
- ABORT '\nBUSY\r' \
|
||
|
- ABORT '\nNO ANSWER\r' \
|
||
|
- ABORT '\nRINGING\r\n\r\nRINGING\r' \
|
||
|
- '' ATDT$1 \
|
||
|
- CONNECT '' \
|
||
|
- ogin:--ogin: $ACCOUNT \
|
||
|
- assword: $PASSWORD
|
||
|
-#
|
||
|
-# If the connection was successful then end the whole script with a
|
||
|
-# success.
|
||
|
-#
|
||
|
- if [ "$?" = "0" ]; then
|
||
|
- exit 0
|
||
|
- fi
|
||
|
+PHONE2=912345678
|
||
|
+CHAT2=/etc/chatscripts/provider
|
||
|
|
||
|
- return
|
||
|
-}
|
||
|
+PHONE3=891234567
|
||
|
+CHAT3=/etc/chatscripts/provider
|
||
|
|
||
|
-###################################################################
|
||
|
-#
|
||
|
-# Script to dial any telephone number
|
||
|
-#
|
||
|
-function callall
|
||
|
-{
|
||
|
-# echo "dialing attempt number: $1" >/dev/console
|
||
|
- callnumber $PHONE1
|
||
|
-# callnumber $PHONE2
|
||
|
-}
|
||
|
+PHONE4=789123456
|
||
|
+CHAT4=/etc/chatscripts/provider
|
||
|
|
||
|
-###################################################################
|
||
|
-#
|
||
|
-# Initialize the modem to ensure that it is in the command state
|
||
|
-#
|
||
|
-initialize
|
||
|
-if [ ! "$?" = "0" ]; then
|
||
|
- exit 1
|
||
|
-fi
|
||
|
+PHONE5=001234567
|
||
|
+CHAT5=/etc/chatscripts/provider
|
||
|
|
||
|
+# How long to sleep between retries:
|
||
|
#
|
||
|
-# Dial telephone numbers until one answers
|
||
|
-#
|
||
|
+# Note that this is a parameter to sleep so use "15s" for 15 seconds,
|
||
|
+# "1m" for 1 minute, etc
|
||
|
+SLEEP_DELAY=1s
|
||
|
+
|
||
|
+# The code below does the dialing.
|
||
|
+
|
||
|
attempt=0
|
||
|
while : ; do
|
||
|
- attempt=`expr $attempt + 1`
|
||
|
- callall $attempt
|
||
|
- if [ "$attempt" = "$MAX_ATTEMPTS" ]; then
|
||
|
- exit 1
|
||
|
- fi
|
||
|
- sleep "$SLEEP_DELAY"
|
||
|
+ attempt=`expr $attempt + 1`
|
||
|
+ NUMBER=`eval echo '$PHONE'$attempt`
|
||
|
+ CHAT=`eval echo '$CHAT'$attempt`
|
||
|
+ if [ ! "$CHAT" ]; then
|
||
|
+ attempt=0
|
||
|
+ else
|
||
|
+ logger "Dialing attempt number: $attempt"
|
||
|
+ sed s/#NUMBER#/$NUMBER/ $CHAT >/etc/chatscripts/tmpchat
|
||
|
+ /usr/sbin/chat -v -f /etc/chatscripts/tmpchat
|
||
|
+ rm -f /etc/chatscripts/tmpchat
|
||
|
+ case $? in
|
||
|
+ 0) logger Connection established ; exit 0;;
|
||
|
+ 1) logger chat: exit 1, see manpage for details. ; exit 1;;
|
||
|
+ 2) logger chat: exit 2, see manpage for details. ; exit 2;;
|
||
|
+ 3) logger chat: exit 3, see manpage for details. ;;
|
||
|
+ 4) logger Line busy. ;;
|
||
|
+ 5) logger No Carrier. ;;
|
||
|
+ 6) logger A call is coming. Exiting! ; exit 1;;
|
||
|
+ 7) logger No dialtone. ;;
|
||
|
+ 8) logger An error occured. Exiting! ; exit 1;;
|
||
|
+ *) logger chat: exit $?, see manpage for details. ;;
|
||
|
+ esac
|
||
|
+ logger "Waiting $SLEEP_DELAY seconds before next try."
|
||
|
+ sleep $SLEEP_DELAY
|
||
|
+ fi
|
||
|
done
|