]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blob - src/initscripts/init.d/connectd
BETA 1!
[people/teissler/ipfire-2.x.git] / src / initscripts / init.d / connectd
1 #!/bin/bash
2 #
3
4 . /etc/sysconfig/rc
5 . ${rc_functions}
6
7 eval $(/usr/local/bin/readhash /var/ipfire/ppp/settings)
8
9 MAX=160
10 ATTEMPTS=0
11 COUNT=0
12 if [ ! $HOLDOFF ]; then
13 HOLDOFF=30
14 fi
15
16 msg_log () {
17 logger -t $(basename $0)[$$] $*
18 }
19
20 msg_log "Connectd ($1) started with PID $$"
21
22
23 if [ -s "/var/ipfire/red/keepconnected" ]; then
24 ATTEMPTS=$(cat /var/ipfire/red/keepconnected)
25 else
26 echo "0" > /var/ipfire/red/keepconnected
27 fi
28
29 case "$1" in
30 start)
31 boot_mesg "Starting connection daemon..."
32 echo_ok
33
34 while [ "$COUNT" -lt "$MAX" ]; do
35 if [ ! -e "/var/ipfire/red/keepconnected" ]; then
36 # User pressed disconnect in gui
37 msg_log "Stopping by user request. Exiting."
38 /etc/rc.d/init.d/network stop red
39 exit 0
40 fi
41 if [ -e "/var/ipfire/red/active" ]; then
42 # Successfully connected in time
43 echo "0" > /var/ipfire/red/keepconnected
44 msg_log "System is online. Exiting."; exit 0
45 fi
46 if ( ! ps ax | grep -q [p]ppd ); then
47 msg_log "No pppd is running. Trying reconnect."
48 break # because pppd died
49 fi
50 sleep 5
51 (( COUNT+=1 ))
52 done
53
54 /etc/rc.d/init.d/network stop red
55
56 (( ATTEMPTS+=1 ))
57 msg_log "Reconnecting: Attempt ${ATTEMPTS} of ${MAXRETRIES}"
58 if [ "${ATTEMPTS}" -ge "${MAXRETRIES}" ]; then
59 echo "0" > /var/ipfire/red/keepconnected
60 if [ "$BACKUPPROFILE" != '' ]; then
61 rm -f /var/ipfire/ppp/settings
62 cp "/var/ipfire/ppp/settings-${BACKUPPROFILE}" /var/ipfire/ppp/settings
63 msg_log "Switched to backup profile ${BACKUPPROFILE}"
64 else
65 msg_log "No backup profile given. Exiting."
66 exit 0
67 fi
68 else
69 echo $ATTEMPTS > /var/ipfire/red/keepconnected
70 sleep ${HOLDOFF}
71 fi
72
73 /etc/rc.d/init.d/network start red &
74 ;;
75
76 reconnect)
77 while ( ps ax | grep -q [p]ppd ); do
78 sleep 2
79 done
80
81 /etc/rc.d/init.d/network restart red &
82 ;;
83
84 *)
85 echo "Usage: $0 {start|reconnect}"
86 exit 1
87 ;;
88 esac
89
90 msg_log "Exiting gracefully connectd with PID $$."