ports/134768: Update port: net/tac_plus4 add profiles support to rc.d script

Ryan T.Dean rtdean at cytherianage.net
Thu May 21 01:00:11 UTC 2009


>Number:         134768
>Category:       ports
>Synopsis:       Update port: net/tac_plus4 add profiles support to rc.d script
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Thu May 21 01:00:10 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Ryan T. Dean
>Release:        FreeBSD 7.1-STABLE amd64
>Organization:
>Environment:
System: FreeBSD noisy.cytherianage.net 7.1-STABLE FreeBSD 7.1-STABLE #3: Sat Jan 10 00:14:55 UTC 2009 root at noisy.cytherianage.net:/usr/obj/usr/src/sys/GENERIC amd64


	
>Description:
	
The current tac_plus rc.d script is great for starting a single daemon process, however, sometimes you need to run multiple 
daemons to handle different segments or groups.  I've patched the tac_plus rc.d script to add profiles support.

>How-To-Repeat:
	
n/a
>Fix:

	

--- tac_plus4-rcd-script.patch begins here ---
--- ports/net/tac_plus4/files/tac_plus.in	2006-10-31 02:42:33.000000000 +0000
+++ ports/net/tac_plus4/files/tac_plus.in	2009-05-21 00:33:47.000000000 +0000
@@ -2,18 +2,24 @@
 #
 # $FreeBSD: ports/net/tac_plus4/files/tac_plus.in,v 1.1 2006/10/31 02:42:33 marcus Exp $
 #
+
 # PROVIDE: tac_plus
 # REQUIRE: DAEMON
+
 #
 # Add the following line to /etc/rc.conf to enable the TACACS+ daemon:
 #
-# tac_plus_enable="YES"
-#
-
-tac_plus_enable=${tac_plus_enable-"NO"}
-tac_plus_flags=${tac_plus_flags-"-C %%PREFIX%%/etc/tac_plus.conf"}
-
-. %%RC_SUBR%%
+# tac_plus_enable (bool):    Set to "NO" by default
+#    Set it to "YES" to enable tac_plus
+# tac_plus_flags (str):      Set to "" by default
+#    Extra flags to be passed to start command
+# tac_plus_profiles (str):   Set to "" by default
+#    Allows you to run multiple tac_plus daemons with 
+#    different settings
+# tac_plus_configfile (str): Set to "%%PREFIX%%/etc/tac_plus.conf" by default
+#    Allows you to specify a different config file for
+#    the tac_plus daemon
+. %%RC_SUBR%%
 
 name=tac_plus
 rcvar=`set_rcvar`
@@ -21,5 +27,72 @@
 command="%%PREFIX%%/bin/tac_plus"
 pidfile="/var/run/${name}.pid"
 
+tac_plus_enable=${tac_plus_enable:-"NO"}
+tac_plus_flags=${tac_plus_flags:-}
+tac_plus_profiles=${tac_plus_profiles:-}
+tac_plus_configfile=${tac_plus_configfile:-"%%PREFIX%%/etc/tac_plus.conf"}
+
 load_rc_config ${name}
+
+if [ -n "$2" ]; then
+	profile="$2"
+	if [ "x${tac_plus_profiles}" != "x" ]; then
+		eval tac_plus_configfile="\${tac_plus_${profile}_configfile:-}"
+		if [ "x${tac_plus_configfile}" = "x" ]; then
+			echo "You must define a configuration file (tac_plus_${profile}_configfile)"
+			exit 1
+		fi
+		required_files="${tac_plus_configfile}"
+		eval tac_plus_enable="\${tac_plus_${profile}_enable:-${tac_plus_enable}}"
+		eval tac_plus_flags="\${tac_plus_${profile}_flags:-${tac_plus_flags}}"
+		eval tac_plus_port="\${tac_plus_${profile}_port:-}"
+		eval tac_plus_ip="\${tac_plus_${profile}_ip:-}"
+	else
+		echo "$0: extra argument ignored"
+	fi
+else
+	if [ "x${tac_plus_profiles}" != "x" -a "x$1" != "x" ]; then
+		for profile in ${tac_plus_profiles}; do
+			eval _enable="\${tac_plus_${profile}_enable}"
+			case "x${_enable:-${tac_plus_enable}}" in
+				x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee])
+					continue
+					;;
+				x[Yy][Ee][Ss])
+					;;
+				*)
+					if test -z "$_enable"; then
+						_var=tac_plus_enable
+					else
+						_var=tac_plus_"${profile}"_enable
+					fi
+					echo "Bad value "\
+						"'${_enable:-${tac_plus_enable}}' "\
+						"for ${_var}.  "\
+						"Profile ${profile} skipped."
+					continue
+			esac
+			echo "====> tac_plus profile: ${profile}"
+			%%PREFIX%%/etc/rc.d/tac_plus $1 ${profile}
+			retcode="$?"
+			if [ "0${retcode}" -ne 0 ]; then
+				failed="${profile} (${retcode}) ${failed:-}"
+			else
+				success="${profile} ${success:-}"
+			fi
+		done
+		exit 0
+	fi
+fi
+
+tac_plus_flags="-C ${tac_plus_configfile} ${tac_plus_flags}"
+if [ "x${tac_plus_ip}" != "x" ]; then
+	pidfile="${pidfile}.${tac_plus_ip}"
+	tac_plus_flags="${tac_plus_flags} -B ${tac_plus_ip}"
+fi
+if [ "x${tac_plus_port}" != "x" ]; then
+	pidfile="${pidfile}.${tac_plus_port}"
+	tac_plus_flags="${tac_plus_flags} -p ${tac_plus_port}"
+fi
+
 run_rc_command "$1"
--- tac_plus4-rcd-script.patch ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list