use strict;
print "Content-type: text/html\n\n";
my $file="\\inetpub\\wwwroot\\projects\\telebot\\serv-sant\\tbLOG.txt";
my $TITLE="Telebot Office Explorer Guestbook";
my $CAMPUS="\\.bradley\\.edu";
my $TESTERS="sant|sant\\.bradley\\.edu|tnt\\S+\.mtco\.com";
open (LOGFILE, "< $file") or die( "Couldn't Open LOG File");
my $visits =0;
my $offcampus =0;
my $oncampus =0;
my $tests =0;
my $max =0;
my %guests =();
my %campus =();
my %olek =();
my %domain =();
my %country =();
while( <LOGFILE>) {
if( /^(.+)\s+:\s+connected\s+\((.+)\)\s+from\s+(\S+)\/(\S+)$/o ) {
my ($date, $cli, $addr, $ipaddr)=($1, $2, $3, $4);
$visits++;
$addr=lc($addr);
if ( $addr !~ /^($TESTERS)$/io ) {
if ( $addr =~ /^(\d+\.\d+)\.\d+\.\d+$/o) {
$domain{"$1.*.*"}++;
$country{"??"}++;
} elsif ( $addr =~ /^(.*\.)?([^.]+\....)$/io) {
$domain{$2}++;
$country{"us"}++;
} elsif ( $addr =~ /^(.*\.)?([^.]+\.[^.]+\.(..))$/io) {
$domain{$2}++;
$country{$3}++;
} else {
$domain{$addr}++;
$country{"??"}++;
}
if ( $addr !~ /^\S+$CAMPUS$/io ) {
$offcampus++;
$guests{$addr}++;
} else {
$oncampus++;
$campus{$addr}++;
}
} else {
$tests++;
$olek{$addr}++;
}
if ($cli>$max) { $max=$cli; }
}
}
close (LOGFILE);
my $key;
my @kguests=keys(%guests);
my @kcampus=keys(%campus);
my @kdomain=keys(%domain);
my @kcountr=keys(%country);
print <<enough;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<!-- Created by Aleksander Olek Malinowski -->
<HTML>
<HEAD>
<TITLE>$TITLE</TITLE>
<META HTTP-EQUIV="Pragma" CONTENT="no cache">
<META HTTP-EQUIV="Refresh" CONTENT="600">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>
<FONT FACE="Arial,helvetica" COLOR="#CF0000">
$TITLE
</FONT>
</H1>
<PRE>
enough
my $visitors=$#kguests+$#kcampus+2;
my $ofcators=$#kguests+1;
my $oncators=$#kcampus+1;
my $domators=$#kdomain+1;
my $countors=$#kcountr+1;
print "<H3>VISITORS SUMMARY</H3>\n";
printf "Visitors: %5d\n", $visitors;
printf "off campus: %5d\n", $ofcators;
printf "on campus: %5d\n", $oncators;
print "\n";
printf "Domains: %5d\n", $domators;
printf "Countries: %5d\n", $countors;
print "\n";
printf "All Visits: %5d\n", $visits;
printf "off campus: %5d\n", $offcampus;
printf "on campus: %5d\n", $oncampus;
printf "in peak: %5d\n", $max;
print "\n\n\n";
print "<H3>VISITORS BY DOMAINS:</H3>\n";
print "visitor". " "x43 ."visits\n";
print "="x56 ."\n";
foreach $key (sort {$domain{$b} <=> $domain{$a}} @kdomain) {
printf "%-50s %5d\n", $key, $domain{$key};
}
print "\n\n\n";
print "<H3>BY COUNTRY:</H3>\n";
print "visitor". " "x43 ."visits\n";
print "="x56 ."\n";
foreach $key (sort {$country{$b} <=> $country{$a}} @kcountr) {
printf "%-50s %5d\n", $key, $country{$key};
}
print "\n\n\n";
print "<H3>OFF CAMPUS VISITOR LIST:</H3>\n";
print "visitor". " "x43 ."visits\n";
print "="x56 ."\n";
foreach $key (sort {$guests{$b} <=> $guests{$a}} @kguests) {
printf "%-50s %5d\n", $key, $guests{$key};
}
print "\n\n\n";
print "<H3>ON CAMPUS VISITOR LIST:</H3>\n";
print "visitor". " "x43 ."visits\n";
print "="x56 ."\n";
foreach $key (sort {$campus{$b} <=> $campus{$a}} @kcampus) {
printf "%-50s %5d\n", $key, $campus{$key};
}
print <<enough;
</PRE>
</BODY>
</HTML>
enough