blob: a3cd6a2f4914124934efaea1abc9cc27530bebf8 [file] [log] [blame]
Patrick Williamsb48b7b42016-08-17 15:04:38 -05001#!/bin/sh -e
2#
3# Original version by Robert Leslie
4# <rob@mars.org>, edited by iwj and cs
5# Modified for openvpn by Alberto Gonzalez Iniesta <agi@agi.as>
6# Modified for restarting / starting / stopping single tunnels by Richard Mueller <mueller@teamix.net>
7
8test $DEBIAN_SCRIPT_DEBUG && set -v -x
9
10DAEMON=/usr/sbin/openvpn
11CONFIG_DIR=/etc/openvpn
12test -x $DAEMON || exit 0
13test -d $CONFIG_DIR || exit 0
14
15start_vpn () {
16 modprobe tun >/dev/null 2>&1 || true
17 $DAEMON --daemon --writepid /var/run/openvpn.$NAME.pid \
18 --config $CONFIG_DIR/$NAME.conf --cd $CONFIG_DIR || echo -n " FAILED->"
19 echo -n " $NAME"
20}
21stop_vpn () {
22 kill `cat $PIDFILE` || true
23 rm $PIDFILE
24}
25
26case "$1" in
27start)
28 echo -n "Starting openvpn:"
29
30 if test -z $2 ; then
31 for CONFIG in `cd $CONFIG_DIR; ls *.conf 2> /dev/null`; do
32 NAME=${CONFIG%%.conf}
33 start_vpn
34 done
35 else
36 if test -e $CONFIG_DIR/$2.conf ; then
37 NAME=$2
38 start_vpn
39 else
40 echo -n " No such VPN: $2"
41 fi
42 fi
43 echo "."
44
45 ;;
46stop)
47 echo -n "Stopping openvpn:"
48
49 if test -z $2 ; then
50 for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do
51 NAME=`echo $PIDFILE | cut -c18-`
52 NAME=${NAME%%.pid}
53 stop_vpn
54 echo -n " $NAME"
55 done
56 else
57 if test -e /var/run/openvpn.$2.pid ; then
58 PIDFILE=`ls /var/run/openvpn.$2.pid 2> /dev/null`
59 NAME=`echo $PIDFILE | cut -c18-`
60 NAME=${NAME%%.pid}
61 stop_vpn
62 echo -n " $NAME"
63 else
64 echo -n " No such VPN: $2"
65 fi
66 fi
67 echo "."
68 ;;
69# We only 'reload' for running VPNs. New ones will only start with 'start' or 'restart'.
70reload|force-reload)
71 echo -n "Reloading openvpn:"
72 for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do
73 NAME=`echo $PIDFILE | cut -c18-`
74 NAME=${NAME%%.pid}
75# If openvpn if running under a different user than root we'll need to restart
76 if egrep '^( |\t)*user' $CONFIG_DIR/$NAME.conf > /dev/null 2>&1 ; then
77 stop_vpn
78 sleep 1
79 start_vpn
80 echo -n "(restarted)"
81 else
82 kill -HUP `cat $PIDFILE` || true
83# start-stop-daemon --stop --signal HUP --quiet --oknodo \
84# --exec $DAEMON --pidfile $PIDFILE
85 echo -n " $NAME"
86 fi
87 done
88 echo "."
89 ;;
90
91restart)
92 $0 stop $2
93 sleep 1
94 $0 start $2
95 ;;
96*)
97 echo "Usage: $0 {start|stop|reload|restart|force-reload}" >&2
98 exit 1
99 ;;
100esac
101
102exit 0
103
104# vim:set ai et sts=2 sw=2 tw=0: