rc.openvpn 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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. [ ".`grep '^disable' $cfgfile`" != . ] && continue
  24. name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
  25. openvpn_signal $name 0
  26. if [ $? -ne 0 ]; then
  27. openvpn_active="no"
  28. break
  29. fi
  30. done
  31. fi
  32. echo "openvpn_enable=\"$openvpn_enable\""
  33. echo "openvpn_usable=\"$openvpn_usable\""
  34. echo "openvpn_active=\"$openvpn_active\""
  35. %start -p 200 -u @l_susr@
  36. rcService openvpn enable yes || exit 0
  37. rcService openvpn active yes && exit 0
  38. if [ -f $openvpn_etcdir/openvpn.sh ]; then
  39. sh $openvpn_etcdir/openvpn.sh start || exit $?
  40. fi
  41. for cfgfile in $openvpn_etcdir/*.conf; do
  42. [ ".`grep '^disable' $cfgfile`" != . ] && continue
  43. name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
  44. if [ -f $openvpn_etcdir/$name.sh -a ".$name" != .openvpn ]; then
  45. sh $openvpn_etcdir/$name.sh start || exit $?
  46. fi
  47. @l_prefix@/sbin/openvpn \
  48. --daemon "$name" \
  49. --log-append $openvpn_vardir/$name.log \
  50. --writepid $openvpn_vardir/$name.pid \
  51. --status $openvpn_vardir/$name.status 60 \
  52. --config $cfgfile \
  53. --cd $openvpn_etcdir || exit $?
  54. done
  55. %stop -p 800 -u @l_susr@
  56. rcService openvpn enable yes || exit 0
  57. rcService openvpn active no && exit 0
  58. for cfgfile in $openvpn_etcdir/*.conf; do
  59. [ ".`grep '^disable' $cfgfile`" != . ] && continue
  60. name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
  61. openvpn_signal $name TERM
  62. done
  63. sleep 1
  64. for cfgfile in $openvpn_etcdir/*.conf; do
  65. [ ".`grep '^disable' $cfgfile`" != . ] && continue
  66. name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
  67. if [ -f $openvpn_etcdir/$name.sh -a ".$name" != .openvpn ]; then
  68. sh $openvpn_etcdir/$name.sh stop || true
  69. fi
  70. done
  71. if [ -f $openvpn_etcdir/openvpn.sh ]; then
  72. sh $openvpn_etcdir/openvpn.sh stop || true
  73. fi
  74. rm -f $openvpn_vardir/*.pid 2>/dev/null || true
  75. %restart -u @l_susr@
  76. rcService openvpn enable yes || exit 0
  77. rcService openvpn active no && exit 0
  78. rc openvpn stop start
  79. %reload -u @l_susr@
  80. rcService openvpn enable yes || exit 0
  81. rcService openvpn active no && exit 0
  82. for cfgfile in $openvpn_etcdir/*.conf; do
  83. [ ".`grep '^disable' $cfgfile`" != . ] && continue
  84. name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
  85. openvpn_signal $name USR1
  86. if [ -f $openvpn_etcdir/$name.sh ]; then
  87. sh $openvpn_etcdir/$name.sh reload || true
  88. fi
  89. done
  90. %daily -u @l_susr@
  91. rcService openvpn enable yes || exit 0
  92. for cfgfile in $openvpn_etcdir/*.conf; do
  93. [ ".`grep '^disable' $cfgfile`" != . ] && continue
  94. name=`echo "$cfgfile" | sed -e 's;^.*/\([^/]*\)\.conf;\1;'`
  95. shtool rotate -f \
  96. -n ${openvpn_log_numfiles} -s ${openvpn_log_minsize} -d \
  97. -z ${openvpn_log_complevel} -o @l_rusr@ -g @l_rgrp@ -m 644 \
  98. -P "${openvpn_log_prolog}" \
  99. -E "${openvpn_log_epilog}" \
  100. $openvpn_vardir/$name.log
  101. done