X-Git-Url: https://git.syn-net.org/debian/?p=anytun.git;a=blobdiff_plain;f=etc%2Finit.d%2Fanytun;h=b47378d16fd00da5ebb61a53621f26362d6208e1;hp=6905c67c6f3a7fc0643be713ef6bf23d88444e8c;hb=91d2dadab8997ae23442f77dd28db9fa3aee1e7c;hpb=65944fb7a518dc659bacaf80cf235a0352fc6a7e diff --git a/etc/init.d/anytun b/etc/init.d/anytun index 6905c67..b47378d 100755 --- a/etc/init.d/anytun +++ b/etc/init.d/anytun @@ -9,199 +9,173 @@ # Description: Enables networking over vpn tunnel interfaces ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/sbin/anytun -ANYTUNCONFIG=/usr/bin/anytun-config -CONTROLDAEMON=/usr/bin/anytun-controld -NAME=anytun -DESC=anytun -CONFIG_DIR=/etc/anytun -VARCONFIG_DIR=/var/run/anytun-controld -VARRUN_DIR=/var/run/$NAME/ - -test -x $DAEMON || exit 0 +DAEMON=anytun +LAUNCHER=/usr/local/lib/$DAEMON-launcher +DESC="secure anycast tunneling daemon" +CONFIG_DIR=/usr/local/etc/$DAEMON +VARCONTROL_DIR=/var/run/$DAEMON-controld +VARRUN_DIR=/var/run/$DAEMON/ # Include anytun defaults if available if [ -f /etc/default/anytun ] ; then . /etc/default/anytun fi +. /lib/lsb/init-functions + start_vpn () { STATUS="OK" - if [ -f $CONFIG_DIR/$NAME/config ] ; then - POSTUP='' - test -f $CONFIG_DIR/$NAME/post-up.sh && POSTUP="-x $CONFIG_DIR/$NAME/post-up.sh" - CHROOTDIR=`grep '^chroot' < $CONFIG_DIR/$NAME/config | sed 's/chroot\s*//'` - if [ -n "$CHROOTDIR" ] ; then - test -d $CHROOTDIR || mkdir -p $CHROOTDIR - fi - test -d $VARRUN_DIR || mkdir -p $VARRUN_DIR - DAEMONARG=`sed 's/#.*//' < $CONFIG_DIR/$NAME/config | grep -e '\w' | sed 's/^/--/' | tr '\n' ' '` - $DAEMON --write-pid $VARRUN_DIR/$NAME.pid $POSTUP \ - $DAEMONOPTS $DAEMONARG || STATUS="FAILED" + if [ -f $CONFIG_DIR/$1/config ] ; then + $LAUNCHER vpn $1 || STATUS="FAILED" else - STATUS="no config found" + STATUS=" no config found" fi - start_configd + start_configd $1 echo -n "($STATUS)" } stop_vpn () { kill `cat $PIDFILE` || true rm $PIDFILE - stop_configd + stop_configd $1 } start_configd () { - if [ -d $CONFIG_DIR/$NAME/conf.d ] ; then - test -d $VARCONFIG_DIR || mkdir -p $VARCONFIG_DIR - chmod 700 $VARCONFIG_DIR - rm -f $VARCONFIG_DIR/$NAME 2>/dev/null - KDPRF=`sed 's/#.*//' < $CONFIG_DIR/$NAME/config | grep -e 'kd-prf' | sed 's/^/ --/' | xargs echo` - for CLIENTNAME in `ls $CONFIG_DIR/$NAME/conf.d`; do - echo -n " ($CLIENTNAME)" - DAEMONARG=`sed 's/#.*//' < $CONFIG_DIR/$NAME/conf.d/$CLIENTNAME | grep -e '\w' | sed 's/^/ --/' | xargs echo` - $ANYTUNCONFIG $DAEMONARG $CIPHER $AUTHALGO $KDPRF >> $VARCONFIG_DIR/$NAME - done - CONTROLHOST=`sed 's/#.*//' < $CONFIG_DIR/$NAME/config | grep -e 'control-host' | sed 's/^/ --/' | xargs echo` - $CONTROLDAEMON -f $VARCONFIG_DIR/$NAME $DAEMONOPTS $CONTROLHOST \ - --write-pid $VARCONFIG_DIR/$NAME.pid - # rm -f $VARCONFIG_DIR/$NAME - fi + $LAUNCHER configd $1 } stop_configd () { - if [ -d $CONFIG_DIR/$NAME/conf.d ] ; then - echo -n " ($NAME-controlld)" - kill `cat $VARCONFIG_DIR/$NAME.pid` || true - rm $VARCONFIG_DIR/$NAME.pid - fi + if [ -d $CONFIG_DIR/$1/conf.d ] ; then + echo -n " ($1-controlld)" + kill `cat $VARCONTROL_DIR/$1.pid` || true + rm $VARCONTROL_DIR/$1.pid + fi } set -e case "$1" in start) - echo -n "Starting $DESC:" - if test -z "$2" ; then - if [ -f $CONFIG_DIR/autostart ] ; then - for NAME in `sed 's/#.*//' < $CONFIG_DIR/autostart | grep -e '\w'`; do - echo -n " $NAME" - start_vpn - done + echo -n "Starting $DESC:" + if test -z "$2" ; then + if [ -f $CONFIG_DIR/autostart ] ; then + for NAME in `sed 's/#.*//' < $CONFIG_DIR/autostart | grep -e '\w'`; do + echo -n " $NAME" + start_vpn $NAME + done + else + echo "no config found" + exit 1; + fi else - echo "no config found" - exit 1; + while shift ; do + [ -z "$1" ] && break + echo -n " $1" + start_vpn $1 + done fi - else - while shift ; do - [ -z "$1" ] && break - NAME=$1 - echo -n " $NAME" - start_vpn - done - fi - echo "." - ;; + echo "." + ;; stop) - echo -n "Stoping $DESC:" - if test -z "$2" ; then - for PIDFILE in `ls $VARRUN_DIR/*.pid 2> /dev/null`; do - NAME=`basename $PIDFILE` - NAME=${NAME%%.pid} - echo -n " $NAME" - stop_vpn - done - else - while shift ; do - [ -z "$1" ] && break - if test -e $VARRUN_DIR/$1.pid ; then - PIDFILE=`ls $VARRUN_DIR/$1.pid 2> /dev/null` + echo -n "Stoping $DESC:" + if test -z "$2" ; then + for PIDFILE in `ls $VARRUN_DIR/*.pid 2> /dev/null`; do NAME=`basename $PIDFILE` NAME=${NAME%%.pid} echo -n " $NAME" - stop_vpn - else - echo -n " (failure: No such tunnel is running: $1)" - fi - done - fi - echo "." - ;; + stop_vpn $NAME + done + else + while shift ; do + [ -z "$1" ] && break + if test -e $VARRUN_DIR/$1.pid ; then + PIDFILE=`ls $VARRUN_DIR/$1.pid 2> /dev/null` + NAME=`basename $PIDFILE` + NAME=${NAME%%.pid} + echo -n " $NAME" + stop_vpn $NAME + else + echo -n " (failure: No such tunnel is running: $1)" + fi + done + fi + echo "." + ;; reload) - echo -n "Reloading $DESC:" - if test -z "$2" ; then - for PIDFILE in `ls $VARRUN_DIR/*.pid 2> /dev/null`; do - NAME=`basename $PIDFILE` - NAME=${NAME%%.pid} - echo -n " $NAME" - if [ -d $CONFIG_DIR/$NAME/conf.d ] ; then - stop_vpn - start_vpn - else - stop_configd - start_configd - fi - done - else - while shift ; do - [ -z "$1" ] && break - if test -e $VARRUN_DIR/$1.pid ; then - PIDFILE=`ls $VARRUN_DIR/$1.pid 2> /dev/null` + echo -n "Reloading $DESC:" + if test -z "$2" ; then + for PIDFILE in `ls $VARRUN_DIR/*.pid 2> /dev/null`; do NAME=`basename $PIDFILE` NAME=${NAME%%.pid} echo -n " $NAME" if [ -d $CONFIG_DIR/$NAME/conf.d ] ; then - stop_vpn - start_vpn + stop_vpn $NAME + start_vpn $NAME else - stop_configd - start_configd + stop_configd $NAME + start_configd $NAME fi - else - echo -n " (failure: No such tunnel is running: $1)" - fi - done - fi - echo "." - ;; + done + else + while shift ; do + [ -z "$1" ] && break + if test -e $VARRUN_DIR/$1.pid ; then + PIDFILE=`ls $VARRUN_DIR/$1.pid 2> /dev/null` + NAME=`basename $PIDFILE` + NAME=${NAME%%.pid} + echo -n " $NAME" + if [ -d $CONFIG_DIR/$NAME/conf.d ] ; then + stop_vpn $NAME + start_vpn $NAME + else + stop_configd $NAME + start_configd $NAME + fi + else + echo -n " (failure: No such tunnel is running: $1)" + fi + done + fi + echo "." + ;; force-reload) - echo -n "Restarting $DESC:" - if test -z "$2" ; then - for PIDFILE in `ls $VARRUN_DIR/*.pid 2> /dev/null`; do - NAME=`basename $PIDFILE` - NAME=${NAME%%.pid} - echo -n " $NAME" - stop_vpn - sleep 1 - start_vpn - done - else - while shift ; do - [ -z "$1" ] && break - if test -e $VARRUN_DIR/$1.pid ; then - PIDFILE=`ls $VARRUN_DIR/$1.pid 2> /dev/null` + echo -n "Restarting $DESC:" + if test -z "$2" ; then + for PIDFILE in `ls $VARRUN_DIR/*.pid 2> /dev/null`; do NAME=`basename $PIDFILE` NAME=${NAME%%.pid} echo -n " $NAME" - stop_vpn + stop_vpn $NAME sleep 1 - start_vpn - else - echo -n " (failure: No such tunnel is running: $1)" - fi - done - fi - echo "." - ;; + start_vpn $NAME + done + else + while shift ; do + [ -z "$1" ] && break + if test -e $VARRUN_DIR/$1.pid ; then + PIDFILE=`ls $VARRUN_DIR/$1.pid 2> /dev/null` + NAME=`basename $PIDFILE` + NAME=${NAME%%.pid} + echo -n " $NAME" + stop_vpn $NAME + sleep 1 + start_vpn $NAME + else + echo -n " (failure: No such tunnel is running: $1)" + fi + done + fi + echo "." + ;; restart) SCRIPT=$0 shift $SCRIPT stop $* sleep 1 $SCRIPT start $* - ;; + ;; *) - N=/etc/init.d/$NAME - echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 - exit 1 - ;; + N=/etc/init.d/$DAEMON + echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 + exit 1 + ;; esac exit 0