S60openvpn 2.3 KB

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