blob: 781e8099b93180c1a70b56b51f18401e37ebb7b2 (
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
135
|
#! /bin/sh
### BEGIN INIT INFO
# Provides: uanytun
# Required-Start: $network $named $syslog
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start anycast tunneling daemon at boot time
# 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/uanytun
CONFIG_DIR=/etc/uanytun
NAME=uanytun
DESC=uanytun
test -x $DAEMON || exit 0
# Include uanytun defaults if available
if [ -f /etc/default/uanytun ] ; then
. /etc/default/uanytun
fi
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
DAEMONARG=`sed 's/#.*//' < $CONFIG_DIR/$NAME/config | grep -e '\w' | sed 's/^/--/' | tr '\n' ' '`
$DAEMON --write-pid /var/run/uanytun.$NAME.pid $POSTUP $DAEMONARG || 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:"
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
[ -z "$1" ] && break
NAME=$1
echo -n " $NAME"
start_vpn
done
fi
echo "."
;;
stop)
echo -n "Stoping $DESC:"
if test -z "$2" ; then
for PIDFILE in `ls /var/run/uanytun.*.pid 2> /dev/null`; do
NAME=`echo $PIDFILE | cut -c18-`
NAME=${NAME%%.pid}
echo -n " $NAME"
stop_vpn
done
else
while shift ; do
[ -z "$1" ] && break
if test -e /var/run/uanytun.$1.pid ; then
PIDFILE=`ls /var/run/uanytun.$1.pid 2> /dev/null`
NAME=`echo $PIDFILE | cut -c18-`
NAME=${NAME%%.pid}
echo -n " $NAME"
stop_vpn
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 /var/run/uanytun.*.pid 2> /dev/null`; do
NAME=`echo $PIDFILE | cut -c18-`
NAME=${NAME%%.pid}
echo -n " $NAME"
stop_vpn
start_vpn
done
else
while shift ; do
[ -z "$1" ] && break
if test -e /var/run/uanytun.$1.pid ; then
PIDFILE=`ls /var/run/uanytun.$1.pid 2> /dev/null`
NAME=`echo $PIDFILE | cut -c18-`
NAME=${NAME%%.pid}
echo -n " $NAME"
stop_vpn
start_vpn
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}" >&2
exit 1
;;
esac
exit 0
|