#! /bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
SHELL=/bin/bash
tmpdir=/root/blockgen
mkdir -p $tmpdir

#preHeaderRe
cat /usr/local/assp/maillog.txt  | grep preHeaderRe | grep -v SPF | grep -v DNSBL | grep -v triplet | grep -v spf | grep -v tuplet | grep -v griplist | grep -vi Adminupdate | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | grep -v 127.0. | sort | uniq > $tmpdir/ips.txt
#MaxAUTHErrors
cat /usr/local/assp/maillog.txt  | grep MaxAUTHErrors | grep -v SPF | grep -v DNSBL | grep -v triplet | grep -v spf | grep -v tuplet | grep -v griplist | grep -vi Adminupdate | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | grep -v 127.0. | sort | uniq >> $tmpdir/ips.txt

BADIPS=$tmpdir/ips.txt
#prepare for CSF usage (CPanel)
awk '{print $0, "#do not delete"}' $BADIPS > $tmpdir/blockips.list.delete
#faz backup do arquivo
cp $tmpdir/blocklist.csf $tmpdir/blocklist.csf.tmp
#merge nos arquivos
sort -u $tmpdir/blockips.list.delete $tmpdir/blocklist.csf.tmp > $tmpdir/blocklist.csf
#
#reload csf
csf -r
#display result
echo "Results"
ori2=`cat $tmpdir/blocklist.csf.tmp | wc -l`
new2=`cat $tmpdir/blocklist.csf | wc -l`
echo "Pre: $ori2"
echo "Pos: $new2"

#LAST MIN CLEANUP
rm -f  $tmpdir/blocklist.csf.tmp $tmpdir/blockips.list.delete $tmpdir/ips.txt $tmpdir/blockips.list

#temp pra monitorar cron
now=`date`
echo "$now" >> $tmpdir/monit.txt
echo "Pre: $ori2" >> $tmpdir/monit.txt
echo "Pos: $new2" >> $tmpdir/monit.txt

#testa numero de linhas
if [ "$new2" -gt "500" ]; then
    echo "Iniciando Limpeza..."
    > $tmpdir/monit.txt
    echo "#Start on "$now > $tmpdir/monit.txt
    > $tmpdir/blocklist.csf
fi
