4 # Required-Start: $remote_fs $network $named $syslog
5 # Required-Stop: $remote_fs
6 # Default-Start: 2 3 4 5
8 # Short-Description: Start anycast tunneling daemon at boot time
9 # Description: Enables networking over vpn tunnel interfaces
11 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
12 DAEMON=/usr/sbin/anytun
13 ANYTUNCONFIG=/usr/bin/anytun-config
14 CONTROLDAEMON=/usr/bin/anytun-controld
17 CONFIG_DIR=/etc/anytun
18 VARCONFIG_DIR=/var/run/anytun-controld
19 VARRUN_DIR=/var/run/$NAME/
21 test -x $DAEMON || exit 0
23 # Include anytun defaults if available
24 if [ -f /etc/default/anytun ] ; then
30 if [ -f $CONFIG_DIR/$NAME/config ] ; then
32 test -f $CONFIG_DIR/$NAME/post-up.sh && POSTUP="-x $CONFIG_DIR/$NAME/post-up.sh"
33 CHROOTDIR=`grep '^chroot' < $CONFIG_DIR/$NAME/config | sed 's/chroot\s*//'`
34 if [ -n "$CHROOTDIR" ] ; then
35 test -d $CHROOTDIR || mkdir -p $CHROOTDIR
37 test -d $VARRUN_DIR || mkdir -p $VARRUN_DIR
38 DAEMONARG=`sed 's/#.*//' < $CONFIG_DIR/$NAME/config | grep -e '\w' | sed 's/^/--/' | tr '\n' ' '`
39 $DAEMON --write-pid $VARRUN_DIR/$NAME.pid $POSTUP \
40 $DAEMONOPTS $DAEMONARG || STATUS="FAILED"
42 STATUS="no config found"
48 kill `cat $PIDFILE` || true
54 if [ -d $CONFIG_DIR/$NAME/conf.d ] ; then
55 test -d $VARCONFIG_DIR || mkdir -p $VARCONFIG_DIR
56 chmod 700 $VARCONFIG_DIR
57 rm -f $VARCONFIG_DIR/$NAME 2>/dev/null
58 KDPRF=`sed 's/#.*//' < $CONFIG_DIR/$NAME/config | grep -e 'kd-prf' | sed 's/^/ --/' | xargs echo`
59 for CLIENTNAME in `ls $CONFIG_DIR/$NAME/conf.d`; do
60 echo -n " ($CLIENTNAME)"
61 DAEMONARG=`sed 's/#.*//' < $CONFIG_DIR/$NAME/conf.d/$CLIENTNAME | grep -e '\w' | sed 's/^/ --/' | xargs echo`
62 $ANYTUNCONFIG $DAEMONARG $CIPHER $AUTHALGO $KDPRF >> $VARCONFIG_DIR/$NAME
64 CONTROLHOST=`sed 's/#.*//' < $CONFIG_DIR/$NAME/config | grep -e 'control-host' | sed 's/^/ --/' | xargs echo`
65 $CONTROLDAEMON -f $VARCONFIG_DIR/$NAME $DAEMONOPTS $CONTROLHOST \
66 --write-pid $VARCONFIG_DIR/$NAME.pid
67 # rm -f $VARCONFIG_DIR/$NAME
71 if [ -d $CONFIG_DIR/$NAME/conf.d ] ; then
72 echo -n " ($NAME-controlld)"
73 kill `cat $VARCONFIG_DIR/$NAME.pid` || true
74 rm $VARCONFIG_DIR/$NAME.pid
81 echo -n "Starting $DESC:"
82 if test -z "$2" ; then
83 if [ -f $CONFIG_DIR/autostart ] ; then
84 for NAME in `sed 's/#.*//' < $CONFIG_DIR/autostart | grep -e '\w'`; do
89 echo "no config found"
103 echo -n "Stoping $DESC:"
104 if test -z "$2" ; then
105 for PIDFILE in `ls $VARRUN_DIR/*.pid 2> /dev/null`; do
106 NAME=`basename $PIDFILE`
114 if test -e $VARRUN_DIR/$1.pid ; then
115 PIDFILE=`ls $VARRUN_DIR/$1.pid 2> /dev/null`
116 NAME=`basename $PIDFILE`
121 echo -n " (failure: No such tunnel is running: $1)"
128 echo -n "Reloading $DESC:"
129 if test -z "$2" ; then
130 for PIDFILE in `ls $VARRUN_DIR/*.pid 2> /dev/null`; do
131 NAME=`basename $PIDFILE`
134 if [ -d $CONFIG_DIR/$NAME/conf.d ] ; then
145 if test -e $VARRUN_DIR/$1.pid ; then
146 PIDFILE=`ls $VARRUN_DIR/$1.pid 2> /dev/null`
147 NAME=`basename $PIDFILE`
150 if [ -d $CONFIG_DIR/$NAME/conf.d ] ; then
158 echo -n " (failure: No such tunnel is running: $1)"
165 echo -n "Restarting $DESC:"
166 if test -z "$2" ; then
167 for PIDFILE in `ls $VARRUN_DIR/*.pid 2> /dev/null`; do
168 NAME=`basename $PIDFILE`
178 if test -e $VARRUN_DIR/$1.pid ; then
179 PIDFILE=`ls $VARRUN_DIR/$1.pid 2> /dev/null`
180 NAME=`basename $PIDFILE`
187 echo -n " (failure: No such tunnel is running: $1)"
202 echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2