#!/bin/sh

set -e

remHost="$1"
localDir=/var/cache/xsltdhcp

DIFF=0
FAIL4=0
FAIL6=0
DIFFFILE="$(mktemp /tmp/dhcpupdate-log.XXXXXXXXXX)"

if [ -e "$localDir/dhcpd.conf.$remHost" ]; then
/usr/sbin/dhcpd -cf "$localDir/dhcpd.conf.$remHost" -t -q || FAIL4=1
if [ -e "$localDir/old/dhcpd.conf.$remHost" ]; then
	echo "=== DHCP4: $remHost" >> "$DIFFFILE"
	diff -u "$localDir/old/dhcpd.conf.$remHost" "$localDir/dhcpd.conf.$remHost" >> "$DIFFFILE" || DIFF=1
	echo "" >> "$DIFFFILE" >> "$DIFFFILE"
fi
mkdir -p "$localDir/old"
cp -a "$localDir/dhcpd.conf.$remHost" "$localDir/old/dhcpd.conf.$remHost"
fi

if [ -e "$localDir/dhcpd6.conf.$remHost" ]; then
/usr/sbin/dhcpd -6 -cf "$localDir/dhcpd6.conf.$remHost" -t -q || FAIL6=1
if [ -e "$localDir/old/dhcpd6.conf.$remHost" ]; then
	echo "=== DHCP6: $remHost" >> "$DIFFFILE"
	diff -u "$localDir/old/dhcpd6.conf.$remHost" "$localDir/dhcpd6.conf.$remHost" >> "$DIFFFILE" || DIFF=1
	echo "" >> "$DIFFFILE"
fi
mkdir -p "$localDir/old"
cp -a "$localDir/dhcpd6.conf.$remHost" "$localDir/old/dhcpd6.conf.$remHost"
fi


if [ "$FAIL4" -ne 0 ]; then
	echo "DHCP config check failed!" >&2
fi
if [ "$FAIL6" -ne 0 ]; then
	echo "DHCP6 config check failed!" >&2
fi

ERROR=""
if [ "$FAIL4" -ne 0 -o "$FAIL6" -ne 0 ]; then
	ERROR=" FAILED!"
fi
if [ "$DIFF" -ne 0  ]; then
	cat "$DIFFFILE" | mail -s "DHCP-Update $remHost$ERROR" root
fi
rm "$DIFFFILE"

if [ "$FAIL4" -ne 0 -o "$FAIL6" -ne 0 ]; then
	exit 1
fi

exit 0
