#!/bin/bash
trap "exit" INT
basedir=`dirname "$0"`
cd "$basedir/.."
mailcfgfp="../conf/mail.conf"
mailmta=`cat "${mailcfgfp}" | grep -P '^mta=' | sed -e 's/^mta=//' -e 's/^"//' -e 's/"$//'`
mailfrom=`cat "${mailcfgfp}" | grep -P '^from=' | sed -e 's/^from=//' -e 's/^"//' -e 's/"$//'`
mailto=`cat "${mailcfgfp}" | grep -P '^to=' | sed -e 's/^to=//' -e 's/^"//' -e 's/"$//'`
subj=""
lastmailts=0
newmailwait=$((12*60*60))
resurrfp=".pcresurrectdone"
cmdlogfp="peerscrawl.log"
logfp="pcloop.log"
resdom=25 # day of month when (or after when, if it has not been done already) to execute peerscrawl.php with a gracetime of 2 months
function log {
	echo `date "+%Y-%m-%d %H:%M:%S.%N"` "${1}" >> "${logfp}"
}
while true; do
	dom=$((`date "+%d"`+0))
	[ $dom -lt $resdom -a -f "$resurrfp" ] && rm "$resurrfp"
	if [[ ($dom -ge $resdom ) && !(-f "$resurrfp") ]]; then # use a gracetime of 2 months
		touch "$resurrfp"
		log "### Starting peerscrawl.php with a 2 months gracetime ###"
		./peerscrawl.php -g 2M -e peerscrawl.exclude &> $cmdlogfp
	else # use the default gracetime
		log "### Starting peerscrawl.php with the default gracetime ###"
		./peerscrawl.php -e peerscrawl.exclude &> $cmdlogfp
	fi
	pcrv=$?
	tail $cmdlogfp >> $logfp
	log "### THE END ###"
	cp "$cmdlogfp" "${cmdlogfp}.old"
	now=$((`date "+%s"`+0))
	if [ $(($now-$lastmailts)) -gt $newmailwait ]; then
		[ $pcrv == "0" ] && subj="peerscrawl.php: tutto ok :-)" || subj="peerscrawl.php: uscito con errore: ${pcrv} :-("
		tail $logfp | s-nail -s "${subj}" -S v15-compat -S from="${mailfrom}" -S smtp-use-starttls -S mta="${mailmta}" "${mailto}"
		lastmailts=$((`date "+%s"`+0))
	fi
done
exit 0;
