#!/sbin/runscript # Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 VPNDIR="/etc/openvpn" VPN="${SVCNAME#*.}" if [ -n "${VPN}" ] && [ "${SVCNAME}" != "openvpn" ]; then VPNPID="/var/run/openvpn.${VPN}.pid" else VPNPID="/var/run/openvpn.pid" fi VPNCONF="${VPNDIR}/${VPN}.conf" depend() { need localmount net before netmount after bootmisc firewall } checktundevice() { if [ ! -e /dev/net/tun ]; then if ! modprobe tun ; then eerror "TUN/TAP support is not available in this kernel" return 1 fi fi if [ -h /dev/net/tun ] && [ -c /dev/misc/net/tun ]; then ebegin "Detected broken /dev/net/tun symlink, fixing..." rm -f /dev/net/tun ln -s /dev/misc/net/tun /dev/net/tun eend $? fi } start() { ebegin "Starting ${SVCNAME}" checktundevice || return 1 if [ ! -e "${VPNCONF}" ]; then eend 1 "${VPNCONF} does not exist" return 1 fi local args="" # If the config file does not specify the cd option, we do # But if we specify it, we override the config option which we do not want if ! grep -q "^[ \t]*cd[ \t].*" "${VPNCONF}" ; then args="${args} --cd ${VPNDIR}" fi start-stop-daemon --start --exec /usr/sbin/openvpn --pidfile "${VPNPID}" \ -- --config "${VPNCONF}" --writepid "${VPNPID}" --daemon ${args} eend $? "Check your logs to see why startup failed" } stop() { ebegin "Stopping ${SVCNAME}" start-stop-daemon --stop --exec /usr/sbin/openvpn --pidfile "${VPNPID}" eend $? } # vim: ts=4