New upstream version 0.3.6
[anytun.git] / usr / lib / anytun-launcher
1 #!/bin/sh
2
3 NAME="${NAME:-$2}"
4
5 DAEMON=/usr/local/sbin/anytun
6 ANYTUNCONFIG=/usr/local/bin/anytun-config
7 CONTROLDAEMON=/usr/local/bin/anytun-controld
8 CONFIG_DIR=/usr/local/etc/anytun
9 VARRUN_DIR=/run/anytun
10 VARCONTROL_DIR=/run/anytun-controld
11
12 test -x $DAEMON || exit 0
13 test -z $NAME && exit 1
14
15 start_vpn () {
16   if [ -f $CONFIG_DIR/$NAME/config ] ; then
17     POSTUP=''
18     test -f  $CONFIG_DIR/$NAME/post-up.sh && POSTUP="-x $CONFIG_DIR/$NAME/post-up.sh"
19     CHROOTDIR=`grep '^chroot' < $CONFIG_DIR/$NAME/config | sed 's/chroot\s*//'`
20     if [ -n "$CHROOTDIR" ] ; then
21       test -d $CHROOTDIR || mkdir -p $CHROOTDIR
22     fi
23     test -d $VARRUN_DIR || mkdir -p $VARRUN_DIR
24     DAEMONARG=`sed 's/#.*//' < $CONFIG_DIR/$NAME/config | grep -e '\w' | sed  's/^/--/' | tr '\n' ' '`
25     exec $DAEMON --write-pid $VARRUN_DIR/$NAME.pid $POSTUP $DAEMONOPTS $DAEMONARG
26   else
27     echo "no config found" >&2
28     return 1
29   fi
30 }
31
32 start_configd () {
33   if [ -d $CONFIG_DIR/$NAME/conf.d ] ; then
34     test -d $VARCONTROL_DIR || mkdir -p $VARCONTROL_DIR
35     chmod 700 $VARCONTROL_DIR
36     rm -f $VARCONTROL_DIR/$NAME 2>/dev/null
37     KDPRF=`sed 's/#.*//'  <  $CONFIG_DIR/$NAME/config | grep -e 'kd-prf' | sed  's/^/ --/' | xargs echo`
38     for CLIENTNAME in `ls $CONFIG_DIR/$NAME/conf.d`; do
39       echo -n " ($CLIENTNAME)"
40       DAEMONARG=`sed 's/#.*//'  <  $CONFIG_DIR/$NAME/conf.d/$CLIENTNAME | grep -e '\w' | sed  's/^/ --/' | xargs echo`
41       $ANYTUNCONFIG $DAEMONARG $CIPHER $AUTHALGO $KDPRF >> $VARCONTROL_DIR/$NAME
42     done
43     CONTROLHOST=`sed 's/#.*//'  <  $CONFIG_DIR/$NAME/config | grep -e 'control-host' | sed  's/^/ --/' | xargs echo`
44     exec $CONTROLDAEMON -f $VARCONTROL_DIR/$NAME $DAEMONOPTS $CONTROLHOST \
45       --write-pid $VARCONTROL_DIR/$NAME.pid
46   fi
47 }
48
49 case $1 in
50   vpn)
51     start_vpn
52     ;;
53   configd)
54     start_configd
55     ;;
56   *)
57     exit 2
58     ;;
59 esac