openvpn/rc.openvpn

changeset 666
0c12a9c824a0
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/openvpn/rc.openvpn	Fri Sep 07 19:01:31 2012 +0200
     1.3 @@ -0,0 +1,110 @@
     1.4 +#!@l_prefix@/bin/openpkg rc
     1.5 +##
     1.6 +##  rc.openvpn -- Run-Commands
     1.7 +##
     1.8 +
     1.9 +%config
    1.10 +    openvpn_enable="$openpkg_rc_def"
    1.11 +    openvpn_log_prolog="true"
    1.12 +    openvpn_log_epilog="true"
    1.13 +    openvpn_log_numfiles="10"
    1.14 +    openvpn_log_minsize="1M"
    1.15 +    openvpn_log_complevel="9"
    1.16 +
    1.17 +%common
    1.18 +    openvpn_etcdir="@l_prefix@/etc/openvpn"
    1.19 +    openvpn_vardir="@l_prefix@/var/openvpn"
    1.20 +    openvpn_signal () {
    1.21 +        [ -f $openvpn_vardir/$1.pid ] && kill -$2 `cat $openvpn_vardir/$1.pid`
    1.22 +    }
    1.23 +
    1.24 +%status -u @l_susr@ -o
    1.25 +    openvpn_usable="unknown"
    1.26 +    openvpn_active="yes"
    1.27 +    if rcService openvpn enable yes; then
    1.28 +        for cfgfile in $openvpn_etcdir/*.conf; do
    1.29 +            [ ".`grep '^disable' $cfgfile`" != . ] && continue
    1.30 +            name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
    1.31 +            openvpn_signal $name 0
    1.32 +            if [ $? -ne 0 ]; then
    1.33 +                openvpn_active="no"
    1.34 +                break
    1.35 +            fi
    1.36 +        done
    1.37 +    fi
    1.38 +    echo "openvpn_enable=\"$openvpn_enable\""
    1.39 +    echo "openvpn_usable=\"$openvpn_usable\""
    1.40 +    echo "openvpn_active=\"$openvpn_active\""
    1.41 +
    1.42 +%start -p 200 -u @l_susr@
    1.43 +    rcService openvpn enable yes || exit 0
    1.44 +    rcService openvpn active yes && exit 0
    1.45 +    if [ -f $openvpn_etcdir/openvpn.sh ]; then
    1.46 +        sh $openvpn_etcdir/openvpn.sh start || exit $?
    1.47 +    fi
    1.48 +    for cfgfile in $openvpn_etcdir/*.conf; do
    1.49 +        [ ".`grep '^disable' $cfgfile`" != . ] && continue
    1.50 +        name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
    1.51 +        if [ -f $openvpn_etcdir/$name.sh -a ".$name" != .openvpn ]; then
    1.52 +            sh $openvpn_etcdir/$name.sh start || exit $?
    1.53 +        fi
    1.54 +        @l_prefix@/sbin/openvpn \
    1.55 +            --daemon "$name" \
    1.56 +            --log-append $openvpn_vardir/$name.log \
    1.57 +            --writepid $openvpn_vardir/$name.pid \
    1.58 +            --status $openvpn_vardir/$name.status 60 \
    1.59 +            --config $cfgfile \
    1.60 +            --cd $openvpn_etcdir || exit $?
    1.61 +    done
    1.62 +
    1.63 +%stop -p 800 -u @l_susr@
    1.64 +    rcService openvpn enable yes || exit 0
    1.65 +    rcService openvpn active no && exit 0
    1.66 +    for cfgfile in $openvpn_etcdir/*.conf; do
    1.67 +        [ ".`grep '^disable' $cfgfile`" != . ] && continue
    1.68 +        name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
    1.69 +        openvpn_signal $name TERM
    1.70 +    done
    1.71 +    sleep 1
    1.72 +    for cfgfile in $openvpn_etcdir/*.conf; do
    1.73 +        [ ".`grep '^disable' $cfgfile`" != . ] && continue
    1.74 +        name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
    1.75 +        if [ -f $openvpn_etcdir/$name.sh -a ".$name" != .openvpn ]; then
    1.76 +            sh $openvpn_etcdir/$name.sh stop || true
    1.77 +        fi
    1.78 +    done
    1.79 +    if [ -f $openvpn_etcdir/openvpn.sh ]; then
    1.80 +        sh $openvpn_etcdir/openvpn.sh stop || true
    1.81 +    fi
    1.82 +    rm -f $openvpn_vardir/*.pid 2>/dev/null || true
    1.83 +
    1.84 +%restart -u @l_susr@
    1.85 +    rcService openvpn enable yes || exit 0
    1.86 +    rcService openvpn active no && exit 0
    1.87 +    rc openvpn stop start
    1.88 +
    1.89 +%reload -u @l_susr@
    1.90 +    rcService openvpn enable yes || exit 0
    1.91 +    rcService openvpn active no && exit 0
    1.92 +    for cfgfile in $openvpn_etcdir/*.conf; do
    1.93 +        [ ".`grep '^disable' $cfgfile`" != . ] && continue
    1.94 +        name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
    1.95 +        openvpn_signal $name USR1
    1.96 +        if [ -f $openvpn_etcdir/$name.sh ]; then
    1.97 +            sh $openvpn_etcdir/$name.sh reload || true
    1.98 +        fi
    1.99 +    done
   1.100 +
   1.101 +%daily -u @l_susr@
   1.102 +    rcService openvpn enable yes || exit 0
   1.103 +    for cfgfile in $openvpn_etcdir/*.conf; do
   1.104 +        [ ".`grep '^disable' $cfgfile`" != . ] && continue
   1.105 +        name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
   1.106 +        shtool rotate -f \
   1.107 +            -n ${openvpn_log_numfiles} -s ${openvpn_log_minsize} -d \
   1.108 +            -z ${openvpn_log_complevel} -o @l_rusr@ -g @l_rgrp@ -m 644 \
   1.109 +            -P "${openvpn_log_prolog}" \
   1.110 +            -E "${openvpn_log_epilog}; rc openvpn reload" \
   1.111 +            $openvpn_vardir/$name.log
   1.112 +    done
   1.113 +

mercurial