#!/bin/bash # $Header: /root/magellan-cvs/src/openvpn/openvpn.rc,v 1.2 2009-12-01 17:36:15 niro Exp $ #%rlevels: 3:s 4:s 5:s 0:k 1:k 2:k 6:k #%start: 24 #%stop: 76 #deps #%needs: #%before: #%after: source /etc/conf.d/rc source $rc_functions # Lockfile lock="/var/lock/openvpn" # PID directory piddir="/var/run/openvpn" # config directory configdir="/etc/openvpn" case "$1" in start) echo -e ${COLOREDSTAR}"Starting OpenVPN: " # load neccessary tun module modprobe tun >/dev/null 2>&1 # run startup script, if defined if [ -x ${configdir}/opnvpn-startup ] then echo " Running startup script ... " ${configdir}/openvpn-startup fi [ ! -d ${piddir} ] && install -d ${piddir} rm -f ${piddir}/*.pid # start every .conf in /etc/openvpn and run .sh if exists for config in ${configdir}/*.conf do echo " Starting server for ${config} ... " basename=$(basename ${config} .conf) # running user script if [[ -f ${configdir}/${basename}.sh ]] then echo " Running user-defined script for ${config} ... " source ${configdir}/${basename}.sh evaluate_retval fi rm -f ${piddir}/${basename}.pid start-stop-daemon --start --exec /usr/sbin/openvpn \ --pidfile ${piddir}/${basename}.pid -- \ --daemon --writepid ${piddir}/${basename}.pid \ --config ${config} --cd ${configdir} evaluate_retval done update_svcstatus $1 splash svc_started "$(basename $0)" 0 ;; stop) echo -e ${COLOREDSTAR}"Stopping OpenVPN:" for pidfile in ${piddir}/*.pid do basename=$(basename ${pidfile} .pid) echo " Stopping server for ${configdir}/${basename}.conf ... " start-stop-daemon --stop --exec /usr/sbin/openvpn --pidfile ${pidfile} evaluate_retval done # run shutdown script, if defined if [[ -x ${configdir}/openvpn-shutdown ]] then echo " Running shutdown script ... " ${configdir}/openvpn-shutdown evaluate_retval fi update_svcstatus $1 splash svc_stopped "$(basename $0)" 0 ;; restart) $0 stop sleep 2 $0 start ;; reload) for pidfile in ${piddir}/*.pid do basename=$(basename ${pidfile} .pid) echo " Reloading server for ${configdir}/${basename}.conf ... " kill -HUP $(< ${pidfile}) >/dev/null 2>&1 evaluate_retval done ;; reopen) for pidfile in ${piddir}/*.pid do basename=$(basename ${pidfile} .pid) echo " Reopen server for ${configdir}/${basename}.conf ... " kill -USR1 $(< ${pidfile}) >/dev/null 2>&1 evaluate_retval done ;; status) statusproc /usr/sbin/openvpn ;; *) echo "Usage: openvpn {start|stop|restart|reload|reopen|status}" exit 1 ;; esac exit 0