#!/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 "\n";