# Remove stale entries in DB no longer found in check list
printf '%s\n' "Pruning database..."
for row in $($SQL $DB "SELECT site FROM problem;"); do
if ! read_checklist | grep $row >/dev/null 2>&1; then
db_rmsite "$row" && printf '%s\n' "Removing old record: $row"
fi
done
printf '%s\n' "Database pruning complete."
else
printf '%s' "Database not found at '$DB'\nCreating DB ... "
if db_create; then
@ -123,7 +137,7 @@ else
fi
# Check HTTP codes
for site in $(grep -v "^#\|^$" $CHKLIST | sort | uniq); do
for site in $(read_checklist); do
db_addsite $site
respcode=$(get_http_code $site)
case $respcode in
@ -150,33 +164,28 @@ for site in $(grep -v "^#\|^$" $CHKLIST | sort | uniq); do
esac
done || exit 2
### # Send compiled message if any problems were found
### if [ "$FAILURE" = "true" ]; then
### send_message "$MSG" && printf '%s\n' "Problems found. Message sent via Telegram bot" >&2 || printf '%s\n' "Problems found. Message sending has failed"
### fi
# Find down sites without sent alerts
unsent=$(sql $DB "SELECT count(*) FROM problem WHERE alert = 1 AND sent = 0;")
cleared=$(sql $DB "SELECT count(*) FROM problem WHERE alert = 0 AND sent = 1;")
down=$(sql $DB "SELECT count(*) FROM problem WHERE alert = 1;")
downlist=$(sql $DB "SELECT site FROM problem WHERE alert = 1;" | perl -p -e 's/\n/%0A/g')
unsent=$($SQL $DB "SELECT count(*) FROM problem WHERE alert = 1 AND sent = 0;")
cleared=$($SQL $DB "SELECT count(*) FROM problem WHERE alert = 0 AND sent = 1;")
down=$($SQL $DB "SELECT count(*) FROM problem WHERE alert = 1;")
downlist=$($SQL $DB "SELECT site FROM problem WHERE alert = 1;" | perl -p -e 's/\n/%0A/g')
# If ANY sites have unsent alerts, send a list of ALL sites in 'alert' state
if [ $unsent -gt 0 ]; then
ALERT="${HEADER}%0ASites Down:%0A${downlist}"
send_message "$ALERT" && printf '%s\n' "Problems found. Message sent via Telegram bot" >&2 || printf '%s\n' "Problems found. Message sending has failed"
sql $DB "UPDATE problem SET sent = 1 WHERE sent = 0 AND alert = 1;" #Prevents resending messages
$SQL $DB "UPDATE problem SET sent = 1 WHERE sent = 0 AND alert = 1;" #Prevents resending messages
fi
# If ALL sites have cleared alerts, send an all-clear
if [ $cleared -gt 0 ]; then
clearlist=$(sql $DB "SELECT site FROM problem WHERE alert = 0 AND sent = 1;" | perl -p -e 's/\n/%0A/g')
clearlist=$($SQL $DB "SELECT site FROM problem WHERE alert = 0 AND sent = 1;" | perl -p -e 's/\n/%0A/g')
CLEARED="${HEADER}%0AThese HTTP alerts have cleared:%0A${clearlist}"
if [ $down -gt 0 ]; then
CLEARED="${CLEARED}%0ASites still down:%0A${downlist}"
fi
send_message "$CLEARED" && printf '%s\n' "A site's alert status has cleared. Message sent via Telegram bot" >&2 || printf '%s\n' "A site's alert status has cleared. Message sending has failed"
sql $DB "UPDATE problem SET sent = 0 WHERE sent = 1 AND alert = 0;" #Prevents resending messages
$SQL $DB "UPDATE problem SET sent = 0 WHERE sent = 1 AND alert = 0;" #Prevents resending messages