4 # suitable for direct use in most SysV-style inits
10 [ -f @initconfig@
] && . @initconfig@
11 : ${prefix=@prefix@} ${exec_prefix=@exec_prefix@}
12 : ${bindir=@bindir@} ${sbindir=@sbindir@}
13 : ${TRIPEDIR=@configdir@} ${tripesock=@socketdir@/tripesock}
14 : ${pidfile=@pidfile@}
15 : ${tripe=$sbindir/tripe} ${tripectl=$bindir/tripectl}
16 PATH
=/usr
/bin
:/usr
/sbin
:/bin
:/sbin
:$bindir
19 # --- Give up if there's no key ---
21 if test ! -f
$TRIPEDIR/keyring ||
test ! -f
$TRIPEDIR/keyring.pub
; then
22 echo >&2 "Not starting/stopping TrIPE: keyring files missing"
26 # --- Check it will work, or at least stands a fighting chance ---
28 # Having loads of different tunnel types doesn't help any.
30 test -x
$tripe -a
-x
$tripectl ||
exit 0
32 case `$tripe --tunnel` in
36 if { test -f
/proc
/misc
&& grep -q net
/tun
/proc
/misc
; } ||
40 echo >&2 "$tripe needs the Linux TUN/TAP driver to run."
43 if test -c
/dev
/net
/tun
; then
46 echo >&2 "$tripe needs /dev/net/tun, which is missing."
51 echo >&2 "CONFIGURATION ERROR"
52 echo >&2 " $tripe is compiled to use a Linux tunnel device, but"
53 echo >&2 " this system is `uname -s`"
61 if { test -f
/proc
/devices
&& grep -q unet
/proc
/devices
; } ||
62 modprobe
-q unet
; then
65 echo >&2 "$tripe needs the Linux UNET driver to run."
68 if test -c
/dev
/unet
; then
71 echo >&2 "$tripe needs /dev/unet, which is missing."
76 echo >&2 "CONFIGURATION ERROR"
77 echo >&2 " $tripe is compiled to use a Linux tunnel device, but"
78 echo >&2 " this system is `uname -s`"
86 # Don't know how to check the device is working.
87 if test -c
/dev
/tun0
; then
90 echo >&2 "$tripe needs /dev/tun0, which is missing."
95 echo >&2 "CONFIGURATION ERROR"
96 echo >&2 " $tripe is compiled to use a BSD tunnel device, but"
97 echo >&2 " this system is `uname -s`"
104 # --- Do what was wanted ---
108 echo -n
"Starting TrIPE VPN daemon:"
109 if $tripectl version
>/dev
/null
2>/dev
/null
; then
110 echo " already running"
113 $tripectl -D
-s
-p
$tripe \
114 -f
${logfile-@logfile@} \
116 ${keytag+-S-t}$keytag \
118 ${port+-S-p}${port} \
119 ${user+-S-u}${user} \
120 ${group+-S-g}${group} \
121 ${trace+-S-T}${trace} \
123 for i
in 1 2 3 4 give-up
; do
124 $tripectl help >/dev
/null
2>/dev
/null
&& break
127 if [ $i = give-up
]; then
128 echo " wouldn't start"
132 for i
in $TRIPEDIR/peers
/*; do
133 [ -x
$i ] ||
continue
135 case $name in *~|\
#*) continue;; esac
139 echo -n
" ($name failed)"
145 echo -n
"Stopping TrIPE VPN daemon:"
146 if test ! -S
$tripesock; then
148 elif $tripectl quit
>/dev
/null
2>&1; then
150 elif test ! -f
$pidfile; then
151 echo " stale socket found: removing"
153 elif kill `cat $pidfile`; then
154 echo " done (killed violently)"
156 echo " it doesn't want do die!"
161 for i
in `$tripectl list`; do
163 $tripectl stats
$i |
sed 's/^/ /'
166 restart | force-reload
)
171 echo >&2 "usage: $0 start|stop|restart|status|force-reload"