Imported Upstream version 0.3.7
[debian/uanytun.git] / etc / init.d / uanytun
1 #! /bin/sh
2 ### BEGIN INIT INFO
3 # Provides:          uanytun
4 # Required-Start:    $remote_fs $network $named $syslog
5 # Required-Stop:     $remote_fs
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 VARRUN_DIR=/var/run/$NAME
17
18 test -x $DAEMON || exit 0
19
20 # Include uanytun defaults if available
21 if [ -f /etc/default/uanytun ] ; then
22   . /etc/default/uanytun
23 fi
24
25 . /lib/lsb/init-functions
26
27 start_vpn () {
28   STATUS="OK"
29   if [ -f $CONFIG_DIR/$VPNNAME/config ] ; then
30     POSTUP=''
31     test -f  $CONFIG_DIR/$VPNNAME/post-up.sh && POSTUP="-x $CONFIG_DIR/$VPNNAME/post-up.sh"
32     CHROOTDIR=`grep '^chroot' < $CONFIG_DIR/$VPNNAME/config | sed 's/chroot\s*//'`
33     if [ -n "$CHROOTDIR" ] ; then
34       test -d $CHROOTDIR || mkdir -p $CHROOTDIR
35     fi
36     test -d $VARRUN_DIR || mkdir -p $VARRUN_DIR
37     DAEMONARG=`sed 's/#.*//' < $CONFIG_DIR/$VPNNAME/config | grep -e '\w' | sed  's/^/--/' | tr '\n' ' '`
38     $DAEMON --write-pid $VARRUN_DIR/$VPNNAME.pid $POSTUP $DAEMONOPTS $DAEMONARG || STATUS="FAILED"
39   else
40     STATUS="no config found"
41   fi
42   echo -n "($STATUS)"
43 }
44 stop_vpn () {
45   kill `cat $PIDFILE` || true
46   rm $PIDFILE
47 }
48
49 set -e
50 case "$1" in
51   start)
52   echo -n "Starting $DESC:"
53   if test -z "$2" ; then
54     if [ -f $CONFIG_DIR/autostart ] ; then
55       for VPNNAME in `sed 's/#.*//'  <  $CONFIG_DIR/autostart | grep -e '\w'`; do
56         echo -n " $VPNNAME"
57         start_vpn
58       done
59     else
60       echo " no config found"
61       exit 1;
62     fi
63   else
64     while shift ; do
65       [ -z "$1" ] && break
66       VPNNAME=$1
67       echo -n " $VPNNAME"
68       start_vpn
69     done
70   fi
71   echo "."
72   ;;
73   stop)
74   echo -n "Stoping $DESC:"
75   if test -z "$2" ; then
76     for PIDFILE in `ls $VARRUN_DIR/*.pid 2> /dev/null`; do
77       VPNNAME=`basename $PIDFILE .pid`
78       echo -n " $VPNNAME"
79       stop_vpn
80     done
81   else
82     while shift ; do
83       [ -z "$1" ] && break
84       if test -e $VARRUN_DIR/$1.pid ; then
85         PIDFILE=`ls $VARRUN_DIR/$1.pid 2> /dev/null`
86         VPNNAME=`basename $PIDFILE .pid`
87         echo -n " $VPNNAME"
88         stop_vpn
89       else
90         echo -n " (failure: No such tunnel is running: $1)"
91       fi
92     done
93   fi
94   echo "."
95   ;;
96   reload)
97   echo -n "Reloading $DESC:"
98   if test -z "$2" ; then
99     for PIDFILE in `ls $VARRUN_DIR/*.pid 2> /dev/null`; do
100       VPNNAME=`basename $PIDFILE .pid`
101       echo -n " $VPNNAME"
102       stop_vpn
103       start_vpn
104     done
105   else
106     while shift ; do
107       [ -z "$1" ] && break
108       if test -e $VARRUN_DIR/$1.pid ; then
109         PIDFILE=`ls $VARRUN_DIR/$1.pid 2> /dev/null`
110         VPNNAME=`basename $PIDFILE .pid`
111         echo -n " $VPNNAME"
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|force-reload)
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