File: //scripts/dns_sync_slave2
#!/bin/bash
# CWP DNS Slave2 Sync script for additional dns servers
# Example Config, Don't edit this script
#USERNAME="SLAVE DNS USERNAME"
#SERVER="SLAVE DNS GUI IP"
#SSHPORT="22"
#SOURCESYNCLOCATION="/var/named/slave"
# Check domain is used for slave dns connection testing can be any or leave as centos-webpanel.com
#CHECKMAINDNS="centos-webpanel.com"
#LOCALSYNCLOCATION="/var/named/slave"
#LOCALCONFFILE="/etc/named/slave_additional.conf"
source /root/dns_sync_slave2.conf
# Check if all required configuration details are specified
if [ -z "$USERNAME" ] || [ -z "$SERVER" ] || [ -z "$SSHPORT" ] || [ -z "$SOURCESYNCLOCATION" ] || [ -z "$CHECKMAINDNS" ] || [ -z "$LOCALSYNCLOCATION" ] || [ -z "$LOCALCONFFILE" ];then
	echo "Configuration has missing values!"
	exit 1
fi
rsync --out-format="%n%L" -avz --delete  -e "ssh -p $SSHPORT" $USERNAME@$SERVER:$SOURCESYNCLOCATION/ $LOCALSYNCLOCATION/ | gawk '1;{fflush()}' RS='\r|\n' | \
(
	while read -r line
	do
		NUMBEROFWORDS=`echo "$line" | awk '{print NF}'`
		if [ "$NUMBEROFWORDS" -eq 2 ];then # Check that line has two words
			# Multiple words detected
			CHECKFORDELETE=`echo "$line" | awk '{print $1}'`
			if [ $CHECKFORDELETE = "deleting" ];then
				DELETEZONE=`echo "$line" | awk '{print $2}'`
				DELETEZONENAME=`echo "$line" | awk '{print $2}' | sed "s/db\.//"`
				# Delete zone
				echo "Deleting $DELETEZONENAME"
				sed -i "/\"$DELETEZONENAME\"/d" $LOCALCONFFILE; rm -f $LOCALSYNCLOCATION/$DELETEZONE; RELOADREQUIRED="yes"
			fi
		elif [ "$NUMBEROFWORDS" -eq 1 ];then # Check that line has only one word
			# New zone Add
			if [ ! -z "$line" ];then # Check that line is not empty
				if [ "$line" != "./" ];then
					CHECKFILENAMEVALIDATION=`echo "$line" | grep "^db."`
					if [ ! -z "$CHECKFILENAMEVALIDATION" ];then # Check that filename starts with db.
						ZONENAME=`echo "$line" | sed "s/db\.//"`
						echo "Adding New Zone $line"
						grep "\"$ZONENAME\"" $LOCALCONFFILE 2> /dev/null 1> /dev/null || echo "zone \"$ZONENAME\" { type master; file \"$LOCALSYNCLOCATION/$line\";};" >> $LOCALCONFFILE; RELOADREQUIRED="yes"
					fi
				fi
			fi
		else
			# Not in use for now
			THISISEMPTY="ITS EMPTY"
		fi
	done
	# Reload Named service if changes were done
	if [ ! -z "$CHECKMAINDNS" ];then
		if [ ! -z "$RELOADREQUIRED" ];then 
			dig a $CHECKMAINDNS @$SERVER +short && /usr/sbin/service named reload
		fi
	else
		if [ ! -z "$RELOADREQUIRED" ];then
			/usr/sbin/service named reload
		fi
	fi
)