Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Aug 2016 13:22:27 +0000 (UTC)
From:      "Lev A. Serebryakov" <lev@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r420347 - head/dns/nsd/files
Message-ID:  <201608171322.u7HDMRUi044307@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: lev
Date: Wed Aug 17 13:22:27 2016
New Revision: 420347
URL: https://svnweb.freebsd.org/changeset/ports/420347

Log:
   Add profiles to nsd init script.
  
  PR:		211883
  Submitted by:	lev
  Approved by:	jaap@NLnetLabs.nl

Modified:
  head/dns/nsd/files/nsd.in

Modified: head/dns/nsd/files/nsd.in
==============================================================================
--- head/dns/nsd/files/nsd.in	Wed Aug 17 13:21:46 2016	(r420346)
+++ head/dns/nsd/files/nsd.in	Wed Aug 17 13:22:27 2016	(r420347)
@@ -11,6 +11,18 @@
 #
 # nsd_enable="YES"
 #
+# You could set alternative config with
+#
+# nsd_config="/path/to/config"
+#
+# Multiple profiles are supported with
+#
+# nsd_profiles="name1 name2"
+# nsd_name1_enable="YES"
+# nsd_name1_config="/path/to/config1"
+# nsd_name2_enable="YES"
+# nsd_name2_config="/path/to/config2"
+#
 
 . /etc/rc.subr
 
@@ -19,16 +31,77 @@ rcvar=nsd_enable
 
 # read settings, set default values
 load_rc_config "${name}"
-: ${nsd_enable="NO"}
+: ${nsd_enable:="NO"}
+: ${nsd_config:=%%ETCDIR%%/nsd.conf}
 
-config=${nsd_config:=%%ETCDIR%%/nsd.conf}
-required_files=${config}
-pidfile=`%%PREFIX%%/sbin/nsd-checkconf -f -o pidfile ${config}`
+# Set PID file
+_pidprefix=/var/run/${name}
+_cfgpidfile=$(%%PREFIX%%/sbin/nsd-checkconf -f -o pidfile ${nsd_config})
+pidfile=${_cfgpidfile:-${_pidprefix}.pid}
+
+required_files=${nsd_config}
 command="%%PREFIX%%/sbin/${name}"
-command_args="-c ${required_files}"
+command_args="-c ${nsd_config} -P ${pidfile}"
 extra_commands="reload"
 
-load_rc_config $name
+load_rc_config "${name}"
+
+if [ -n "$2" ]; then
+	profile="$2"
+	if [ "x${nsd_profiles}" != "x" ]; then
+		eval nsd_config="\${nsd_${profile}_config:-%%ETCDIR%%/nsd-${profile}.conf}"
+		if [ "x${nsd_config}" = "x" ]; then
+			echo "You must define a configuration file (nsd_${profile}_config)"
+			exit 1
+		fi
+		_cfgpidfile=$(%%PREFIX%%/sbin/nsd-checkconf -f -o pidfile ${nsd_config})
+		_defaultpidfile=$(%%PREFIX%%/sbin/nsd-checkconf -f -o pidfile /dev/null)
+		# Replace empty or default value with profile-based
+		if [ "x${_cfgpidfile}" = "x" -o "x${_cfgpidfile}" = "x${_defaultpidfile}" ] ; then 
+			pidfile=${_pidprefix}-${profile}.pid
+		else
+			pidfile=${_cfgpidfile}
+		fi
+		required_files="${nsd_config}"
+		eval nsd_enable="\${nsd_${profile}_enable:-${nsd_enable}}"
+		command_args="-c ${nsd_config} -P ${pidfile}"
+	else
+		echo "$0: extra argument ignored"
+	fi
+else
+	if [ "x${nsd_profiles}" != "x" -a "x$1" != "x" ]; then
+		for profile in ${nsd_profiles}; do
+			eval _enable="\${nsd_${profile}_enable}"
+			case "x${_enable:-${nsd_enable}}" in
+			x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee])
+				continue
+				;;
+			x[Yy][Ee][Ss])
+				;;
+			*)
+				if test -z "$_enable"; then
+					_var=nsd_enable
+				else
+					_var=nsd_"${profile}"_enable
+				fi
+				echo "Bad value" \
+				    "'${_enable:-${nsd_enable}}'" \
+				    "for ${_var}. " \
+				    "Profile ${profile} skipped."
+				continue
+				;;
+			esac
+			echo "===> nsd profile: ${profile}"
+			%%PREFIX%%/etc/rc.d/nsd $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"
-



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201608171322.u7HDMRUi044307>