#!/bin/bash
#
# Name: reporter.sh
# Version: 0.1.4
# Autor: Nastra (SmartApfel Forum)
# Credits: Vielen Dank an @NAB (Debianforum) und @det (SmartApfel Forum)!!!
# Beschreibung: Überwachung der Homebridge Instanzen und benachrichtig über Telegram.
# http://forum.smartapfel.de/forum/thread/1403-homebridge-tool-s-zum-system-update-und-instanzen-überwachen-mit-telegram/


############################## Hinweise ############################

# Allgemein:
# Das Skript ist ausgelegt mit der hbridge.cfg Config eingerichtet zu werden, es kann aber auch ohne diese benutzt werden wenn die entsprechenden Daten hier im Skript angegeben werden.
# Das Skript ist Multiuser tauglich und funktioniert auch mit anderen Usern als "pi" dafür (sudo nano /etc/systemd/system/reporter.service) aufrufen und die im Abschnitt [Service] User=pi gegen User=xxxx ersetzen. 
# Ebenfalls sollte darauf geachtet werden das im Usernamen vom Benutzerkonto keine Großbuchstaben verwendet werden.

# Abschnitt Telegram Config:
# Hier wird der Telegram Token und die ChatID eingetragen.

# Abschnitt Nachrichten Begrenzung:
# Hier wird festgelegt in welchem Abstand in Sekunden (flutschutz1) eine Benachrichtigung erfolgt.

# Abschnitt Suchbegriffe und Nachrichten:
# Hier wird festgelegt auf welche Ereignisse (suchbegriff1="homebridge.*FAILURE"reagiert wird. In der Zeile Nachricht (nachricht1="ACHTUNG: ") kann die gewünschte Mitteilung zum Ereignis festgelegt werden. 

# Abschnitt Überwachte Service:
# Hier wird festgelegt welche systemd Service (-u homebridge*) überwacht werden. Standardmäßig werden alle Homebridge Units überwacht.

# Abschnitt Nachrichten Erstellung:
# Nur relevant bei Erweiterung eines Suchbegriffes, dieser muss Sinngemäß kopiert und wieder eingefügt werden. Ebenfalls muss eine neuen Ziffer Sinngemäß eingetragen werden.

# Abschnitt Aktionen:
# Hier kann beim Eintreten eines Ereignis zusätzlich zu der Nachricht an Telegram eine Aktion ausgeführt werden, z.B. ein Restart etc.

# Abschnitt: Nachricht an Telegram
# Hier wird der TToken_reporter und die TChatID_reporter von Telegram eingetragen. Bsp: bot$123455/sendMessage -d chat_id=$12345


############################ Programm-Ordner festlegen ###########################

toolDir=$HOME/hbridge_install


###################### Pfad Config Datei (hbridge.cfg) ######################

[ -f $toolDir/hbridge.cfg ] && . $toolDir/hbridge.cfg


############################ Telegram Config ################################

#TToken_reporter=	# Telegram API Token, report senden
#TChatID_reporter=	# Telegram CHAT ID für "bot Chat", report senden


# Auslesen hbridge.cfg (Hier nichts ändern!)
if [ "$TChatID_reporter" == "" -o "$TToken_reporter" == "" ]; then
echo -e "Bitte die Variablen \"TToken_reporter\" und \"TChatID_reporter\" in der Datei \"/home/UserName/hbridge_install/hbridge.cfg\" setzen !" 2>&1
exit 254
fi

######################## Nachrichten Begrenzung ############################

flutschutz1=1800
letzteNachricht1=$(($(date +"%s")-$flutschutz1))


flutschutz2=1800
letzteNachricht2=$(($(date +"%s")-$flutschutz2))


flutschutz3=1800
letzteNachricht3=$(($(date +"%s")-$flutschutz3))


flutschutz4=1800
letzteNachricht4=$(($(date +"%s")-$flutschutz4))


flutschutz5=1800
letzteNachricht5=$(($(date +"%s")-$flutschutz5))


#flutschutz6=1800
#letzteNachricht6=$(($(date +"%s")-$flutschutz6))


############################# Suchbegriffe #################################

suchbegriff1="homebridge.*FAILURE"
nachricht1="ACHTUNG: "

suchbegriff2="error"
nachricht2="HINWEIS: "

suchbegriff3="ERROR"
nachricht3="HINWEIS: "

suchbegriff4="warning"
nachricht4="HINWEIS: "

suchbegriff5="Warning"
nachricht5="HINWEIS: "

#suchbegriff6="MaxListenersExceededWarning"
#nachricht6="HINWEIS: "


########################### Überwachte Service ##############################

#Vollständiges Journalctl
journalctl -f --since "now" | \

#Ausgewählte Service
#journalctl -u homebridge* -f --since "now" | \

while read -r zeile; do


########################## Nachrichten Erstellung ###########################

jetzt=$(date +"%s")

if grep --quiet "$suchbegriff1" <<< "$zeile" && [ $((letzteNachricht1+$flutschutz1)) -lt $(date +"%s ") ] ; then
nachricht=$nachricht1$zeile
letzteNachricht1=$jetzt
fi


if grep --quiet "$suchbegriff2" <<< "$zeile" && [ $((letzteNachricht2+$flutschutz2)) -lt $(date +"%s ") ] ; then
nachricht=$nachricht2$zeile
letzteNachricht2=$jetzt
fi


if grep --quiet "$suchbegriff3" <<< "$zeile" && [ $((letzteNachricht3+$flutschutz3)) -lt $(date +"%s ") ] ; then
nachricht=$nachricht3$zeile
letzteNachricht3=$jetzt
fi


if grep --quiet "$suchbegriff4" <<< "$zeile" && [ $((letzteNachricht4+$flutschutz4)) -lt $(date +"%s ") ] ; then
nachricht=$nachricht4$zeile
letzteNachricht4=$jetzt
fi


if grep --quiet "$suchbegriff5" <<< "$zeile" && [ $((letzteNachricht5+$flutschutz5)) -lt $(date +"%s ") ] ; then
nachricht=$nachricht5$zeile
letzteNachricht5=$jetzt
fi


#if grep --quiet "$suchbegriff6" <<< "$zeile" && [ $((letzteNachricht6+$flutschutz6)) -lt #$(date +"%s ") ] ; then
#nachricht=$nachricht6$zeile
#letzteNachricht6=$jetzt
#fi


########################## Aktionen ###############################

#if grep --quiet "$suchbegriff6" <<< "$zeile" ; then
#sudo systemctl restart homebridge-mi-flower-care.service
#fi


##################### Nachricht an Telegram #######################

if [ -n "$nachricht" ]; then
curl -s -X POST https://api.telegram.org/bot$TToken_reporter/sendMessage -d chat_id=$TChatID_reporter -d text="$nachricht"
nachricht=""
fi
done
