[23626] | 1 | #!/bin/sh -e |
---|
| 2 | # |
---|
| 3 | |
---|
| 4 | test $DEBIAN_SCRIPT_DEBUG && set -v -x |
---|
| 5 | |
---|
[23730] | 6 | DAEMON=_path_/bin/openvpn |
---|
| 7 | CONFIG_DIR=_path_/etc/openvpn |
---|
[23626] | 8 | test -x $DAEMON || exit 0 |
---|
| 9 | test -d $CONFIG_DIR || exit 0 |
---|
| 10 | |
---|
| 11 | start_vpn () { |
---|
| 12 | if ( [ ! -c /dev/net/tun ] ) then |
---|
| 13 | if ( [ ! -d /dev/net ] ) then |
---|
| 14 | mkdir -m 755 /dev/net |
---|
| 15 | fi |
---|
| 16 | mknod /dev/net/tun c 10 200 |
---|
| 17 | fi |
---|
[24529] | 18 | |
---|
[26587] | 19 | if ( !(lsmod | grep -q "tun") ); then |
---|
| 20 | if [ -e /lib/modules/tun.ko ]; then |
---|
[23626] | 21 | insmod /lib/modules/tun.ko |
---|
[26587] | 22 | elif [ -e /var/lib/modules/tun.ko ]; then |
---|
| 23 | insmod /var/lib/modules/tun.ko |
---|
| 24 | elif [ -e _path_/lib/modules/tun.ko ]; then |
---|
| 25 | insmod _path_/lib/modules/tun.ko |
---|
| 26 | fi |
---|
| 27 | fi |
---|
[23730] | 28 | /lib/ld-linux.so.2 --library-path _path_/lib $DAEMON --daemon --writepid /var/run/openvpn.$NAME.pid \ |
---|
[23626] | 29 | --config $CONFIG_DIR/$NAME.conf --cd $CONFIG_DIR || echo -n " FAILED->" |
---|
| 30 | echo -n " $NAME" |
---|
| 31 | } |
---|
| 32 | stop_vpn () { |
---|
| 33 | kill `cat $PIDFILE` || true |
---|
| 34 | rm $PIDFILE |
---|
| 35 | } |
---|
| 36 | |
---|
| 37 | case "$1" in |
---|
| 38 | start) |
---|
| 39 | echo -n "Starting openvpn:" |
---|
| 40 | |
---|
| 41 | if test -z $2 ; then |
---|
| 42 | for CONFIG in `cd $CONFIG_DIR; ls *.conf 2> /dev/null`; do |
---|
| 43 | NAME=${CONFIG%%.conf} |
---|
| 44 | start_vpn |
---|
| 45 | done |
---|
| 46 | else |
---|
| 47 | if test -e $CONFIG_DIR/$2.conf ; then |
---|
| 48 | NAME=$2 |
---|
| 49 | start_vpn |
---|
| 50 | else |
---|
| 51 | echo -n " No such VPN: $2" |
---|
| 52 | fi |
---|
| 53 | fi |
---|
| 54 | echo "." |
---|
| 55 | |
---|
| 56 | ;; |
---|
| 57 | stop) |
---|
| 58 | echo -n "Stopping openvpn:" |
---|
| 59 | |
---|
| 60 | if test -z $2 ; then |
---|
| 61 | for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do |
---|
| 62 | NAME=`echo $PIDFILE | cut -c18-` |
---|
| 63 | NAME=${NAME%%.pid} |
---|
| 64 | stop_vpn |
---|
| 65 | echo -n " $NAME" |
---|
| 66 | done |
---|
| 67 | else |
---|
| 68 | if test -e /var/run/openvpn.$2.pid ; then |
---|
| 69 | PIDFILE=`ls /var/run/openvpn.$2.pid 2> /dev/null` |
---|
| 70 | NAME=`echo $PIDFILE | cut -c18-` |
---|
| 71 | NAME=${NAME%%.pid} |
---|
| 72 | stop_vpn |
---|
| 73 | echo -n " $NAME" |
---|
| 74 | else |
---|
| 75 | echo -n " No such VPN: $2" |
---|
| 76 | fi |
---|
| 77 | fi |
---|
| 78 | echo "." |
---|
| 79 | ;; |
---|
| 80 | # We only 'reload' for running VPNs. New ones will only start with 'start' or 'restart'. |
---|
| 81 | reload|force-reload) |
---|
| 82 | echo -n "Reloading openvpn:" |
---|
| 83 | for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do |
---|
| 84 | NAME=`echo $PIDFILE | cut -c18-` |
---|
| 85 | NAME=${NAME%%.pid} |
---|
| 86 | # If openvpn if running under a different user than root we'll need to restart |
---|
| 87 | if egrep '^( |\t)*user' $CONFIG_DIR/$NAME.conf > /dev/null 2>&1 ; then |
---|
| 88 | stop_vpn |
---|
| 89 | sleep 1 |
---|
| 90 | start_vpn |
---|
| 91 | echo -n "(restarted)" |
---|
| 92 | else |
---|
| 93 | kill -HUP `cat $PIDFILE` || true |
---|
| 94 | # start-stop-daemon --stop --signal HUP --quiet --oknodo \ |
---|
| 95 | # --exec $DAEMON --pidfile $PIDFILE |
---|
| 96 | echo -n " $NAME" |
---|
| 97 | fi |
---|
| 98 | done |
---|
| 99 | echo "." |
---|
| 100 | ;; |
---|
| 101 | |
---|
| 102 | restart) |
---|
| 103 | $0 stop $2 |
---|
| 104 | sleep 1 |
---|
| 105 | $0 start $2 |
---|
| 106 | ;; |
---|
| 107 | *) |
---|
| 108 | echo "Usage: $0 {start|stop|reload|restart|force-reload}" >&2 |
---|
| 109 | exit 1 |
---|
| 110 | ;; |
---|
| 111 | esac |
---|
| 112 | |
---|
| 113 | exit 0 |
---|
| 114 | |
---|
| 115 | # vim:set ai et sts=2 sw=2 tw=0: |
---|