summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjvdias <jvdias@fedoraproject.org>2005-05-18 01:06:14 +0000
committerjvdias <jvdias@fedoraproject.org>2005-05-18 01:06:14 +0000
commitb7b41adc3141c553b28e3f7b2c00d02867c39b88 (patch)
tree15f0158781fb4ed478fa198410da9307d89c9697
parent62ddd56a8741b73c826ce222235c919dee3a86a3 (diff)
downloadbind-b7b41adc3141c553b28e3f7b2c00d02867c39b88.tar.gz
bind-b7b41adc3141c553b28e3f7b2c00d02867c39b88.tar.xz
bind-b7b41adc3141c553b28e3f7b2c00d02867c39b88.zip
fix bugs: 157601, 156797, 154335
-rwxr-xr-xnamed.init82
1 files changed, 56 insertions, 26 deletions
diff --git a/named.init b/named.init
index 42255ee..768a005 100755
--- a/named.init
+++ b/named.init
@@ -26,7 +26,6 @@ prog="named"
[ -r ${ROOTDIR}/etc/named.conf ] || exit 1
-
start() {
# Start daemons.
if [ -n "`/sbin/pidof named`" ]; then
@@ -34,10 +33,10 @@ start() {
return 1
fi
echo -n $"Starting $prog: "
- ckcf_options='';
+ ckcf_options='-z'; # enable named-checkzone for each zone (9.3.1+) !
if [ -n "${ROOTDIR}" -a "x${ROOTDIR}" != "x/" ]; then
OPTIONS="${OPTIONS} -t ${ROOTDIR}"
- ckcf_options="-t ${ROOTDIR}";
+ ckcf_options="$ckcf_options -t ${ROOTDIR}";
if [ -s /etc/localtime ]; then
cp -fp /etc/localtime ${ROOTDIR}/etc/localtime
fi;
@@ -51,8 +50,12 @@ start() {
no_write_master_zones=0
if [ -e /etc/selinux/config ]; then
. /etc/selinux/config
- if [ "$SELINUX" != 'disabled' ] && [ "$SELINUXTYPE" != "" ] && [ -d /etc/selinux/${SELINUXTYPE} ] && [ -e /etc/selinux/${SELINUXTYPE}/booleans ]; then
- . /etc/selinux/${SELINUXTYPE}/booleans
+ if [[ ( "$SELINUX" != 'disabled') && ("$SELINUXTYPE" != "") && (-d /etc/selinux/${SELINUXTYPE}) && (-e /etc/selinux/${SELINUXTYPE}/booleans || (-e /etc/selinux/${SELINUXTYPE}/booleans.local)) ]]; then
+ if [ -e /etc/selinux/${SELINUXTYPE}/booleans.local ]; then
+ . /etc/selinux/${SELINUXTYPE}/booleans.local;
+ else
+ . /etc/selinux/${SELINUXTYPE}/booleans;
+ fi;
if echo "$named_write_master_zones" | /bin/egrep -q '^[0-9]+$'; then
if [ "$named_write_master_zones" -eq 1 ] ; then
/bin/chown -f --from=root:named named:named $ROOTDIR/var/named
@@ -74,7 +77,7 @@ start() {
fi;
fi
conf_ok=0;
- if [ -x /usr/sbin/named-checkconf ] && /usr/sbin/named-checkconf $ckcf_options; then
+ if [ -x /usr/sbin/named-checkconf ] && [ -x /usr/sbin/named-checkzone ] && /usr/sbin/named-checkconf $ckcf_options >/dev/null 2>&1; then
conf_ok=1;
else
RETVAL=$?;
@@ -86,14 +89,19 @@ start() {
if [ $conf_ok -eq 1 ]; then
daemon /usr/sbin/$PROG -u named ${OPTIONS};
RETVAL=$?;
- else
- named_err=`/usr/sbin/named -g 2>&1 | sed s/\n/\\n/g`;
- if [ `tty` != "/dev/console" ]; then
- echo -e "\n$named_err";
- echo -n "Error in configuration file /etc/named.conf : ";
+ if [ $RETVAL -eq 0 ]; then
+ ln -s $ROOTDIR/var/run/named/named.pid /var/run/named.pid;
fi;
- failure $"Error in configuration file /etc/named.conf : $named_err";
- echo
+ else
+ named_err="`/usr/sbin/named-checkconf $ckcf_options 2>&1`";
+ echo
+ echo $"Error in named configuration"':';
+ echo "$named_err";
+ failure
+ echo
+ if [ -x /usr/bin/logger ]; then
+ echo "$named_err" | /usr/bin/logger -pdaemon.error -tnamed
+ fi;
return $RETVAL;
fi;
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/named
@@ -103,21 +111,28 @@ start() {
stop() {
# Stop daemons.
echo -n $"Stopping $prog: "
- /usr/sbin/rndc stop >/dev/null 2>&1
+ /usr/sbin/rndc stop || killproc named -TERM >/dev/null 2>&1
RETVAL=$?
- [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/named || {
-# killproc named
-# Never do this! Can cause corrupt zone files!
- /usr/sbin/rndc stop >/dev/null 2>&1
- RETVAL=$?
- [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/named
- echo
- return $RETVAL
- }
- success
- echo
+ if [ $RETVAL -eq 0 ]; then
+ rm -f /var/lock/subsys/named
+ rm -f /var/run/named.pid
+ else
+ /usr/sbin/rndc stop || killproc named -TERM >/dev/null 2>&1
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ rm -f /var/lock/subsys/named
+ rm -f /var/run/named.pid
+ fi;
+ fi;
+ if [ $RETVAL -eq 0 ]; then
+ success
+ else
+ failure
+ fi;
+ echo
return $RETVAL
}
+
rhstatus() {
/usr/sbin/rndc status
return $?
@@ -145,7 +160,19 @@ probe() {
# to offer to restart every time
/usr/sbin/rndc reload >/dev/null 2>&1 || echo start
return $?
-}
+}
+checkconfig() {
+ ckcf_options='-z'; # enable named-checkzone for each zone (9.3.1+) !
+ if [ -n "${ROOTDIR}" -a "x${ROOTDIR}" != "x/" ]; then
+ OPTIONS="${OPTIONS} -t ${ROOTDIR}"
+ ckcf_options="$ckcf_options -t ${ROOTDIR}";
+ fi;
+ if [ -x /usr/sbin/named-checkconf ] && [ -x /usr/sbin/named-checkzone ] && /usr/sbin/named-checkconf $ckcf_options ; then
+ return 0;
+ else
+ return 1;
+ fi
+}
# See how we were called.
case "$1" in
@@ -170,6 +197,9 @@ case "$1" in
probe)
probe
;;
+ checkconfig)
+ checkconfig
+ ;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|probe}"
exit 1