#! /bin/sh
#
#    s.dns-setup
#    VERSION: 2.1
#    DELTA DATE 02/07/97 
#    SCCS SOURCE: /export/home/instr/DNS/s.dns-setup  
#    @(#)dns-setup	2.1
#    CURRENT DATE AND TIME: 02/07/97 01:18:44
#
#    DEFINE A CLEANUP ROUTINE
#
#########################################################
#######             DEFINE PROCEDURES              ######
#########################################################
#
# PROMPT FOR SERVER INFORMATION
#
GET_INFO () {
echo
echo "Please Enter Your Root Server Name: \c"
read ROOT_SERVER
echo
echo "Please Enter Your Root Server IP Address"
echo "IP Address MUST Be In Dotted Decimal Format (1.2.3.4): \c"
read ROOT_IP
REV_IP=`echo ${ROOT_IP} | awk -F"." '{print $4"."$3"."$2"."$1}'`
echo
echo "ROOT SERVER IS:			 ${ROOT_SERVER}"
echo "ROOT IP ADDRESS IS:		 ${ROOT_IP}"
echo "REVERSED ROOT IP ADDRESS IS:	 ${REV_IP}"
echo
VERIFY
}

VERIFY () {
echo "Is this correct? (Y/N) \c"
read REPLY
case ${REPLY:="Y"} in
    [Yy]|[Yy][Ee][Ss])    break;;
    [Nn]|[Nn][Oo])        GET_INFO;;
    *)            GET_INFO;;
esac
}

SET_DOMAIN () {
DOMAINS=`(cd /var/named; ls *.zone | sed 's/.zone//' | sort)`
echo
echo "Please select a domain"
echo "Domains supported by ${ROOT_SERVER} are:"
echo
#
for NAME in ${DOMAINS}
do
    echo "	${NAME}"
done
#
echo
echo "Which domain will your local hosts be in? \c"
read DOMAIN
echo
echo "You have selected \"${DOMAIN:=root}\""
echo
echo "Is this correct? (Y/N) \c"
read REPLY
case ${REPLY:="Y"} in
    [Yy]|[Yy][Ee][Ss])    break;;
    [Nn]|[Nn][Oo])        SET_DOMAIN;;
    *)            SET_DOMAIN;;
esac

}

ENTER_HOSTS () {
while true
do 
    echo
    echo "Please Enter a Hostname or \"D\" For Done:  \c"
    read HOST
    if 
        [ "${HOST:=D}" = "D" -o "${HOST}" = "d" ]
    then 
        break 
    fi 
    echo "Please Enter This ${HOST}'s IP Address:  \c"
    read HOST_IP
    echo "You Have Entered  HOST: ${HOST}  ADDRESS: ${HOST_IP}"
    echo
    echo "Is this correct? (Y/N) \c"
    read REPLY
    case ${REPLY:="Y"} in
        [Yy]|[Yy][Ee][Ss])    :;;
        [Nn]|[Nn][Oo])        ENTER_HOSTS;;
        *)            ENTER_HOSTS;;
    esac
    HOST_REV_IP=`echo ${HOST_IP} | awk -F"." '{print $4"."$3"."$2"."$1}'`
    #
    # IT'S A BIT OF A CHEAT TO PUT ALL THE REVERSE ADDRESS DATA IN root.enoz,
    # BUT IT IS EASY AND EFFECTIVE FOR THIS PURPOSE.  REMEMBER THIS *SIMULATES*
    # REAL ROOT-LEVEL SERVERS ...
    #
    if
        [ "${DOMAIN}" = "root" ]
    then
        echo "${HOST}.	IN	A	${HOST_IP}" >> /var/named/${DOMAIN}.zone
        echo "${HOST_REV_IP}	IN	PTR	${HOST}."  >> /var/named/root.enoz
    else
        echo "${HOST}	IN	A	${HOST_IP}" >> /var/named/${DOMAIN}.zone
        echo "${HOST_REV_IP}	IN	PTR	${HOST}.${DOMAIN}."  >> /var/named/root.enoz
    fi
done
}


#########################################################
#######              PROGRAM STARTS                ######
#########################################################
clear
ROOT_SERVER=`uname -n`
ROOT_IP=`ifconfig -a | grep inet | grep -v 127.0.0.. | awk '{print $2}'`
REV_IP=`echo ${ROOT_IP} | awk -F"." '{print $4"."$3"."$2"."$1}'`
echo
echo "ROOT SERVER IS:			 ${ROOT_SERVER}"
echo "ROOT IP ADDRESS IS:		 ${ROOT_IP}"
echo "REVERSED ROOT IP ADDRESS IS:	 ${REV_IP}"
echo
#
VERIFY
#
# TEST FOR /var/named AND CREATE IF NEEDED
#
if
    [ ! -d /var/named ]
then
    echo "THERE IS NO /var/named!  CHECK THE CONFIGURATION!!!"
    exit 2
fi
#
# CHANGE DIRECTORY TO /var/named
#
cd /var/named
#
# EDIT ALL DNS DATABASE FILES TO UPDATE SERVER INFORMATION
#
echo
echo "Editing the database files ...\c"
#
for I in *.source
do
    echo ".\c"
    sed -e 's/YOUR_ROOT_SERVER/'${ROOT_SERVER}'/g' -e 's/ROOT_IP_ADDR/'${ROOT_IP}'/g' -e 's/ROOT_REV_IP/'${REV_IP}'/g' ${I} > `echo ${I} | sed 's/.source//'`
done
echo
#
# CLEAN UP SOURCE FILES
#
rm *.source
#
# SET DOMAIN SELECTION
#
echo
echo "You may now choose your domain."
echo "IF YOUR DOMAIN IS NOT ALREADY DEFINED,"
echo "simply press return for \"root\""
echo
SET_DOMAIN
#
echo
echo "You may now enter your hosts."
echo "IF YOUR DOMAIN WAS NOT ALREADY DEFINED,"
echo "simply enter in a full hostname such as:"
echo "newhost.newdomain.net"
echo
ENTER_HOSTS
#
# CONFIGURE AND START OR RESTART in.named
#
cp named.boot resolv.conf /etc
ps -ef | grep in.named | grep -v grep > /dev/null 2>&1
if
    [ $? = 0 ]
then
    kill `cat /etc/named.pid`
fi
echo
echo "Starting in.named ..."
in.named
echo
echo "Verifying Setup ..."
echo
echo "EXECUTING: # nslookup ${ROOT_SERVER}"
nslookup ${ROOT_SERVER}
echo
echo "EXECUTING: # nslookup ${ROOT_IP}"
nslookup ${ROOT_IP}
echo
echo "All Done!!!"
exit 0

