55bb07d579
- openvpn_chrootdir variable was introduced for running openvpn in chroot - openvpn_flags variable was introduced for extra flag passed to openvpn ++pkgrevision
114 lines
2.5 KiB
Bash
114 lines
2.5 KiB
Bash
#!@RCD_SCRIPTS_SHELL@
|
|
#
|
|
# $NetBSD: openvpn.sh,v 1.4 2011/08/03 08:33:33 cheusov Exp $
|
|
#
|
|
# PROVIDE: openvpn
|
|
# REQUIRE: NETWORKING
|
|
#
|
|
# To start openvpn at startup, copy this script to /etc/rc.d. You will
|
|
# also need to set the following variables:
|
|
#
|
|
# openvpn=YES
|
|
#
|
|
# The following variables are optional:
|
|
#
|
|
# openvpn_cfg="server.conf" # whitespace-separated list of
|
|
# # OpenVPN config files relative to
|
|
# # directory @PKG_SYSCONFDIR@. If
|
|
# # set, then an openvpn process is
|
|
# # started for each file, otherwise
|
|
# # a process is started for all
|
|
# # *.conf files.
|
|
#
|
|
# openvpn_chrootdir="dir" # Chroot to "dir" after initialization.
|
|
# # See --chroot option for details.
|
|
#
|
|
# openvpn_flags="flags" # Flags to pass to the openvpn(8) command
|
|
#
|
|
# The "reset" action will trigger a SIGUSR1 restart of the OpenVPN
|
|
# process. Please read the openvpn(8) man page for more details.
|
|
#
|
|
# For information on how to write an OpenVPN config file, please read the
|
|
# openvpn(8) man page or check the website at:
|
|
#
|
|
# http://openvpn.net/
|
|
#
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="openvpn"
|
|
rcvar=$name
|
|
sysconfdir="@PKG_SYSCONFDIR@"
|
|
command="@PREFIX@/sbin/openvpn"
|
|
command_args="--cd $sysconfdir --daemon"
|
|
extra_commands="reload reset"
|
|
required_dirs="$sysconfdir"
|
|
|
|
start_cmd="openvpn_start"
|
|
reset_cmd="openvpn_reset"
|
|
|
|
openvpn_start()
|
|
{
|
|
command_args="$command_args $openvpn_flags"
|
|
if test -n "$openvpn_chrootdir"; then
|
|
command_args="$command_args --chroot $openvpn_chrootdir"
|
|
fi
|
|
|
|
: ${openvpn_cfg="*.conf"}
|
|
|
|
for d in $required_dirs; do
|
|
if [ ! -d "$d/." ]; then
|
|
warn "$d is not a directory."
|
|
return 1
|
|
fi
|
|
done
|
|
if [ -z "$openvpn_cfg" ]; then
|
|
warn "\$openvpn_cfg is empty."
|
|
return 1
|
|
fi
|
|
savewd="$PWD"
|
|
cd $sysconfdir
|
|
for f in $openvpn_cfg; do
|
|
if [ ! -r "$f" ]; then
|
|
warn "$f is not readable."
|
|
cd $savewd
|
|
return 1
|
|
fi
|
|
done
|
|
echo "Starting ${name}."
|
|
for f in $openvpn_cfg; do
|
|
doit="$command $command_args --config $f"
|
|
if ! eval $doit; then
|
|
cd $savewd
|
|
return 1
|
|
fi
|
|
done
|
|
cd $savewd
|
|
}
|
|
|
|
openvpn_reset()
|
|
{
|
|
if [ -z "$rc_pid" ]; then
|
|
if [ -n "$pidfile" ]; then
|
|
echo 1>&2 \
|
|
"${name} not running? (check $pidfile)."
|
|
else
|
|
echo 1>&2 "${name} not running?"
|
|
fi
|
|
exit 1
|
|
fi
|
|
echo "Triggering SIGUSR1 restart of ${name}."
|
|
if ! eval $_precmd && [ -z "$rc_force" ]; then
|
|
return 1
|
|
fi
|
|
_doit="kill -${sig_reload:-USR1} $rc_pid"
|
|
if [ -n "$_user" ]; then
|
|
_doit="su -m $_user -c 'sh -c \"$_doit\"'"
|
|
fi
|
|
if ! eval $_doit && [ -z "$rc_force" ]; then
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
load_rc_config $name
|
|
run_rc_command "$1"
|