xref: /OK3568_Linux_fs/buildroot/package/openvpn/S60openvpn (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1#!/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
10CONFIG_DIR=/etc/openvpn
11test -d $CONFIG_DIR || exit 0
12
13start_vpn () {
14    printf " $NAME "
15    start-stop-daemon -S -p /var/run/openvpn.$NAME.pid -x /usr/sbin/openvpn -- \
16	      --daemon --writepid /var/run/openvpn.$NAME.pid \
17	      --config $CONFIG_DIR/$NAME.conf --cd $CONFIG_DIR
18    [ $? = 0 ] && echo "OK" || echo "FAIL"
19}
20stop_vpn () {
21    printf " $NAME "
22    start-stop-daemon -K -p /var/run/openvpn.$NAME.pid -x /usr/sbin/openvpn
23}
24
25case "$1" in
26start)
27  printf "Starting openvpn:"
28
29  if test -z $2 ; then
30    for CONFIG in `cd $CONFIG_DIR; ls *.conf 2> /dev/null`; do
31      NAME=${CONFIG%%.conf}
32      start_vpn
33    done
34  else
35    if test -e $CONFIG_DIR/$2.conf ; then
36      NAME=$2
37      start_vpn
38    else
39      printf " No such VPN: $2"
40    fi
41  fi
42  echo "."
43
44  ;;
45stop)
46  printf "Stopping openvpn:"
47
48  if test -z $2 ; then
49    for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do
50      NAME=`echo $PIDFILE | cut -c18-`
51      NAME=${NAME%%.pid}
52      stop_vpn
53    done
54  else
55    if test -e /var/run/openvpn.$2.pid ; then
56      PIDFILE=`ls /var/run/openvpn.$2.pid 2> /dev/null`
57      NAME=`echo $PIDFILE | cut -c18-`
58      NAME=${NAME%%.pid}
59      stop_vpn
60    else
61      printf " No such VPN: $2"
62    fi
63  fi
64  echo "."
65  ;;
66# We only 'reload' for running VPNs. New ones will only start with 'start' or 'restart'.
67reload|force-reload)
68  printf "Reloading openvpn:"
69  for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do
70    NAME=`echo $PIDFILE | cut -c18-`
71    NAME=${NAME%%.pid}
72# If openvpn if running under a different user than root we'll need to restart
73    if egrep '^( |\t)*user' $CONFIG_DIR/$NAME.conf > /dev/null 2>&1 ; then
74      stop_vpn
75      sleep 1
76      start_vpn
77      printf "(restarted)"
78    else
79      kill -HUP `cat $PIDFILE` || true
80    printf " $NAME"
81    fi
82  done
83  echo "."
84  ;;
85
86restart)
87  $0 stop $2
88  sleep 1
89  $0 start $2
90  ;;
91*)
92  echo "Usage: $0 {start|stop|reload|restart|force-reload}" >&2
93  exit 1
94  ;;
95esac
96
97exit 0
98
99# vim:set ai et sts=2 sw=2 tw=0:
100