#!/bin/sh

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

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

CHECKS=''

CFG=$SDDIR/config/rsyncd-remote.conf
if [ -f $CFG ]; then
	. $CFG
fi


STF=$SPOOLDIR/rsyncd-remote.status

if ! (which nc >/dev/null); then
	echo "NC (netcat) not installed"
	exit 2
fi


check_tcp_string() {

	SERVPORT=$1

	if [ $# -gt 1 ]; then
		SERVNAME=$2
	else
		SERVNAME=$SERVPORT
	fi

	if ! (echo | nc -w 5 -q 2 127.0.0.1 $SERVPORT 2>/dev/null |grep '@RSYNCD:'>/dev/null) ; then
		echo $SERVNAME
		return 1
	fi
	return 0

}

check_all_ports() {

	for CHK in $CHECKS; do
		check_tcp_string `echo $CHK | tr ':' ' '`
	done
}

do_check() {
	RESULT=`check_all_ports`
	echo $RESULT >$STF
	echo $RESULT
}

if [ "$1" = "cron" ]; then
	RES=`do_check`
else
	if [ -f $STF ]; then
		RES=`cat $STF`
#		if [ -z "$RES" ]; then
#			RES=`do_check`
#		fi
	else
		RES=`do_check`
	fi

	if [ -n "$RES" ]; then
		echo $RES
		exit 1
	else
		echo "OK"
		exit 0
	fi

fi

exit 0