#! /bin/bash SYSCONFIG_FILE="/etc/sysconfig/named" rc=0 function warnMessage() { logger "Warning: $1" } for configfile in ${SYSCONFIG_FILE} ${NAMED_CONF}; do if [ ! -f ${configfile} ]; then echo -n "Name server configuration file ${configfile} does not exist. " # Tell the user this has skipped [ $rc != 0 ] || rc=6 fi done . $SYSCONFIG_FILE : ${NAMED_CHECKCONF_BIN:=/usr/bin/named-checkconf} : ${NAMED_CHECKCONF_ARGS:=""} : ${ETC_RNDC_KEY:=/etc/rndc.key} : ${NEW_RNDC_KEY:=/var/lib/named/rndc.key} : ${RNDC_KEYSIZE:=512} : ${RNDC_BIN:="/usr/sbin/rndc"} : ${NAMED_CONF:="/etc/named.conf"} # Run all scripts defined in NAMED_INITIALIZE_SCRIPTS (/etc/sysconfig/named) for script in ${NAMED_INITIALIZE_SCRIPTS}; do test "${script:0:1}" = "/" || script="/usr/share/bind/${script}" if [ -x "$script" ]; then ${script} tmp=$?; [ $tmp = 0 ] || rc=$tmp else warnMessage "\"$script\" does not exist or is not executable. Check /etc/sysconfig/named" fi done # If /etc/rndc.key is not a symbolic link, # relocate any existing /etc/rndc.key to /var/lib/named # and put a symbolic link /etc/rndc.key -> /var/lib/named/rndc.key # Note that this will also satisfy any check for /etc/rndc.key being a plain file. if [ ! -L "$ETC_RNDC_KEY" ]; then [ -d /var/lib/named ] || mkdir /var/lib/named chown named: /var/lib/named [ -f "$ETC_RNDC_KEY" ] && mv "$ETC_RNDC_KEY" "$NEW_RNDC_KEY" ln -s "$NEW_RNDC_KEY" "$ETC_RNDC_KEY" # This may create a dangling symlink fi # If rndc.key does not exist in the new directory, create it if [ ! -f $NEW_RNDC_KEY ]; then warnMessage "File $NEW_RNDC_KEY not found. Creating it." /usr/sbin/rndc-confgen -a -b $RNDC_KEYSIZE -c $NEW_RNDC_KEY chmod 640 $NEW_RNDC_KEY chown root:named $NEW_RNDC_KEY fi # Make sure /etc/named.d/forwarders.conf exists [ -e /etc/named.d/forwarders.conf ] || touch /etc/named.d/forwarders.conf # Check the syntax of our 'named' configuration. if ! ${NAMED_CHECKCONF_BIN} ${NAMED_CHECKCONF_ARGS} >/dev/null; then [ $rc != 0 ] || rc=6 fi exit $rc