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>