X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=named.init;h=f22b6489b32dfce1aecc4b7c653c084e0a41325d;hb=382d807794da0788ffa167b029ff0baa30e523f5;hp=fb0e4520b3efc8af5298b3b2529199aad27dc0c2;hpb=89e3a9a3c988786724665b4c88053166854db14c;p=packages%2Fbind.git diff --git a/named.init b/named.init index fb0e452..f22b648 100644 --- a/named.init +++ b/named.init @@ -3,84 +3,168 @@ # 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. +CHROOT_TO_DIR="/var/lib/named" + # Source function library . /etc/rc.d/init.d/functions # Source networking configuration . /etc/sysconfig/network +NAMED_OPT="" + # Try get config.. [ -f /etc/sysconfig/named ] && . /etc/sysconfig/named - + # Check that networking is up. -if is_no "${NETWORKING}"; then - msg_network_down "Named" - exit 1 +if is_yes "${NETWORKING}"; then + if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then + msg_network_down "Named" + exit 1 + fi +else + exit 0 fi - + # Sanity check [ -e /etc/named.conf ] || exit 0 -# See how we were called. -case "$1" in - start) - # Check if the service is already running? - if [ ! -f /var/lock/subsys/named ]; then - msg_starting "Named" - 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" - exit 1 + 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 +} + +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 + ;; stop) - if [ -f /var/lock/subsys/named ]; then - msg_stopping "Named" - killproc named - rm -f /var/lock/subsys/named >/dev/null 2>&1 - else - msg_not_running "Named" - exit 1 - fi + stop + ;; + restart) + checkconfig + stop + start + ;; + try-restart) + condrestart 0 + ;; + reload|force-reload) + reload + ;; + checkconfig|configtest) + checkconfig 1 ;; status) status named - if [ -f /etc/rndc.conf ] ; then + RETVAL=$? + if [ -f /etc/rndc.conf ]; then /usr/sbin/rndc status - RETVAL=$? - fi - ;; - reload) - if [ -f /var/lock/subsys/named ]; then - if [ -f /etc/rndc.conf ] ; then - run_cmd "Reloading named" /usr/sbin/rndc reload - else - msg_reloading "Named" - killproc named -HUP + RET=$? + if [ $RET -ne 0 ]; then + RETVAL=$RET fi - else - msg_not_running "Named" - exit 1 fi - - ;; - restart) - $0 stop - $0 start ;; *) - msg_usage "$0 {start|stop|status|reload|restart}" - exit 1 + msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|configtest|status}" + exit 3 esac exit $RETVAL