#!/bin/ksh
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
#egan@us.ibm.com
#(C)IBM Corp
#

. $XCATROOT/lib/functions

RESNAME=$(whatismyres2 $NODE)
NFS=$(tabdb $NODERESTAB $RESNAME $noderes_nfs_install)
MYMASTER=$(tabdb $NODERESTAB $RESNAME $noderes_config_server)

DHCP=0
TFTP=0
CONS=0
INSTALL=0
VNFS=0
SNMP=0
SYSLOG=0
NTP=0
DNS=0
WULF=0

for i in $*
do
	export $(echo $i | tr '[:lower:]' '[:upper:]')=1
done

if [ "$VNFS" = "1" ]
then
	logger -t xcat "Install: setup /srv/vnfs"
	cd /
	mkdir -p /srv/vnfs
	echo "$MYMASTER:/srv/vnfs /srv/vnfs nfs timeo=14,intr 1 2" >>/etc/fstab

	logger -t xcat "Install: copying /vnfs"
	mkdir -p /vnfs
	mkdir -p /vnfstmp
	mount -r -o nolock $NFS:/vnfs /vnfstmp 2>&1 | logger -t xcat
	cd /vnfstmp
	find . -print | cpio -dump /vnfs 2>&1 | logger -t xcat
	cd /
	umount /vnfstmp
	rmdir /vnfstmp

	logger -t xcat "Install: Setup NFS for /vnfs"
	case "$OSVER" in
		sles[89]|suse8*|suse9*|suse10*)
			echo "/vnfs *(ro,sync,no_root_squash)" >>/etc/exports
			chkconfig -a nfslock 2>&1 | logger -t xcat
			chkconfig -a nfsserver 2>&1 | logger -t xcat
			;;
		rh*)
			echo "/vnfs *(ro,sync,no_root_squash)" >>/etc/exports
			chkconfig --level 345 nfs on 2>&1 | logger -t xcat
			chkconfig --level 345 nfslock on 2>&1 | logger -t xcat
			;;
	esac
fi

if [ "$TFTP" = "1" ]
then
	logger -t xcat "Install: Setup TFTPD"
	cd /
	mkdir -p $TFTPDIR
	echo "$MYMASTER:$TFTPDIR $TFTPDIR nfs timeo=14,intr 1 2" >>/etc/fstab

	case "$OSVER" in
		sles[89]|suse8*|suse9*|suse10*)
			cp $XCATROOT/rc.d/atftpd.suse /etc/init.d/atftpd
			cd /usr/sbin
			ln -s /etc/init.d/atftpd rcatftpd
			chkconfig -a atftpd 2>&1 | logger -t xcat
			;;
		rh*)
			cp $XCATROOT/rc.d/atftpd /etc/rc.d/init.d/atftpd
			chkconfig --level 345 atftpd on 2>&1 | logger -t xcat
			;;
	esac
fi

if [ "$WULF" = "1" ]
then
	logger -t xcat "Install: Setup warewulf"
	case "$OSVER" in
		sles[89]|suse8*|suse9*|suse10*)
			#cp $XCATROOT/rc.d/wwautosyncd.suse /etc/init.d/wwautosyncd
			#cd /usr/sbin
			#ln -s /etc/init.d/wwautosyncd rcwwautosyncd
			#chkconfig -a wwautosyncd 2>&1 | logger -t xcat

			cp $XCATROOT/rc.d/vnfsd.suse /etc/init.d/vnfsd
			cd /usr/sbin
			ln -s /etc/init.d/vnfsd rcvnfsd
			chkconfig -a vnfsd 2>&1 | logger -t xcat

			cp $XCATROOT/rc.d/warewulfd.suse /etc/init.d/warewulf
			cd /usr/sbin
			ln -s /etc/init.d/warewulf rcwarewulf
			chkconfig -a wwwarewulf 2>&1 | logger -t xcat

			chkconfig --del wwnewd | logger -t xcat
			;;
		rh*)
			#cp $XCATROOT/rc.d/wwautosyncd /etc/rc.d/init.d/wwautosyncd
			#chkconfig --level 345 wwautosyncd on 2>&1 | logger -t xcat
			chkconfig --level 345 vnfsd on 2>&1 | logger -t xcat
			chkconfig --level 345 warewulf on 2>&1 | logger -t xcat
			chkconfig --del wwnewd | logger -t xcat
			;;
	esac

	cd /etc
	rm -rf warewulf
	mkdir warewulf
	echo "$MYMASTER:/etc/warewulf /etc/warewulf nfs timeo=14,intr 1 2" >>/etc/fstab
	rm -f /usr/sbin/wwinit

	cd /usr/sbin
	patch -p0 <$XCATROOT/patch/warewulf/ww26.warewulfd
	cd /usr/lib/warewulf/Warewulf
	patch -p0 <$XCATROOT/patch/warewulf/ww26.Config.pm
	case "$OSVER" in
		rh*)
			cd /etc/init.d
			patch -p0 <$XCATROOT/patch/warewulf/ww26.warewulf.init.d
			;;
	esac
