mirror of
https://git.busybox.net/buildroot.git
synced 2024-11-23 13:33:28 +08:00
d8e68597a7
Using 'start-stop-daemon' prevents multiple instances creation by '/etc/init.d/S60openvpn start'. Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
100 lines
2.3 KiB
Bash
100 lines
2.3 KiB
Bash
#!/bin/sh -e
|
|
#
|
|
# Original version by Robert Leslie
|
|
# <rob@mars.org>, edited by iwj and cs
|
|
# Modified for openvpn by Alberto Gonzalez Iniesta <agi@agi.as>
|
|
# Modified for restarting / starting / stopping single tunnels by Richard Mueller <mueller@teamix.net>
|
|
|
|
test $DEBIAN_SCRIPT_DEBUG && set -v -x
|
|
|
|
CONFIG_DIR=/etc/openvpn
|
|
test -d $CONFIG_DIR || exit 0
|
|
|
|
start_vpn () {
|
|
printf " $NAME "
|
|
start-stop-daemon -S -p /var/run/openvpn.$NAME.pid -x /usr/sbin/openvpn -- \
|
|
--daemon --writepid /var/run/openvpn.$NAME.pid \
|
|
--config $CONFIG_DIR/$NAME.conf --cd $CONFIG_DIR
|
|
[ $? = 0 ] && echo "OK" || echo "FAIL"
|
|
}
|
|
stop_vpn () {
|
|
printf " $NAME "
|
|
start-stop-daemon -K -p /var/run/openvpn.$NAME.pid -x /usr/sbin/openvpn
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
printf "Starting openvpn:"
|
|
|
|
if test -z $2 ; then
|
|
for CONFIG in `cd $CONFIG_DIR; ls *.conf 2> /dev/null`; do
|
|
NAME=${CONFIG%%.conf}
|
|
start_vpn
|
|
done
|
|
else
|
|
if test -e $CONFIG_DIR/$2.conf ; then
|
|
NAME=$2
|
|
start_vpn
|
|
else
|
|
printf " No such VPN: $2"
|
|
fi
|
|
fi
|
|
echo "."
|
|
|
|
;;
|
|
stop)
|
|
printf "Stopping openvpn:"
|
|
|
|
if test -z $2 ; then
|
|
for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do
|
|
NAME=`echo $PIDFILE | cut -c18-`
|
|
NAME=${NAME%%.pid}
|
|
stop_vpn
|
|
done
|
|
else
|
|
if test -e /var/run/openvpn.$2.pid ; then
|
|
PIDFILE=`ls /var/run/openvpn.$2.pid 2> /dev/null`
|
|
NAME=`echo $PIDFILE | cut -c18-`
|
|
NAME=${NAME%%.pid}
|
|
stop_vpn
|
|
else
|
|
printf " No such VPN: $2"
|
|
fi
|
|
fi
|
|
echo "."
|
|
;;
|
|
# We only 'reload' for running VPNs. New ones will only start with 'start' or 'restart'.
|
|
reload|force-reload)
|
|
printf "Reloading openvpn:"
|
|
for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do
|
|
NAME=`echo $PIDFILE | cut -c18-`
|
|
NAME=${NAME%%.pid}
|
|
# If openvpn if running under a different user than root we'll need to restart
|
|
if egrep '^( |\t)*user' $CONFIG_DIR/$NAME.conf > /dev/null 2>&1 ; then
|
|
stop_vpn
|
|
sleep 1
|
|
start_vpn
|
|
printf "(restarted)"
|
|
else
|
|
kill -HUP `cat $PIDFILE` || true
|
|
printf " $NAME"
|
|
fi
|
|
done
|
|
echo "."
|
|
;;
|
|
|
|
restart)
|
|
$0 stop $2
|
|
sleep 1
|
|
$0 start $2
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {start|stop|reload|restart|force-reload}" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|
|
|
|
# vim:set ai et sts=2 sw=2 tw=0:
|