summaryrefslogtreecommitdiff
path: root/etc/init.d/anytun
blob: f8ac7382f707ca7f69ddc739e09161d6fb5cb7e7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#! /bin/sh
#
# skeleton	example file to build /etc/init.d/ scripts.
#		This file should be used to construct scripts for /etc/init.d.
#
#		Written by Miquel van Smoorenburg <miquels@cistron.nl>.
#		Modified for Debian 
#		by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#
# Version:	@(#)skeleton  1.9  26-Feb-2001  miquels@cistron.nl
#

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/anytun
CHROOTDIR='/var/run/anytun'
DAEMONOPTS="--chroot --username nobody --chroot-dir $CHROOTDIR"
NAME=anytun
DESC=anytun
CONFIG_DIR=/etc/anytun

test -x $DAEMON || exit 0

# Include anytun defaults if available
if [ -f /etc/default/anytun ] ; then
	. /etc/default/anytun
fi

start_vpn () {
		STATUS=OK
		if [ -f $CONFIG_DIR/$NAME/config ] ; then
			DAEMONARG=`sed 's/#.*//'  <  $CONFIG_DIR/$NAME/config | grep -e '\w' | sed  's/^/ --/' | xargs echo`
			$DAEMON --write-pid /var/run/anytun.$NAME.pid \
			 	$DAEMONOPTS $DAEMONARG  > /dev/null || STATUS="FAILED"
		else
			STATUS="no config found"
		fi
    echo -n "($STATUS)"
}
stop_vpn () {
  kill `cat $PIDFILE` || true
  rm $PIDFILE
}


set -e
case "$1" in
  start)
	echo -n "Starting $DESC: "
	test -d $CHROOTDIR || mkdir $CHROOTDIR
  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
		else
			echo "no config found"
			exit 1;
		fi
	else
		while shift ; do
			NAME=$1
		  start_vpn
		done
	fi
	echo "."
	;;
  stop)
	echo -n "Stoping $DESC: "
  if test -z "$2" ; then
    for PIDFILE in `ls /var/run/anytun.*.pid 2> /dev/null`; do
      NAME=`echo $PIDFILE | cut -c17-`
      NAME=${NAME%%.pid}
      stop_vpn
      echo -n " $NAME"
    done
  else
    while shift ; do
      [ -z "$1" ] && break
      if test -e /var/run/anytun.$1.pid ; then
        PIDFILE=`ls /var/run/anytun.$1.pid 2> /dev/null`
        NAME=`echo $PIDFILE | cut -c17-`
        NAME=${NAME%%.pid}
        stop_vpn
        echo -n " $NAME"
      else
        echo -n " (failure: No such tunnel is running: $1)"
      fi
		done
	fi
	echo .
	;;
  #reload)
	#
	#	If the daemon can reload its config files on the fly
	#	for example by sending it SIGHUP, do it here.
	#
	#	If the daemon responds to changes in its config file
	#	directly anyway, make this a do-nothing entry.
	#
	# echo "Reloading $DESC configuration files."
	# start-stop-daemon --stop --signal 1 --quiet --pidfile \
	#	/var/run/$NAME.pid --exec $DAEMON
  #;;
  force-reload)
	#
	#	If the "reload" option is implemented, move the "force-reload"
	#	option to the "reload" entry above. If not, "force-reload" is
	#	just the same as "restart" except that it does nothing if the
	#   daemon isn't already running.
	# check wether $DAEMON is running. If so, restart
	start-stop-daemon --stop --test --quiet --pidfile \
		/var/run/$NAME.pid --exec $DAEMON \
	&& $0 restart \
	|| exit 0
	;;
  restart)
    echo -n "Restarting $DESC: "
	start-stop-daemon --stop --quiet --pidfile \
		/var/run/$NAME.pid --exec $DAEMON
	sleep 1
	start-stop-daemon --start --quiet --pidfile \
		/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
	echo "$NAME."
	;;
  *)
	N=/etc/init.d/$NAME
	# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: $N {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac

exit 0