diff options
Diffstat (limited to 'security/openvpn-auth-oauth2/files')
-rw-r--r-- | security/openvpn-auth-oauth2/files/openvpn_auth_oauth2.in | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/security/openvpn-auth-oauth2/files/openvpn_auth_oauth2.in b/security/openvpn-auth-oauth2/files/openvpn_auth_oauth2.in new file mode 100644 index 000000000000..40015f4a8e4a --- /dev/null +++ b/security/openvpn-auth-oauth2/files/openvpn_auth_oauth2.in @@ -0,0 +1,148 @@ +#!/bin/sh + +# PROVIDE: openvpn_auth_oauth2 +# REQUIRE: FILESYSTEMS defaultroute netwait resolv +# BEFORE: NETWORKING +# KEYWORD: shutdown + +# Add the following line to /etc/rc.conf to enable openvpn_auth_oauth2: +# +# openvpn_auth_oauth2_enable="YES" +# +# You also can set alternative config with +# openvpn_auth_oauth2_config="/path/to/config" +# +# Multiple profiles are supported with +# +# openvpn_auth_oauth2_profiles="name1 name2" +# openvpn_auth_oauth2_name1_enable="YES" +# openvpn_auth_oauth2_name1_config="/path/to/config1" +# openvpn_auth_oauth2_name2_enable="YES" +# openvpn_auth_oauth2_name2_config="/path/to/config2" +# + +. /etc/rc.subr + +name=openvpn_auth_oauth2 +rcvar=openvpn_auth_oauth2_enable +desc="Single sign-on for OpenVPN" + +eval ": \${${name}_enable:=\"NO\"}" +eval ": \${${name}_config:=%%ETCDIR%%/openvpn-auth-oauth2.yml}" +load_rc_config "${name}" + +_openvpn_auth_oauth2="%%PREFIX%%/sbin/openvpn-auth-oauth2" +_common_daemon_args=-Sfc +_piddir=/var/run/openvpn-auth-oauth2 + +# Set PID file +pidfile="${_piddir}/openvpn-auth-oauth2.pid" + +required_files=${openvpn_auth_oauth2_config} +command=/usr/sbin/daemon +command_args="${_common_daemon_args} -p ${pidfile} -t ${name} \ +${_openvpn_auth_oauth2} --config ${openvpn_auth_oauth2_config}" +procname="${_openvpn_auth_oauth2}" +extra_commands=reload +reload_cmd=openvpn_auth_oauth2_reload +start_precmd="[ -d ${_piddir} ] || /usr/bin/install -d ${_piddir}" + +openvpn_auth_oauth2_reload() +{ + if [ "x${openvpn_auth_oauth2_profiles}" != "x" -a "x$1" != "x" ]; then + for profile in ${openvpn_auth_oauth2_profiles}; do + eval _enable="\${openvpn_auth_oauth2_${profile}_enable}" + case "x${_enable:-${openvpn_auth_oauth2_enable}}" in + x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee]) + continue + ;; + x[Yy][Ee][Ss]) + ;; + *) + if test -z "$_enable"; then + _var=openvpn_auth_oauth2_enable + else + _var=openvpn_auth_oauth2_"${profile}"_enable + fi + echo "Bad value" \ + "'${_enable:-${openvpn_auth_oauth2_enable}}'" \ + "for ${_var}. " \ + "Profile ${profile} skipped." + continue + ;; + esac + echo "===> openvpn-auth-oauth2 profile: ${profile}" + pidfile="${_piddir}/openvpn-auth-oauth2-${profile}.pid" + kill -HUP `cat ${pidfile}` + retcode="$?" + if [ "0${retcode}" -ne 0 ]; then + failed="${profile} (${retcode}) ${failed:-}" + else + success="${profile} ${success:-}" + fi + done + exit 0 + else + echo "===> openvpn-auth-outh2 profile ${profile} reloading" + kill -HUP `cat ${pidfile}` + fi +} + +if [ -n "$2" ]; then + profile="$2" + if [ "x${openvpn_auth_oauth2_profiles}" != "x" ]; then + eval openvpn_auth_oauth2_config="\${openvpn_auth_oauth2_${profile}_config:-%%ETCDIR%%/openvpn-auth-oauth2-${profile}.yml}" + if [ "x${openvpn_auth_oauth2_config}" = "x" ]; then + echo "You must define a configuration file (openvpn_auth_oauth2_${profile}_config)" + exit 1 + fi + + pidfile="${_piddir}/openvpn-auth-oauth2-${profile}.pid" + + [ -f ${pidfile} ] || /usr/bin/install /dev/null "${pidfile}" + + required_files="${openvpn_auth_oauth2_config}" + eval openvpn_auth_oauth2_enable="\${openvpn_auth_oauth2_${profile}_enable:-${openvpn_auth_oauth2_enable}}" + command_args="${_common_daemon_args} -t ${name}-${profile} -p ${pidfile} \ + ${_openvpn_auth_oauth2} \ + --config ${openvpn_auth_oauth2_config}" + else + echo "$0: extra argument ignored" + fi +else + if [ "x${openvpn_auth_oauth2_profiles}" != "x" -a "x$1" != "x" ]; then + for profile in ${openvpn_auth_oauth2_profiles}; do + eval _enable="\${openvpn_auth_oauth2_${profile}_enable}" + case "x${_enable:-${openvpn_auth_oauth2_enable}}" in + x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee]) + continue + ;; + x[Yy][Ee][Ss]) + ;; + *) + if test -z "$_enable"; then + _var=openvpn_auth_oauth2_enable + else + _var=openvpn_auth_oauth2_"${profile}"_enable + fi + echo "Bad value" \ + "'${_enable:-${openvpn_auth_oauth2_enable}}'" \ + "for ${_var}. " \ + "Profile ${profile} skipped." + continue + ;; + esac + echo "===> openvpn-auth-oauth2 profile: ${profile}" + %%PREFIX%%/etc/rc.d/openvpn_auth_oauth2 $1 ${profile} + retcode="$?" + if [ "0${retcode}" -ne 0 ]; then + failed="${profile} (${retcode}) ${failed:-}" + else + success="${profile} ${success:-}" + fi + done + exit 0 + fi +fi + +run_rc_command "$1" |