#!/bin/bash

source /etc/profile

limit="5000";
recovery=0;
hostname=`hostname`;
MAILQ_LIMIT=$MAILQ_LIMIT_DEFAULT;
PICKUP_LIMIT=$PICKUP_LIMIT_DEFAULT;


if [[ -z $MAILQ_LIMIT ]]; then
  MAILQ_LIMIT=100;
fi

if [[ -z $PICKUP_LIMIT ]]; then
  PICKUP_LIMIT=60;
fi

#echo "PICKUP_LIMIT: "$PICKUP_LIMIT
#echo "MAILQ_LIMIT: "$MAILQ_LIMIT

EMAIL_ADDR="webmaster@webhosting-franken.de"

## Prüfung auf Pufferüberlauf in php5-cgi
#used_swap=`free -m | awk '/Swap/ {print}' | awk '{print $3}'`;

#if [ $used_swap -gt $limit ]; then
#  ps aux > /tmp/prozessliste_datetime.txt
#  MSG="Swap Speicher voll!!! Führe Recovery aus.... $used_swap - Apache und MySQL wird neu gestartet und alles PHP Prozesse beendet!";
#  recovery=1;
#fi

## Pruefung pickup im Mail Log
pickup_log=`tail -n1000 /var/log/mail.log | grep postfix | grep pickup | wc -l`;

if [ "$pickup_log" -gt $PICKUP_LIMIT  ]; then

  MSG="SPAM Problem!!! PHP Mail Funktion.....";
  pickups=`tail -n500 /var/log/mail.log | grep pickup`
  echo "$MSG
  Mail Log: $pickups
" | mailx -s "$hostname Alert!" $EMAIL_ADDR
fi

## Pruefung Server Configuration Fehler
#pickup_log=`tail -n200 /var/log/mail.log | grep postfix | grep '451 4.3.5 Server configuration problem' | wc -l`;

#if [ "$pickup_log" -gt 1  ]; then

#  MSG="Server config Problem!!! ";

#  /var/www/system/bin/switch_pf_conf.sh

#  echo "$MSG" | mailx -s "$hostname Alert!" $EMAIL_ADDR
#fi


## Pruefung auf Nagios Alert im Syslog
http_fail=`tail -n20 /var/log/syslog | grep HTTP\;CRITICAL\;SOFT\;3\;CRITICAL`;

if [ "$http_fail" != ""  ]; then
  ps aux > /tmp/prozessliste_datetime.txt
  MSG="Apache Problem!!! Führe Recovery aus.... Apache wird neu gestartet";
  recovery=1;
fi


mysql_check=`/usr/lib/nagios/plugins/check_mysql -H localhost | awk '{print $5}'`;

if [ "$mysql_check" == "MySQL"  ]; then
  ps aux > /tmp/prozessliste_datetime.txt
  uptime > /tmp/uptime_load.txt

  MSG="MySQL Problem!!! Führe Recovery aus....MySQL wird neu gestartet";
  /etc/init.d/mysql stop
  /etc/init.d/apache2 stop
  killall php5-cgi
  /etc/init.d/mysql start
  sleep 30
  /etc/init.d/apache2 start
  recovery=0;
  echo $MSG | mailx -s "$hostname Alert!" $EMAIL_ADDR
fi

if [ $recovery -gt 0 ]; then
  /etc/init.d/apache2 stop
  killall php5-cgi
  /etc/init.d/apache2 start
  echo $MSG | mailx -s "$hostname Alert!" $EMAIL_ADDR
fi

### Mailq überwachen
MAILQ=`mailq >/tmp/mailq.txt; tail -n1 /tmp/mailq.txt | awk '{print $5}'`;
if [[ $MAILQ -gt $MAILQ_LIMIT ]]; then
  MSG=`cat /tmp/mailq.txt`
  echo "MAILQ: $MAILQ Mails
" $MSG | mailx -s "$hostname Alert!" $EMAIL_ADDR
  rm /tmp/mailq.txt
fi

### PHP FPM
