Imported Upstream version 0.3
[debian/uanytun.git] / etc / init.d / uanytun
1 #! /bin/sh
2 ### BEGIN INIT INFO
3 # Provides:          uanytun
4 # Required-Start:    $network $named $syslog
5 # Required-Stop:     
6 # Default-Start:     2 3 4 5
7 # Default-Stop:      0 1 6
8 # Short-Description: Start anycast tunneling daemon at boot time
9 # Description:       Enables networking over vpn tunnel interfaces
10 ### END INIT INFO
11 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
12 DAEMON=/usr/sbin/uanytun
13 CONFIG_DIR=/etc/uanytun
14 NAME=uanytun
15 DESC=uanytun
16
17 test -x $DAEMON || exit 0
18
19 # Include uanytun defaults if available
20 if [ -f /etc/default/uanytun ] ; then
21   . /etc/default/uanytun
22 fi
23
24 start_vpn () {
25   STATUS="OK"
26   if [ -f $CONFIG_DIR/$NAME/config ] ; then
27     POSTUP=''
28     test -f  $CONFIG_DIR/$NAME/post-up.sh && POSTUP="-x $CONFIG_DIR/$NAME/post-up.sh"
29     CHROOTDIR=`grep '^chroot' < $CONFIG_DIR/$NAME/config | sed 's/chroot\s*//'`
30     if [ -n "$CHROOTDIR" ] ; then
31       test -d $CHROOTDIR || mkdir -p $CHROOTDIR
32     fi
33     DAEMONARG=`sed 's/#.*//' < $CONFIG_DIR/$NAME/config | grep -e '\w' | sed  's/^/--/' | tr '\n' ' '`
34     $DAEMON --write-pid /var/run/uanytun.$NAME.pid $POSTUP $DAEMONARG || STATUS="FAILED"
35   else
36     STATUS="no config found"
37   fi
38   echo -n "($STATUS)"
39 }
40 stop_vpn () {
41   kill `cat $PIDFILE` || true
42   rm $PIDFILE
43 }
44
45 set -e
46 case "$1" in
47   start)
48   echo -n "Starting $DESC:"
49   if test -z "$2" ; then
50     if [ -f $CONFIG_DIR/autostart ] ; then
51       for NAME in `sed 's/#.*//'  <  $CONFIG_DIR/autostart | grep -e '\w'`; do
52         echo -n " $NAME"
53         start_vpn
54       done
55     else
56       echo " no config found"
57       exit 1;
58     fi
59   else
60     while shift ; do
61       [ -z "$1" ] && break
62       NAME=$1
63       echo -n " $NAME"
64       start_vpn
65     done
66   fi
67   echo "."
68   ;;
69   stop)
70   echo -n "Stoping $DESC:"
71   if test -z "$2" ; then
72     for PIDFILE in `ls /var/run/uanytun.*.pid 2> /dev/null`; do
73       NAME=`echo $PIDFILE | cut -c18-`
74       NAME=${NAME%%.pid}
75       echo -n " $NAME"
76       stop_vpn
77     done
78   else
79     while shift ; do
80       [ -z "$1" ] && break
81       if test -e /var/run/uanytun.$1.pid ; then
82         PIDFILE=`ls /var/run/uanytun.$1.pid 2> /dev/null`
83         NAME=`echo $PIDFILE | cut -c18-`
84         NAME=${NAME%%.pid}
85         echo -n " $NAME"
86         stop_vpn
87       else
88         echo -n " (failure: No such tunnel is running: $1)"
89       fi
90     done
91   fi
92   echo "."
93   ;;
94   reload)
95   echo -n "Reloading $DESC:"
96   if test -z "$2" ; then
97     for PIDFILE in `ls /var/run/uanytun.*.pid 2> /dev/null`; do
98       NAME=`echo $PIDFILE | cut -c18-`
99       NAME=${NAME%%.pid}
100       echo -n " $NAME"
101       stop_vpn
102       start_vpn
103     done
104   else
105     while shift ; do
106       [ -z "$1" ] && break
107       if test -e /var/run/uanytun.$1.pid ; then
108         PIDFILE=`ls /var/run/uanytun.$1.pid 2> /dev/null`
109         NAME=`echo $PIDFILE | cut -c18-`
110         NAME=${NAME%%.pid}
111         echo -n " $NAME"
112         stop_vpn
113         start_vpn
114       else
115         echo -n " (failure: No such tunnel is running: $1)"
116       fi
117     done
118   fi
119   echo "."
120   ;;
121   restart)
122     SCRIPT=$0
123     shift
124     $SCRIPT stop $*
125     sleep 1
126     $SCRIPT start $*
127   ;;
128   *)
129   N=/etc/init.d/$NAME
130   echo "Usage: $N {start|stop|restart|reload}" >&2
131   exit 1
132   ;;
133 esac
134
135 exit 0