MastodonHelp/web/clitools/maintain/pcloop.bash

42 lines
1.7 KiB
Bash
Executable file

#!/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=$(($(expr $(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=$(($(expr $(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=$(($(expr $(date "+%s") + 0)))
fi
done
exit 0;