#!/bin/bash
# Kategorie: portal
# Kleines Tool zum Versenden von Warn-Mails aller Art
# emergmailer V. 0.1
# (C) 2017 Stefan Schaefer -- invis-server.org
# Qustions: stefan@invis-server.org

# License: GPLv3
# Dieses Programm ist freie Software. Sie können es unter den Bedingungen der 
# GNU General Public License, wie von der Free Software Foundation veröffentlicht,
# weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder
# (nach Ihrer Option) jeder späteren Version.

# Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen
# von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite 
# Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. 
# Details finden Sie in der GNU General Public License.

# Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem 
# Programm erhalten haben. Falls nicht, siehe <http://www.gnu.org/licenses/>. 

#Konfigurationsdaten
conffile="/etc/invis/invis.conf"
#passfile="/etc/invis/invis-pws.conf"

# Funktionen
# Werte aus Konfigurationsdatendatei extrahieren
# $1 = Konfigurationsdatei, $2 = Parameter, $3 Wert (Feld)
getconfdata() {
    cat $1 |grep "$2:" | cut -d ":" -f $3
}

# $1 muss das Result-Verzeichnis des Alarm-meldenden Scripts enthalten.
if [[ ! -z $1 ]]; then
    directory=$1
else
    exit 1
fi

# Empfänger der Warnmails
adminmail=`getconfdata $conffile "adMail" "2"`
# Absender der Warnmails
sender=`getconfdata $conffile "mailSender" "2"`

echo $adminmail
echo $sender


# aktuelles Datum ermitteln
datum=`date +%d.%m.%Y" "%R`

# Server Hostnamen ermitteln
server=`hostname -f`

# Warn-Email an zustaendigen Admin senden
# Testen ob innerhalb der letzten drei Tage bereits ein Alarm gesendet wurde
oldsent=`find $directory/sent -ctime +3 2> /dev/null`

# Wenn ein Alarm vor ueber drei Tagen oder noch gar nicht gesendet wurde $sent auf 1 setzen 
if [[ $oldsent != "" || ! -f $directory/sent ]]; then
    sent=1
fi

# email senden, wenn Alarm vorliegt und noch keine Mail gesendet wurde
if [[ -f $directory/alarm && $sent == 1 ]]; then
    cat $directory/alarm|mailx -s "$datum - Alarm auf Server: $server" -r $sender $adminmail 
    echo $datum > $directory/sent
fi

# Wenn kein Alarm vorliegt, alte sent Datei löschen
if [[ ! -f $directory/alarm ]]; then
    rm $directory/sent 2> /dev/null
fi
