#!/usr/bin/perl
use CGI;
use CGI qw(:standard);
use strict;
use warnings;
use GD;
use GD::Graph;
use GD::Graph::bars;
use GD::Graph::Data;
$ENV{"PATH"} = "/usr/sbin:/usr/bin:/sbin:/bin";
print "Content-type: text/html\n\n";
print "
";
print "
";
print "\n";
print "Global Mail Statistics\n";
print "
\n";
print "
";
print "
";
my $str = qx(date);
print $str;
print "
";
#Passed CLEAN - Clean Mails
my $clean_total = qx(sudo grep -Ec 'amavis.*Passed CLEAN' /var/log/maillog);
#chomp($clean_total);
$clean_total =~ s/^\s+|\s+$//g;
#Blocked SPAM - Spam Mails
my $spam_total = qx(sudo grep -Ec 'amavis.*Blocked SPAM' /var/log/maillog);
#chomp($spam_total);
$spam_total =~ s/^\s+|\s+$//g;
#Blocked INFECTED - Virus Mails
my $virus_total = qx(sudo grep -Ec 'amavis.*Blocked INFECTED' /var/log/maillog);
#chomp($virus_total);
$virus_total =~ s/^\s+|\s+$//g;
#Blocked BANNED - Banned Mails exe,scr etc.
my $banned_total = qx(sudo grep -Ec 'amavis.*Blocked BANNED' /var/log/maillog);
#chomp($banned_total);
$banned_total =~ s/^\s+|\s+$//g;
#BAD-HEADER- - Bad Header Mails
my $badheader_total = qx(sudo grep -Ec 'amavis.*BAD-HEADER-' /var/log/maillog);
#chomp($badheader_total);
$badheader_total =~ s/^\s+|\s+$//g;
#REJECT - REJECT Mails
my $reject_total = qx(sudo grep -c 'reject' /var/log/maillog);
#chomp($reject_total);
$reject_total =~ s/^\s+|\s+$//g;
print "
";
my $data = GD::Graph::Data->new([
["Cleaned","Spam","Virus","Banned","BadHeader","Rejected"],
[ $clean_total, $spam_total, $virus_total, $banned_total, $badheader_total, $reject_total],
]) or die GD::Graph::Data->error;
#my $data = GD::Graph::Data->new([
# ["Cleaned","Spam","Virus","Banned","BadHeader","Rejected"],
# [10, 36, 0, 0, 0, 974],
#]) or die GD::Graph::Data->error;
my $graph = GD::Graph::bars->new(600,300);
$graph->set(
x_label => 'Category',
y_label => 'Count',
title => 'Global Mail Statistics',
# Show values on top of each bar
show_values => 1,
#y_max_value => 7,
y_tick_number => 8,
#y_label_skip => 3,
#x_labels_vertical => 1,
#show_values => 1,
#values_vertical => 1,
#values_space=> 4,
bar_spacing => 10,
shadow_depth => -4,
shadowclr => 'dred',
transparent => 0,
) or die $graph->error;
$graph->set_title_font("/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf",14);
$graph->set_x_axis_font("/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf",8);
$graph->set_y_axis_font("/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf",8);
$graph->set_x_label_font("/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf",12);
$graph->set_y_label_font("/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf",12);
$graph->plot($data) or die $graph->error;
my $file = 'bars.png';
open(my $out, '>', "../../../tmp/$file") or die "Cannot open '$file' for write: $!";
binmode $out;
print $out $graph->gd->png;
close $out;
system("sudo /bin/cp -pf /tmp/$file /var/www/html/");
print "
\n";
print "
";
print "";
print "