X-Git-Url: http://git.pld-linux.org/gitweb.cgi?a=blobdiff_plain;f=named.init;h=f22b6489b32dfce1aecc4b7c653c084e0a41325d;hb=HEAD;hp=cded20f8e894f611cca81f0f86dd0cb339eba9bb;hpb=df3ffb1ab50fe8b380326f607c3f841ce886141e;p=packages%2Fbind.git diff --git a/named.init b/named.init index cded20f..f22b648 100644 --- a/named.init +++ b/named.init @@ -3,7 +3,7 @@ # named This shell script takes care of starting and stopping # named (BIND DNS server). # -# chkconfig: 345 14 89 +# chkconfig: 345 11 89 # # description: named (BIND) is a Domain Name Server (DNS) \ # that is used to resolve host names to IP addresses. @@ -16,6 +16,8 @@ CHROOT_TO_DIR="/var/lib/named" # Source networking configuration . /etc/sysconfig/network +NAMED_OPT="" + # Try get config.. [ -f /etc/sysconfig/named ] && . /etc/sysconfig/named @@ -32,40 +34,122 @@ fi # Sanity check [ -e /etc/named.conf ] || exit 0 -start() { - # Check if the service is already running? - if [ ! -f /var/lock/subsys/named ]; then - msg_starting "Named" - [ -f /etc/localtime ] && cp -a /etc/localtime /var/lib/named/etc/localtime - touch /var/lib/named/named.log && \ - chown named:named /var/lib/named/named.log - daemon named -u named -t /var/lib/named \ - -c /etc/named.conf -n ${NUM_CPUS:-1} &1 + return $? +} + +checkconfig() { + local details=${1:-0} + + if [ $details -eq 1 ]; then + # run config test and display report (status action) + show "Checking %s configuration" "Named"; busy + local out + out=`configtest 2>&1` RETVAL=$? - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/named + [ $RETVAL -eq 0 ] && ok || fail + [ "$out" ] && echo >&2 "$out" else + # run config test and abort with nice message if failed + # (for actions checking status before action). + show "Checking %s configuration" "Named"; busy + configtest >/dev/null 2>&1 + RETVAL=$? + if [ $RETVAL -eq 0 ]; then + ok + else + fail + nls 'Configuration test failed. See details with %s "checkconfig"' $0 + exit $RETVAL + fi + fi +} + +start() { + # Check if the service is already running? + if [ -f /var/lock/subsys/named ]; then msg_already_running "Named" + return fi + + [ "$1" -eq 0 ] || checkconfig + msg_starting "Named" + modprobe -s capability > /dev/null 2>&1 + [ -f /etc/localtime ] && cp -puL /etc/localtime $CHROOT_TO_DIR/etc/localtime + touch $CHROOT_TO_DIR/named.log && \ + chown named:named $CHROOT_TO_DIR/named.log + daemon --pidfile $CHROOT_TO_DIR/named.pid /usr/sbin/named -u named \ + -t $CHROOT_TO_DIR -c /etc/named.conf $NAMED_OPT /dev/null 2>&1 + if [ ! -f /var/lock/subsys/named ]; then + msg_not_running "Named" + return + fi + + msg_stopping "Named" + killproc --pidfile $CHROOT_TO_DIR/named.pid named + rm -f /var/lock/subsys/named >/dev/null 2>&1 +} + +reload() { + if [ ! -f /var/lock/subsys/named ]; then + msg_not_running "Named" + RETVAL=7 + return + fi + + checkconfig + if [ -f /etc/rndc.conf ]; then + run_cmd "$(nls 'Reloading %s service' 'Named')" /usr/sbin/rndc reload else + msg_reloading "Named" + killproc named -HUP + RETVAL=$? + fi +} + +condrestart() { + if [ ! -f /var/lock/subsys/named ]; then msg_not_running "Named" + RETVAL=$1 + return fi + + checkconfig + stop + start } RETVAL=0 # See how we were called. case "$1" in start) - start + start ;; stop) - stop + stop + ;; + restart) + checkconfig + stop + start + ;; + try-restart) + condrestart 0 + ;; + reload|force-reload) + reload + ;; + checkconfig|configtest) + checkconfig 1 ;; status) status named @@ -78,27 +162,8 @@ case "$1" in fi fi ;; - reload|force-reload) - if [ -f /var/lock/subsys/named ]; then - if [ -f /etc/rndc.conf ]; then - run_cmd "$(nls 'Reloading %s service' 'Named')" /usr/sbin/rndc reload - else - msg_reloading "Named" - killproc named -HUP - RETVAL=$? - fi - else - msg_not_running "Named" - exit 7 - fi - - ;; - restart) - stop - start - ;; *) - msg_usage "$0 {start|stop|restart|reload|force-reload|status}" + msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|configtest|status}" exit 3 esac