added executeable scripts
[anytun.git] / etc / init.d / anytun
blob93c56f0a6d796e3fecf1dd572e96dda365018453
1 #! /bin/sh
2 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
3 DAEMON=/usr/sbin/anytun
4 ANYTUNCONFIG=/usr/bin/anytun-config
5 CONTROLDAEMON=/usr/bin/anytun-controld
6 CHROOTDIR='/var/run/anytun'
7 # DAEMONOPTS="--chroot --username nobody --chroot-dir $CHROOTDIR"
8 NAME=anytun
9 DESC=anytun
10 CONFIG_DIR=/etc/anytun
11 VARCONFIG_DIR=/var/run/anytun-controld
13 test -x $DAEMON || exit 0
15 # Include anytun defaults if available
16 if [ -f /etc/default/anytun ] ; then
17 . /etc/default/anytun
20 start_vpn () {
21 STATUS=OK
22 if [ -f $CONFIG_DIR/$NAME/config ] ; then
23 POSTUP=''
24 test -f $CONFIG_DIR/$NAME/post-up.sh && POSTUP="-x $CONFIG_DIR/$NAME/post-up.sh"
25 DAEMONARG=`sed 's/#.*//' < $CONFIG_DIR/$NAME/config | grep -e '\w' | sed 's/^/ --/' | xargs echo`
26 $DAEMON --write-pid /var/run/anytun.$NAME.pid $POSTUP \
27 $DAEMONOPTS $DAEMONARG || STATUS="FAILED"
28 else
29 STATUS="no config found"
31 start_configd
32 echo -n "($STATUS)"
34 stop_vpn () {
35 kill `cat $PIDFILE` || true
36 rm $PIDFILE
37 stop_configd
40 start_configd () {
41 if [ -d $CONFIG_DIR/$NAME/conf.d ] ; then
42 test -d $VARCONFIG_DIR || mkdir -p $VARCONFIG_DIR
43 chmod 700 $VARCONFIG_DIR
44 rm -f $VARCONFIG_DIR/$NAME 2>/dev/null
45 for CLIENTNAME in `ls $CONFIG_DIR/$NAME/conf.d`; do
46 echo -n " ($CLIENTNAME)"
47 DAEMONARG=`sed 's/#.*//' < $CONFIG_DIR/$NAME/conf.d/$CLIENTNAME | grep -e '\w' | sed 's/^/ --/' | xargs echo`
48 $ANYTUNCONFIG $DAEMONARG >> $VARCONFIG_DIR/$NAME
49 done
50 CONTROLHOST=`sed 's/#.*//' < $CONFIG_DIR/$NAME/config | grep -e 'control-host' | sed 's/^/ --/'`
51 $CONTROLDAEMON -f $VARCONFIG_DIR/$NAME $DAEMONOPTS $CONTROLHOST \
52 --write-pid $VARCONFIG_DIR/$NAME.pid
53 # rm -f $VARCONFIG_DIR/$NAME
56 stop_configd () {
57 if [ -d $CONFIG_DIR/$NAME/conf.d ] ; then
58 echo -n " ($NAME)"
59 kill `cat $VARCONFIG_DIR/$NAME.pid` || true
60 rm $VARCONFIG_DIR/$NAME.pid
61 fi
64 set -e
65 case "$1" in
66 start)
67 echo -n "Starting $DESC: "
68 test -d $CHROOTDIR || mkdir -p $CHROOTDIR
69 if test -z "$2" ; then
70 if [ -f $CONFIG_DIR/autostart ] ; then
71 for NAME in `sed 's/#.*//' < $CONFIG_DIR/autostart | grep -e '\w'`; do
72 echo -n "$NAME"
73 start_vpn
74 done
75 else
76 echo "no config found"
77 exit 1;
79 else
80 while shift ; do
81 if [ ! -z $1 ] ; then
82 NAME=$1
83 echo -n "$NAME"
84 start_vpn
86 done
88 echo "."
90 stop)
91 echo -n "Stoping $DESC: "
92 if test -z "$2" ; then
93 for PIDFILE in `ls /var/run/anytun.*.pid 2> /dev/null`; do
94 NAME=`echo $PIDFILE | cut -c17-`
95 NAME=${NAME%%.pid}
96 echo -n " $NAME"
97 stop_vpn
98 done
99 else
100 while shift ; do
101 [ -z "$1" ] && break
102 if test -e /var/run/anytun.$1.pid ; then
103 PIDFILE=`ls /var/run/anytun.$1.pid 2> /dev/null`
104 NAME=`echo $PIDFILE | cut -c17-`
105 NAME=${NAME%%.pid}
106 echo -n " $NAME"
107 stop_vpn
108 else
109 echo -n " (failure: No such tunnel is running: $1)"
111 done
113 echo .
115 reload)
116 if test -z "$2" ; then
117 for PIDFILE in `ls /var/run/anytun.*.pid 2> /dev/null`; do
118 NAME=`echo $PIDFILE | cut -c17-`
119 NAME=${NAME%%.pid}
120 if [ -d $CONFIG_DIR/$NAME/conf.d ] ; then
121 stop_vpn
122 start_vpn
123 else
124 stop_config
125 start_config
127 echo -n " $NAME"
128 done
129 else
130 while shift ; do
131 [ -z "$1" ] && break
132 if test -e /var/run/anytun.$1.pid ; then
133 PIDFILE=`ls /var/run/anytun.$1.pid 2> /dev/null`
134 NAME=`echo $PIDFILE | cut -c17-`
135 NAME=${NAME%%.pid}
136 echo -n " $NAME"
137 if [ -d $CONFIG_DIR/$NAME/conf.d ] ; then
138 stop_vpn
139 start_vpn
140 else
141 stop_config
142 start_config
144 else
145 echo -n " (failure: No such tunnel is running: $1)"
147 done
150 force-reload)
151 echo -n "Restarting $DESC: "
152 if test -z "$2" ; then
153 for PIDFILE in `ls /var/run/anytun.*.pid 2> /dev/null`; do
154 NAME=`echo $PIDFILE | cut -c17-`
155 NAME=${NAME%%.pid}
156 echo -n " $NAME"
157 stop_vpn
158 sleep 1
159 start_vpn
160 done
161 else
162 while shift ; do
163 [ -z "$1" ] && break
164 if test -e /var/run/anytun.$1.pid ; then
165 PIDFILE=`ls /var/run/anytun.$1.pid 2> /dev/null`
166 NAME=`echo $PIDFILE | cut -c17-`
167 NAME=${NAME%%.pid}
168 echo -n " $NAME"
169 stop_vpn
170 start_vpn
171 else
172 echo -n " (failure: No such tunnel is running: $1)"
174 done
176 echo .
178 restart)
179 SCRIPT=$0
180 shift
181 $SCRIPT stop $*
182 sleep 1
183 $SCRIPT start $*
186 N=/etc/init.d/$NAME
187 echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
188 exit 1
190 esac
192 exit 0