#!/usr/bin/perl
#
# Lager grafer over agent_log fila (hvilke browsere som brukes)
# Skriver ut en HTML fil til $HTML_OUTPUT
#

# Log filen
$AGENT_LOG = '/var/lib/httpd/logs/almashriq/agent_log';

# Hvor utskriften skal gaa.
$HTML_OUTPUT = '/www/almashriq/htdocs/base/statistics/agent_log.html';

# Hvor lang er lengste grafen
$MAX_PIXELS = 300;

# Hvis en brower har færre req. enn dette, så regnes den under 'other'.
$OTHER_LIMIT = 20;

# Fellesnavn på alle browsere som har under $OTHER_LIMIT requests.
$OTHER_STRING = "Other browsers";


###########################################################################

# Omdirigerer utskriften
open OUT, ">$HTML_OUTPUT";
select( OUT );

# Hvilken måned var det for 15 dager siden (beregner altså forrige måned)
$month = `date --date '-15 day' '+%b %Y'`;

print "<html>";
print "<body bgcolor=\"FFFFFF\">";
print "<center>";
print "<a href=\"/\">";
print "<img src=\"/sys/almashriq-pan-head.gif\" border=0>";
print "</a>";
print "<h3>Browser statistics for $month</h3>\n";
print "<font size=-1>(Numbers based on requests)</font><br>";
print "<p>";
print "<table border=0 width=528>\n";  # Skriv ut som tabell


#Leser inn logfila. Og teller opp
open LOG, $AGENT_LOG;
while( <LOG> ) {
	if( $_ =~ /MSIE/ ) { $_ =~ s/Mozilla/MSIE/; } #Skill "MSIE-Mozilla" fra Mozilla
	$agent = (split / /, $_)[0];            #Trekk ut browsernavn
	$agent =~ s/(\/\d+)?\..*/$1\.xx/;	#Kutt vekk sekundaer ver. (1.3.2 -> 1.xx)
	chomp $agent;
	$count{$agent}++;			#Tell
}
close LOG;

# Legg sammen browsere som har mindre enn $OTHER_LIMIT req.
foreach (keys %count) {
	if( $count{$_}<$OTHER_LIMIT ) {
		$count{'Other browsers'} += $count{$_};
		delete $count{$_};
	}
}


# Finn hoeyeste antall requests ($top_req)
foreach (keys %count) {
	$top_req = $count{$_} if( $count{$_} > $top_req );
}

# Brukes til aa sortere %count. Hoeyeste verdi foerst
sub req_sort {
	$count{$b} <=> $count{$a};
}

# Sorter %top_browsers, og skriv ut
foreach (sort req_sort keys %count) {
	next if( $_ eq $OTHER_STRING ); #Ikke skriv ut 'other'
	$pix = int( $count{$_}/$top_req*$MAX_PIXELS );	#Hvor lang 'bar'/graf?

	print "<tr><td align=\"left\">$_</td>\n";
	print "<td align=\"left\">";
	print "<img src=\"/sys/pixel-brown.gif\" height=8 width=$pix>" unless ($pix == 0);
	print "</td>\n";
	print "<td align=\"left\">(".$count{$_}.")</td></tr>\n";
}

# Skriv ut 'other' til sist
$pix = int( $count{$OTHER_STRING}/$top_req*$MAX_PIXELS ); #Hvor lang 'bar'/graf?

print "<tr><td colspan=3>&nbsp;</td></tr>\n";

print "<tr><td align=\"left\">$OTHER_STRING</td>\n";
print "<td align=\"left\">";
print "<img src=\"/sys/pixel-brown.gif\" height=8 width=$pix>" unless ($pix == 0);
print "</td>\n";
print "<td align=\"left\">(".$count{$OTHER_STRING}.")</td></tr>\n";
print "</table>\n";

#sist oppdatert
$date =`date '+%y%m%d'`;

print "<a href=\"./\">";
print "<img src=\"/sys/almashriq-bottom-line.gif\" border=0>";
print "</a><br>\n";
print "<a href=\"/base/mailpage.html\">al\@mashriq</a><p>";
print "<font size=-1>$date</font>";
print "</body></html>";

close OUT;