fi

if [ "$CONS" = "1" ]
then
	logger -t xcat "Install: Setup conserver"
	case "$OSVER" in
		sles[89]|suse8*|suse9*|suse10*)
			cp $XCATROOT/rc.d/conserver.suse /etc/init.d/conserver
			cd /usr/sbin
			ln -s /etc/init.d/conserver rcconserver
			chkconfig -a conserver 2>&1 | logger -t xcat
			perl -pi -e 's!^CONCONFIG.*!CONCONFIG=/etc/conserver.cf!' /etc/init.d/conserver
			;;
		rh*)
			cp $XCATROOT/rc.d/conserver /etc/rc.d/init.d/conserver
			chkconfig --level 345 conserver on 2>&1 | logger -t xcat
			perl -pi -e 's!^CONCONFIG.*!CONCONFIG=/etc/conserver.cf!' /etc/rc.d/init.d/conserver
			;;
	esac

	cp -f $XCATROOT/etc/conserver.cf.$(hostname -s) /etc/conserver.cf
fi

if [ "$DHCP" = "1" ]
then
	NR=$(
		perl -ni -e "print \$1 if m/^subdhcpd\s+$(hostname -s),([^,]*?),([^,]*?),/" <$XCATROOT/etc/site.tab
	)
	echo "$XCATROOT/sbin/makedhcp $NR >/dev/null 2>&1" >>/etc/rc.local
	#echo "perl -pi -e 's/^.*makedhcp.*\\n$//' /etc/rc.local" >>/etc/rc.local
fi

if [ "$DNS" = "1" ]
then
	case "$OSVER" in
		rh*)
			START=$(
				grep -n "^#START named.conf" $0 | awk -F: '{print $1}'
			)
			START=$(($START + 1))
			END=$(
				grep -n "^#END named.conf" $0 | awk -F: '{print $1}'
			)
			END=$(($END - $START))
			tail +$START $0 | head -$END >/etc/named.conf
			MIP=$(host $MYMASTER | head -1 | awk '{print $NF}')
			perl -pi -e "s/MYMASTER/$MIP/" /etc/named.conf
			cp /etc/named.conf /var/named/chroot/etc
			chkconfig --level 345 named on
			;;
	esac
fi

exit 0

#START named.conf
options {
	directory "/var/named";
	dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
	forward only;
	forwarders {
		MYMASTER;
	};
};

controls {
	inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};

zone "." IN {
	type hint;
	file "named.ca";
};

zone "localdomain" IN {
	type master;
	file "localdomain.zone";
	allow-update { none; };
};

zone "localhost" IN {
	type master;
	file "localhost.zone";
	allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
	type master;
	file "named.local";
	allow-update { none; };
};

zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
	file "named.ip6.local";
	allow-update { none; };
};

zone "255.in-addr.arpa" IN {
	type master;
	file "named.broadcast";
	allow-update { none; };
};

zone "0.in-addr.arpa" IN {
	type master;
	file "named.zero";
	allow-update { none; };
};

include "/etc/rndc.key";
#END named.conf