diff options
author | William Hubbs <w.d.hubbs@gmail.com> | 2017-02-22 12:26:09 -0600 |
---|---|---|
committer | William Hubbs <w.d.hubbs@gmail.com> | 2017-02-22 14:45:16 -0600 |
commit | 4207e46622f584eb5f0cc10bbfd36f92f001a2e2 (patch) | |
tree | a6c7bbda013333e4a992d2157625d29e0536428d /support/init.d.examples/openvpn.in | |
parent | f6ea16159ec8583a6f2182578334aa00578cb080 (diff) |
move init.d examples under support and install them
Diffstat (limited to 'support/init.d.examples/openvpn.in')
-rw-r--r-- | support/init.d.examples/openvpn.in | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/support/init.d.examples/openvpn.in b/support/init.d.examples/openvpn.in new file mode 100644 index 00000000..95e94821 --- /dev/null +++ b/support/init.d.examples/openvpn.in @@ -0,0 +1,74 @@ +#!@SBINDIR@/openrc-run +# Copyright (c) 2007-2015 The OpenRC Authors. +# See the Authors file at the top-level directory of this distribution and +# https://github.com/OpenRC/openrc/blob/master/AUTHORS +# +# This file is part of OpenRC. It is subject to the license terms in +# the LICENSE file found in the top-level directory of this +# distribution and at https://github.com/OpenRC/openrc/blob/master/LICENSE +# This file may not be copied, modified, propagated, or distributed +# except according to the terms contained in the LICENSE file. + +vpn=${RC_SVCNAME#*.} +name="OpenVPN" +[ "$vpn" != openvpn ] && name="$name ($vpn)" +command=@PKG_PREFIX@/sbin/openvpn + +pidfile=@VARBASE@/run/"$RC_SVCNAME".pid +: ${openvpn_dir:=@PKG_PREFIX@/etc/openvpn} +: ${openvpn_config:=$openvpn_dir/$vpn.conf} +command_args="$openvpn_args --daemon --config $openvpn_config" +command_args="$command_args --writepid $pidfile" +required_dirs=$openvpn_dir +required_files=$openvpn_config + +# If we're an openvpn client, then supply a nice default config +# You can find sample up/down scripts in the OpenRC support/openvpn dir +if yesno $openvpn_client; then + : ${openvpn_up:=${openvpn_dir}/up.sh} + : ${openvpn_down:=${openvpn_dir}/down.sh} + command_args="$command_args --nobind --up-delay --up-restart --down-pre" + command_args="$command_args --up $openvpn_up" + command_args="$command_args --down $openvpn_down" + required_files="$required_files $openvpn_up $openvpn_down" + + in_background_fake="start stop" + start_inactive=YES +fi + +depend() +{ + need localmount net + use dns + after bootmisc +} + +start_pre() +{ + # Linux has good dynamic tun/tap creation + if [ "$RC_UNAME" = Linux ]; then + 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 -a -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 + else + if command -v kldload >/dev/null 2>&1; then + # Hammer the modules home by default + sysctl -a | grep -q '\.tun\.' || kldload if_tun + sysctl -a | grep -q '\.tap\.' || kldload if_tap + fi + fi + + # If the config file does not specify the cd option, we do + if ! grep -q "^[ \t]*cd[ \t].*" "$openvpn_config"; then + command_args="$command_args --cd $openvpn_dir" + fi +} |