rc.openvpn 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!@l_prefix@/lib/openpkg/bash @l_prefix@/etc/rc
  2. ##
  3. ## rc.openvpn -- Run-Commands
  4. ##
  5. %config
  6. openvpn_enable="$openpkg_rc_def"
  7. openvpn_log_prolog="true"
  8. openvpn_log_epilog="true"
  9. openvpn_log_numfiles="10"
  10. openvpn_log_minsize="1M"
  11. openvpn_log_complevel="9"
  12. %common
  13. openvpn_etcdir="@l_prefix@/etc/openvpn"
  14. openvpn_vardir="@l_prefix@/var/openvpn"
  15. openvpn_signal () {
  16. [ -f $openvpn_vardir/$1.pid ] && kill -$2 `cat $openvpn_vardir/$1.pid`
  17. }
  18. %status -u @l_susr@ -o
  19. openvpn_usable="unknown"
  20. openvpn_active="yes"
  21. if rcService openvpn enable yes; then
  22. for cfgfile in $openvpn_etcdir/*.conf; do
  23. name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
  24. openvpn_signal $name 0
  25. if [ $? -ne 0 ]; then
  26. openvpn_active="no"
  27. break
  28. fi
  29. done
  30. fi
  31. echo "openvpn_enable=\"$openvpn_enable\""
  32. echo "openvpn_usable=\"$openvpn_usable\""
  33. echo "openvpn_active=\"$openvpn_active\""
  34. %start -u @l_susr@
  35. rcService openvpn enable yes || exit 0
  36. rcService openvpn active yes && exit 0
  37. for cfgfile in $openvpn_etcdir/*.conf; do
  38. name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
  39. @l_prefix@/sbin/openvpn \
  40. --daemon \
  41. --writepid $openvpn_vardir/$name.pid \
  42. --status $openvpn_vardir/$name.status 60 \
  43. --log-append $openvpn_vardir/$name.log \
  44. --config $cfgfile \
  45. --cd $openvpn_etcdir
  46. done
  47. %stop -u @l_susr@
  48. rcService openvpn enable yes || exit 0
  49. rcService openvpn active no && exit 0
  50. for cfgfile in $openvpn_etcdir/*.conf; do
  51. name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
  52. openvpn_signal $name TERM
  53. done
  54. sleep 2
  55. rm -f $openvpn_vardir/*.pid 2>/dev/null || true
  56. %restart -u @l_susr@
  57. rcService openvpn enable yes || exit 0
  58. rcService openvpn active no && exit 0
  59. rc stop start
  60. %daily -u @l_susr@
  61. rcService openvpn enable yes || exit 0
  62. for cfgfile in $openvpn_etcdir/*.conf; do
  63. name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
  64. shtool rotate -f \
  65. -n ${openvpn_log_numfiles} -s ${openvpn_log_minsize} -d \
  66. -z ${openvpn_log_complevel} -o @l_rusr@ -g @l_rgrp@ -m 644 \
  67. -P "${openvpn_log_prolog}" \
  68. -E "${openvpn_log_epilog}" \
  69. $openvpn_vardir/$name.log
  70. done