#!/bin/sh
#
#  This script places the new systems hostname into a couple of files within
# the new image.
#
# Steve
# --
# http://www.steve.org.uk/



prefix=$1


#
#  Source our common functions
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
    . /usr/lib/xen-tools/common.sh
else
    . ./hooks/common.sh
fi


#
# Log our start
#
logMessage Script $0 starting

#
#  Determine the FQDN and Hostname
#
GUEST_FQDN=${hostname}
GUEST_HOSTNAME=`echo $GUEST_FQDN | awk -F'.' '{print $1}'`


#
#  Make sure the umask is correct
#
umask 022


#
#  Setup the mailname + hostname files.
#
echo $GUEST_HOSTNAME > ${prefix}/etc/hostname
echo $GUEST_FQDN > ${prefix}/etc/mailname


#
#  Fixup the /etc/hosts file upon the new image for
# machines with static IPs
#
if [ -z "${copyhosts}" ]; then
    #
    #  Copy localhost
    #
    cat > ${prefix}/etc/hosts <<EOF
127.0.0.1    localhost
EOF
    #
    #  Make sure our hostname and FQDN is resolvable
    #
    if [ -z "${dhcp}" ]; then
        #
        #  If dhcp is diabled, FQDN should resolve to our IP
        #
        cat >> ${prefix}/etc/hosts <<EOF
${ip1}    $GUEST_FQDN $GUEST_HOSTNAME
EOF
    else
        cat >> ${prefix}/etc/hosts <<EOF
127.0.1.1    $GUEST_FQDN $GUEST_HOSTNAME
EOF
    fi

    cat >> ${prefix}/etc/hosts <<EOF

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

EOF

else
    # Non-IPv6 stuff.
    grep -v '\(::\|IPv6\)' /etc/hosts > ${prefix}/etc/hosts

    # New entry.
    if [ -z "${dhcp}" ]; then
        cat >> ${prefix}/etc/hosts <<EOF
${ip1}    $GUEST_FQDN $GUEST_HOSTNAME

EOF
    else
    cat >> ${prefix}/etc/hosts <<EOF
127.0.1.1    $GUEST_FQDN $GUEST_HOSTNAME

EOF
    fi

    # IPv6 stuff.
    grep '\(::\|IPv6\)' /etc/hosts >> ${prefix}/etc/hosts
fi


#
#  Allow the host system to know the IP address of our new guest.
#
if [ -z "${dhcp}" ]; then

    if ( grep $GUEST_FQDN /etc/hosts > /dev/null ) ; then

        logMessage Host already has IP address for the host $GUEST_FQDN.

    else
        if [ -z "${nohosts}" ]; then

            logMessage Adding $GUEST_FQDN and $GUEST_HOSTNAME to /etc/hosts on the host
            echo "${ip1}    $GUEST_FQDN $GUEST_HOSTNAME" >> /etc/hosts

            #
            #  If we've updated the /etc/hosts file on the host machine
            # and there is an installation of dnsmasq installed then
            # reload it.
            #
            #  This will let the local LAN clients lookup the new address.
            #
            if [ -x /usr/sbin/dnsmasq ] ; then
                if [ -e /var/run/dnsmasq.pid ]; then

                    logMessage Allowing DNSMasq to restart.
                    kill -s HUP `cat /var/run/dnsmasq.pid`
                fi
            fi
        fi
    fi
fi


#
#  Log our finish
#
logMessage Script $0 finished
