From 2d142c0e667ecf9516c6f7eada86ed9e30b09db0 Mon Sep 17 00:00:00 2001 From: "Tom Hendrikx (whyscream)" Date: Sun, 18 Jan 2009 18:38:55 +0000 Subject: net-dns/nsd: improved ebuild and initd script svn path=/sunrise/; revision=7668 --- net-dns/nsd/files/nsd.initd | 71 ++++++++++++++++++++++++++++----------------- 1 file changed, 44 insertions(+), 27 deletions(-) (limited to 'net-dns/nsd/files/nsd.initd') diff --git a/net-dns/nsd/files/nsd.initd b/net-dns/nsd/files/nsd.initd index 6295e018e..a2ad26a73 100644 --- a/net-dns/nsd/files/nsd.initd +++ b/net-dns/nsd/files/nsd.initd @@ -1,16 +1,17 @@ #!/sbin/runscript -# Copyright 1999-2008 Gentoo Foundation +# Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ # -opts="${opts} reload configtest" +opts="${opts} reload" description="NSD is an authoritative only, high performance, open source name server" description_start="Start the server" description_stop="Stop the server" -description_configtest="Check the syntax of the configuration file" -description_reload="Reload the database file" +description_reload="Rebuild zone database and reload it" -CONTROL="/usr/sbin/nsdc" +config_file=${config_file:-/etc/nsd/nsd.conf} +my_nsdc="/usr/sbin/nsdc" +my_nsd_checkconf="/usr/sbin/nsd-checkconf" depend() { need net @@ -18,40 +19,56 @@ depend() { provide auth-dns } -configtest() { - ebegin "Checking config" - if [ ! -e "/etc/nsd/nsd.conf" ]; then - eerror "You need to create an appropriate config file" - eerror "in /etc/nsd/ . An example can be found in /etc/nsd/nsd.conf.sample" - return 1 - fi - - if ! nsd-checkconf "/etc/nsd/nsd.conf"; then - eerror "You have errors in your configfile" - return 1 - fi - eend +_checkconf() { + if [ ! -e "${config_file}" ]; then + eerror "You need to create an appropriate config file." + eerror "An example can be found in /etc/nsd/nsd.conf.sample" + return 1 + fi + + if ! ${my_nsd_checkconf} "${config_file}"; then + eerror "You have errors in your configfile (${config_file})" + return 1 + fi + return 0 } -start() { - configtest || return 1 +_patch() { + local difffile=`${my_nsd_checkconf} -o difffile ${config_file}` + if test -s ${difffile}; then + ebegin "Patching NSD zone files" + ${my_nsdc} patch > /dev/null + eend $? + fi +} +_rebuild() { + if ! ${my_nsdc} rebuild > /dev/null; then + eerror "There was an error rebuilding the database. Please review your zone files." + return 1 + fi + return 0 +} + +start() { ebegin "Starting NSD" - ${CONTROL} start - ${CONTROL} running + _checkconf || return 1 + ${my_nsdc} start + ${my_nsdc} running eend $? } stop() { ebegin "Stopping NSD" - ${CONTROL} patch - ${CONTROL} stop + _patch + ${my_nsdc} stop eend $? } reload() { - configtest || return 1 - ebegin "Reloading NSD" - ${CONTROL} reload + ebegin "Rebuilding and reloading NSD zone database" + _checkconf || return 1 + _rebuild || return 1 + ${my_nsdc} reload eend $? } -- cgit v1.2.3-65-gdbad