#!/bin/bash

CHRBIN=/usr/sbin/chroot
GETENT=/usr/bin/getent
TIMEOUT=/usr/bin/timeout

if [ -z $SDDIR ]; then
    SDDIR=/etc/statusd
fi

if [ -z $SPOOLDIR ]; then
    SPOOLDIR=/var/spool/statusd
fi

STF=$SPOOLDIR/resolver.status

function resolvecheck() {

	RS=''

	if ! ($TIMEOUT 15 $GETENT ahosts nic.hu >/dev/null 2>&1); then
		RS="root"
	fi

	if [ -z "$RS" -a -d /chroot ]; then
		chdirs=`ls -1 /chroot`
		for chd in $chdirs; do
			if [ -d /chroot/$chd -a -f /chroot/$chd/etc/resolv.conf ]; then
				if [ -f /chroot/$chd/$TIMEOUT ]; then
					TO="$TIMEOUT 10"
				else
					TO=""
				fi
				if ! ($CHRBIN /chroot/$chd $TO $GETENT ahosts nic.hu >/dev/null 2>&1); then
					RS="$chd"
					break;
				fi
			fi
		done
	fi

	if [ -n "$RS" ]; then
		echo "$RS"
	else
		echo "OK"
	fi
}

if [ "$1" == "cron" ]; then
	RES=`resolvecheck`
	echo "$RES" >$STF
else
	if [ -f $STF ]; then
		RES=`cat $STF`
	else
		RES='check'
	fi

	if [ "$RES" != "OK" ]; then
		RES=`resolvecheck`
		echo "$RES" >$STF
	fi

	echo "$RES"

	if [ "$RES" != "OK" ]; then
		exit 2
	else
		exit 0
	fi
fi
