#!/usr/bin/perl ##################################### # # # RobLog Version 4.02 # # Copyright 1998 by Rob Eisler # # eislerr@tdi.uregina.ca # # http://tdi.uregina.ca/~eislerr # # # # Last modified on May 27, 1998 # # # ##################################### # # Copyright Notice: # Copyright 1998 Robert S. Eisler. All Rights Reserved. # # This code may be used and modified by anyone so long as this header and # copyright information remains intact. By using this code you agree to # indemnify Robert S. Eisler from any liability that might arise from its # use. You must obtain written consent before selling or redistributing # this code. # # You should have received the file readme.txt with this distribution. # If not, please let me know where you obtained this copy of RobLog by # sending mail to eislerr@tdi.uregina.ca . The newest version of # readme.txt is always available at: # http://tdi.uregina.ca/~eislerr/cgi/roblog/readme.txt # Please see this file for further information. # ##################################### ## These are the variables you need to set ## $date = '/bin/date'; $logdir = '/home/gauri/docs/log'; $logurl = 'http://www.gauri.net/log'; @referers = ('http://www.gauri.net'); $timeoffset = 0; ######################################################################### # Don't change anything below here unless you know what you're doing :) # ######################################################################### print "Content-type: text/html\n\n"; print "\n"; print "\n\n"; print "\n"; &check_url; &get_date; &get_data; &hour; &weekday; &ip if ($ENV{REMOTE_ADDR}); &browser if ($ENV{HTTP_USER_AGENT}); &os if ($ENV{HTTP_USER_AGENT}); &referer if ($ENV{HTTP_REFERER}); &server if ($ENV{REMOTE_HOST}); &log; &index; print "\n\n"; exit; sub hour { # get old hour data open(FILE, "$logdir/hour.txt") || &file_open_error("hour.txt"); @hourinfo = ; close(FILE); $numhour = @hourinfo; ($h0,$h1,$h2,$h3,$h4,$h5,$h6,$h7,$h8,$h9,$h10,$h11,$h12,$h13,$h14,$h15,$h16,$h17,$h18,$h19,$h20,$h21,$h22,$h23,$hdate) = split(/``/,$hourinfo[0]); @h = ($h0,$h1,$h2,$h3,$h4,$h5,$h6,$h7,$h8,$h9,$h10,$h11,$h12,$h13,$h14,$h15,$h16,$h17,$h18,$h19,$h20,$h21,$h22,$h23); $total = 0; # add 1 to the current hour for ($a = 0; $a <= 23; $a++) { if ($savehour == $a) { $h[$a] = $h[$a] + 1; } $total = $total + $h[$a]; } # get percent, graph width for ($a = 0; $a <= 23; $a++) { $hp[$a] = sprintf("%.2f", ($h[$a]/$total) * 100); $g[$a] = int(5*$hp[$a])+1; } # write hour html file open(FILE, ">$logdir/hour.html") || &file_open_error("hour.html"); &header("Hits by Hour"); print FILE "Hourly stats reset on $hdate\.

\n"; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; for ($a = 0; $a <= 23; $a++) { $temp = $a + 1; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; } print FILE ""; print FILE ""; print FILE "\n"; print FILE "
HOURHITSPERCENTGRAPH
$a:00 - $temp:00$h[$a]$hp[$a]%
TOTAL$total100.00%.

\n"; print FILE "\n"; print FILE "\n"; print FILE "
RobLog Main
\n"; print FILE "\n"; close(FILE); # write hour data open(FILE, ">$logdir/hour.txt") || &file_open_error("hour.txt"); for ($a = 0; $a <= 23; $a++) { print FILE "$h[$a]``"; } print FILE "$hdate"; close(FILE); print "\n"; } # end sub hour sub weekday { # get old weekday data open(FILE, "$logdir/weekday.txt") || &file_open_error("weekday.txt"); @info = ; close(FILE); $numinfo = @info; ($sun, $mon, $tue, $wed, $thu, $fri, $sat, $wdate) = split(/``/,$info[0]); @d = ($sun,$mon,$tue,$wed,$thu,$fri,$sat); $total = 0; # add 1 to current day for ($a = 0; $a <= 6; $a++) { if ($wday == $a) { $d[$a] = $d[$a] + 1; } $total = $total + $d[$a]; } # get percent, graph width for ($a = 0; $a <= 6; $a++) { $dp[$a] = sprintf("%.2f", ($d[$a]/$total) * 100); $g2[$a] = int(5*$dp[$a]) + 1; } # write weekday html file open(FILE, ">$logdir/weekday.html") || &file_open_error("weekday.html"); &header("Hits by Weekday"); print FILE "Weekday stats reset on $wdate\.

\n"; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; for ($a = 0; $a <= 6; $a++) { print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; } print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE "
DAYHITSPERCENTGRAPH
$days[$a]$d[$a]$dp[$a]%
TOTAL$total100.00%.

\n"; print FILE "\n"; print FILE "\n"; print FILE "
RobLog Main
\n"; print FILE "\n"; close(FILE); # write weekday data open(FILE, ">$logdir/weekday.txt") || &file_open_error("weekday.txt"); for ($a = 0; $a <= 6; $a++) { print FILE "$d[$a]``"; } print FILE "$wdate"; close(FILE); print "\n"; } # end sub weekday sub ip { # get old ip data open(FILE, "$logdir/ip.txt") || &file_open_error("ip.txt"); @ipinfo = ; close(FILE); $numip = @ipinfo; ($newip, $xxx, $yyy, $zzz) = split(/\./,$ENV{REMOTE_ADDR}); $ipfound = 0; $total = 0; # add 1 to current ip for ($a = 0; $a < $numip; $a++) { ($ipaddr[$a], $ipcount[$a], $nochop) = split(/``/,$ipinfo[$a]); if ($ipaddr[$a] == $newip) { $ipcount[$a] ++; $ipfound = 1; } $total = $total + $ipcount[$a]; } # if this ip is new, create a new piece of data for it if ($ipfound == 0) { $ipaddr[$numip] = $newip; $ipcount[$numip] = 1; $numip++; $total++; } # the famous "Gugliotta Bubliotta" sort for ($a = 0; $a < $numip; $a++) { for ($b = ($numip - 1); $b > $a; $b--) { if ($ipcount[$b] > $ipcount[$b-1]) { $temp1 = $ipaddr[$b-1]; $ipaddr[$b-1] = $ipaddr[$b]; $ipaddr[$b] = $temp1; $temp2 = $ipcount[$b-1]; $ipcount[$b-1] = $ipcount[$b]; $ipcount[$b] = $temp2; } } } # get percent, graph width for ($a = 0; $a < $numip; $a++) { $ipp[$a] = sprintf("%.2f", ($ipcount[$a]/$total) * 100); $ipg[$a] = int(5*$ipp[$a]) + 1; } # write ip html file open(FILE, ">$logdir/ip.html") || &file_open_error("ip.html"); &header("Hits by IP"); print FILE "IP stats reset on $ipdate\.

\n"; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; for ($a = 0; $a < $numip; $a++) { if ($ipcount[$a] > 1) { print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; } elsif ($ipcount[$a] == 1) { print FILE "\n"; $a = $numip; } } print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE "
IPHITSPERCENTGRAPH
$ipaddr[$a]$ipcount[$a]$ipp[$a]%
1 hit from: $ipaddr[$a]"; for ($z = $a+1; $z < $numip; $z++) { print FILE ", $ipaddr[$z]"; } print FILE "
TOTAL$total100.00%.

\n"; print FILE "\n"; print FILE "\n"; print FILE "
RobLog Main
\n"; print FILE "\n"; close(FILE); # write ip data open(FILE, ">$logdir/ip.txt") || &file_open_error("ip.txt"); for ($a = 0; $a <= $numip; $a++) { if ($ipcount[$a] > 0) { print FILE "$ipaddr[$a]``$ipcount[$a]``xxx\n"; } } close(FILE); print "\n"; } # end sub ip sub browser { # get old browser data open(FILE, "$logdir/browser.txt") || &file_open_error("browser.txt"); @brinfo = ; close(FILE); $numbr = @brinfo; $newbr = $ENV{'HTTP_USER_AGENT'}; $useragent = $ENV{'HTTP_USER_AGENT'}; $foundmo = 'no'; $foundie = 'no'; @mo = (0,0,0,0); @ie = (0,0,0,0); $ver_num = '0'; $brfound = 0; $total = 0; # add 1 to current browser for ($a = 0; $a < $numbr; $a++) { ($oldbr, $oldbrcount, $nochop) = split(/``/,$brinfo[$a]); for ($z = 1; $z < 5; $z++) { if ($oldbr eq "Mozilla$z") { $mo[$z-1] = $oldbrcount; } elsif ($oldbr eq "Explorer$z") { $ie[$z-1] = $oldbrcount; } } if ($oldbr eq 'Lynx') { $lynx = $oldbrcount; } elsif ($oldbr eq 'Unknown') { $unknown = $oldbrcount; } } for ($a = 0; $a < 100; $a++) { if (substr($useragent,$a,7) eq "Mozilla") { $brfound = 1; $foundmo = 'yes'; $ver_num = substr($useragent,$a+8,1); } elsif (substr($useragent,$a,4) eq "MSIE") { $foundmo = 'no'; $foundie = 'yes'; $brfound = 1; $ver_num = substr($useragent,$a+5,1); $a = 100; } elsif (substr($useragent,$a,4) eq "Lynx") { $foundmo = 'no'; $lynx++; $a = 100; $brfound = 1; } } if ($foundmo eq 'yes') { if ($ver_num > 1) { $mo[$ver_num-1] ++; } else { $mo[0]++; } } elsif ($foundie eq 'yes') { if ($ver_num > 1) { $ie[$ver_num-1] ++; } else { $ie[0]++; } } if ($brfound == 0) { $unknown++; } $total = 0; for ($a = 0; $a < 4; $a++) { $total = $total + $ie[$a] + $mo[$a]; } $total = $total + $lynx + $unknown; # get percent, graph width for ($a = 0; $a < 4; $a++) { if ($mo[$a] == 0) { $mop[$a] = 0; $mog[$a] = 1; } else { $mop[$a] = sprintf("%.2f", ($mo[$a]/$total) * 100); $mog[$a] = int(5*$mop[$a])+1; } if ($ie[$a] == 0) { $iep[$a] = 0; $ieg[$a] = 1; } else { $iep[$a] = sprintf("%.2f", ($ie[$a]/$total) * 100); $ieg[$a] = int(5*$iep[$a])+1; } } if ($lynx == 0) { $lynxp = 0; $lynxg = 1; } else { $lynxp = sprintf("%.2f", ($lynx/$total) * 100); $lynxg = int(5*$lynxp)+1; } if ($unknown == 0) { $unknownp = 0; $unknowng = 1; } else { $unknownp = sprintf("%.2f", ($unknown/$total) * 100); $unknowng = int(5*$unknownp)+1; } $moto = 0; $motog = 0; $motop = 0; $ieto = 0; $ietog = 0; $ietop = 0; for ($a = 0; $a < 4; $a++) { $moto = $moto + $mo[$a]; $motop = sprintf("%.2f", $motop + $mop[$a]); $ieto = $ieto + $ie[$a]; $ietop = sprintf("%.2f", $ietop + $iep[$a]); } $motog = int(5*$motop)+1; $ietog = int(5*$ietop)+1; # write browser.html open(FILE, ">$logdir/browser.html") || &file_open_error("browser.html"); &header("Hits by Browser"); print FILE "Browser stats reset on $brdate\.

\n"; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; for ($a = 4; $a > 1; $a--) { print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; } print FILE ""; print FILE ""; print FILE ""; print FILE "\n\n"; print FILE "\n\n"; for ($a = 4; $a > 1; $a--) { print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; } print FILE ""; print FILE ""; print FILE ""; print FILE "\n\n"; print FILE "\n\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n\n"; print FILE "\n\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE "
BROWSERHITSPERCENTGRAPH
Netscape (Mozilla) - ver. $a$mo[$a-1]$mop[$a-1] %
Netscape (Mozilla) - other$mo[0]$mop[0] %
MS Internet Explorer - ver. $a$ie[$a-1]$iep[$a-1] %
MS Internet Explorer - other$ie[0]$iep[0] %
Netscape (Mozilla) Total$moto$motop %
MS Internet Explorer Total$ieto$ietop %
Lynx$lynx$lynxp %
Unknown$unknown$unknownp %
TOTAL$total100.00%.

\n"; print FILE "\n"; print FILE "\n"; print FILE "
RobLog Main
\n"; print FILE "\n"; # write browser data open(FILE, ">$logdir/browser.txt") || &file_open_error("browser.txt"); for ($a = 4; $a > 0; $a--) { print FILE "Mozilla$a``$mo[$a-1]``xxx\n"; print FILE "Explorer$a``$ie[$a-1]``xxx\n"; } print FILE "Lynx``$lynx``xxx\n"; print FILE "Unknown``$unknown``xxx\n"; close(FILE); print "\n"; } # end sub browser sub os { # get old OS data open(FILE, "$logdir/os.txt") || &file_open_error("os.txt"); @osinfo = ; close(FILE); $numos = @osinfo; $osfound = 0; $total = 0; for ($a = 0; $a < $numos; $a++) { ($tempos, $temposcount, $nochop) = split(/``/,$osinfo[$a]); if ($tempos eq "Windows 95") { $win95 = $temposcount; } elsif ($tempos eq "Windows NT") { $winnt = $temposcount; } elsif ($tempos eq "Macintosh") { $mac = $temposcount; } elsif ($tempos eq "Unix") { $unix = $temposcount; } elsif ($tempos eq "Windows 3.1") { $win31 = $temposcount; } elsif ($tempos eq "Win 16") { $win16 = $temposcount; } elsif ($tempos eq "Unknown") { $unknown = $temposcount; } } # figure out what os they're using for ($a = 0; $a < 100; $a++) { if ((substr($useragent,$a,5) eq "Win95") || (substr($useragent,$a,5) eq "win95") || (substr($useragent,$a,10) eq "Windows 95") || (substr($useragent,$a,10) eq "windows 95")) { $win95++; $a = 100; $osfound = 1; } elsif ((substr($useragent,$a,3) eq "Mac") || (substr($useragent,$a,3) eq "mac")) { $mac++; $a = 100; $osfound = 1; } elsif ((substr($useragent,$a,4) eq "Unix") || (substr($useragent,$a,4) eq "unix") || (substr($useragent,$a,5) eq "Linux") || (substr($useragent,$a,5) eq "linux") || (substr($useragent,$a,4) eq "Irix") || (substr($useragent,$a,4) eq "irix")) { $unix++; $a = 100; $osfound = 1; } elsif ((substr($useragent,$a,5) eq "WinNT") || (substr($useragent,$a,10) eq "Windows NT") || (substr($useragent,$a,5) eq "winNT") || (substr($useragent,$a,10) eq "windows NT")) { $winnt++; $a = 100; $osfound = 1; } elsif ((substr($useragent,$a,5) eq "Win16") || (substr($useragent,$a,6) eq "Win 16") || (substr($useragent,$a,5) eq "win16") || (substr($useragent,$a,6) eq "win 16")) { $win16++; $a = 100; $osfound = 1; } elsif ((substr($useragent,$a,7) eq "Win 3.1") || (substr($useragent,$a,6) eq "Win3.1") || (substr($useragent,$a,11) eq "Windows 3.1")) { $win31++; $a = 100; $osfound = 1; } } if ($osfound == 0) { $unknown++; } $total = $win95 + $winnt + $mac + $unix + $win31 + $win16 + $unknown; # get percent, graph width if ($win95 == 0) { $win95p = 0; $win95g = 1; } else { $win95p = sprintf("%.2f", ($win95/$total) * 100); $win95g = int(5*$win95p)+1; } if ($winnt == 0) { $winntp = 0; $winntg = 1; } else { $winntp = sprintf("%.2f", ($winnt/$total) * 100); $winntg = int(5*$winntp)+1; } if ($mac == 0) { $macp = 0; $macg = 1; } else { $macp = sprintf("%.2f", ($mac/$total) * 100); $macg = int(5*$macp)+1; } if ($unix == 0) { $unixp = 0; $unixg = 1; } else { $unixp = sprintf("%.2f", ($unix/$total) * 100); $unixg = int(5*$unixp)+1; } if ($win31 == 0) { $win31p = 0; $win31g = 1; } else { $win31p = sprintf("%.2f", ($win31/$total) * 100); $win31g = int(5*$win31p)+1; } if ($win16 == 0) { $win16p = 0; $win16g = 1; } else { $win16p = sprintf("%.2f", ($win16/$total) * 100); $win16g = int(5*$win16p)+1; } if ($unknown == 0) { $unknownp = 0; $unknowng = 1; } else { $unknownp = sprintf("%.2f", ($unknown/$total) * 100); $unknowng = int(5*$unknownp)+1; } # write os.html open(FILE, ">$logdir/os.html") || &file_open_error("os.html"); &header("Hits by Operating System"); print FILE "Operating System stats reset on $osdate\.

\n"; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE "
OSHITSPERCENTGRAPH
Windows 98$unknown$unknownp %
Windows 95$win95$win95p %
Windows NT$winnt$winntp %
Macintosh$mac$macp %
Unix$unix$unixp %
Windows 3.1$win31$win31p %
Win 16$win16$win16p %
TOTAL$total100.00%.

\n"; print FILE "\n"; print FILE "\n"; print FILE "
RobLog Main
\n"; print FILE "\n"; close(FILE); # write os data open(FILE, ">$logdir/os.txt") || &file_open_error("os.txt"); print FILE "Windows 95``$win95``xxx\n"; print FILE "Windows NT``$winnt``xxx\n"; print FILE "Macintosh``$mac``xxx\n"; print FILE "Unix``$unix``xxx\n"; print FILE "Windows 3.1``$win31``xxx\n"; print FILE "Win 16``$win16``xxx\n"; print FILE "Unknown``$unknown``xxx\n"; print FILE "Total``$total``xxx\n"; close(FILE); print "\n"; } # end sub os sub referer { # get old referer data open(FILE, "$logdir/referer.txt") || &file_open_error("referer.txt"); @rinfo = ; close(FILE); $numr = @rinfo; $r = $ENV{HTTP_REFERER}; for ($a = 0; $a < 70; $a++) { if (substr($r,$a,1) eq '?') { $r = substr($r,0,$a); $a = 70; } } $rfound = 0; $total = 0; $chopr = $r; chop($chopr); # add 1 to current referer for ($a = 0; $a < $numr; $a++) { ($rpage[$a], $rcount[$a], $nochop) = split(/``/,$rinfo[$a]); $temprpage = $rpage[$a]; $choppage = chop($temprpage); if ($temprpage eq $r || $choppage eq $r || $chopr eq $temprpage || $temprpage eq "$r\b/" || $temprpage eq "$r\/index.htm" || $temprpage eq "$r\/index.html" || $temprpage eq "$r\/index.shtml" || $temprpage eq "$r\/index.chtml" || $temprpage eq "$chopr\/index.htm" || $temprpage eq "$chopr\/index.html" || $temprpage eq "$chopr\/index.shtml" || $temprpage eq "$chopr\/index.chtml" || "$temprpage\/" eq $r || "$temprpage\/index.htm" eq $r || "$temprpage\/index.html" eq $r || "$temprpage\/index.shtml" eq $r || "$temprpage\/index.chtml" eq $r || "$choppage\/index.htm" eq $r || "$choppage\/index.html" eq $r || "$choppage\/index.shtml" eq $r || "$choppage\/index.chtml" eq $r) { $rcount[$a] ++; $rfound = 1; } $total = $total + $rcount[$a]; } # if this referer is new, create a new piece of data for it if ($rfound == 0) { $rpage[$numr] = $r; $rcount[$numr] = 1; $numr++; $total++; } # the famous "Gugliotta Bubliotta" sort for ($a = 0; $a < $numr; $a++) { for ($b = ($numr - 1); $b > $a; $b--) { if ($rcount[$b] > $rcount[$b-1]) { $temp3 = $rcount[$b-1]; $rcount[$b-1] = $rcount[$b]; $rcount[$b] = $temp3; $temp4 = $rpage[$b-1]; $rpage[$b-1] = $rpage[$b]; $rpage[$b] = $temp4; } } } # get percent, graph width for ($a = 0; $a < $numr; $a++) { $rp[$a] = sprintf("%.2f", ($rcount[$a]/$total) * 100); $rg[$a] = int(5*$rp[$a])+1; } # write referer html file open(FILE, ">$logdir/referer.html") || &file_open_error("referer.html"); &header("Hits by Referer"); print FILE "Referer stats reset on $redate\.

\n"; print FILE "\n\n"; print FILE ""; print FILE ""; print FILE ""; print FILE ""; print FILE "\n\n"; for ($a = 0; $a < $numr; $a++) { if ($rcount[$a] > 1) { if ($rpage[$a] eq substr($rpage[$a],0,50)) { print FILE "\n"; } else { $temp99 = substr($rpage[$a],0,50); print FILE "\n"; } print FILE "\n"; print FILE "\n"; print FILE "\n"; print FILE "\n\n"; } elsif ($rcount[$a] == 1) { print FILE "\n"; $a = $numr; } } print FILE ""; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE "
REFERER.HITSPERCENTGRAPH
$rpage[$a]
$temp99Go$rcount[$a]$rp[$a]%
1 hit from: "; if ($rpage[$a] eq substr($rpage[$a],0,50)) { print FILE "$rpage[$a]"; } else { $temp99 = substr($rpage[$a],0,50); print FILE "$temp99"; } for ($z = $a+1; $z < $numr; $z++) { if ($rpage[$z] eq substr($rpage[$z],0,50)) { print FILE ", $rpage[$z]"; } else { $temp99 = substr($rpage[$z],0,50); print FILE ", $temp99"; } } print FILE "
TOTAL.$total100.00%.

\n"; print FILE "\n"; print FILE "\n"; print FILE "
RobLog Main
\n"; print FILE "\n"; close(FILE); # write referer data open(FILE, ">$logdir/referer.txt") || &file_open_error("referer.txt"); for ($a = 0; $a <= $numr; $a++) { if ($rcount[$a] > 0) { print FILE "$rpage[$a]``$rcount[$a]``xxx\n"; } } close(FILE); print "\n"; } # end sub referer sub server { $total = 0; open(FILE, "$logdir/domain.txt") || &file_open_error("domain.txt"); @dinfo = ; close(FILE); for ($a = 0; $a < 248; $a++) { ($domain_ex[$a], $domain_real[$a], $nochop) = split(/``/,$dinfo[$a]); } open(FILE, "$logdir/server.txt") || &file_open_error("server.txt"); @sinfo = ; close(FILE); (@dcount) = split(/``/,$sinfo[0]); @domain_parts = split(/\./,$ENV{REMOTE_HOST}); $temp_number = @domain_parts; $find_me ="\U$domain_parts[$temp_number - 1]"; # count this and write server.txt open(FILE, ">$logdir/server.txt") || &file_open_error("server.txt"); for ($a = 0; $a < 248; $a++) { if ($domain_ex[$a] eq "$find_me") { $dcount[$a]++; } print FILE "$dcount[$a]"; print FILE "``"; $total += $dcount[$a]; } print FILE "xx"; close(FILE); # bubbles again for ($a = 0; $a < 248; $a++) { for ($b = 247; $b > $a; $b--) { if ($dcount[$b] > $dcount[$b-1]) { $tempaa = $domain_ex[$b-1]; $domain_ex[$b-1] = $domain_ex[$b]; $domain_ex[$b] = $tempaa; $tempbb = $dcount[$b-1]; $dcount[$b-1] = $dcount[$b]; $dcount[$b] = $tempbb; $tempcc = $domain_real[$b-1]; $domain_real[$b-1] = $domain_real[$b]; $domain_real[$b] = $tempcc; } } } # get percent, graph width if ($total > 0) { for ($a = 0; $a < 248; $a++) { $dp[$a] = sprintf("%.2f", ($dcount[$a]/$total) * 100); $dg[$a] = int(5*$dp[$a]) + 1; } } # write domain html file open(FILE, ">$logdir/server.html") || &file_open_error("server.html"); &header("Hits by Domain Extension"); print FILE "\n"; print FILE ""; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; for ($a = 0; $a < 248; $a++) { if ($dcount[$a] > 0) { print FILE ""; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; } } print FILE ""; print FILE ""; print FILE ""; print FILE ""; print FILE "\n"; print FILE "
EXTENSIONACTUALHITSPERCENTGRAPH
$domain_ex[$a]$domain_real[$a]$dcount[$a]$dp[$a]%
TOTAL.$total100.00%.

\n"; print FILE "\n"; print FILE "\n"; print FILE "
RobLog Main
\n"; print FILE "\n"; close(FILE); print "\n"; } # end sub server sub log { # get old logfile open(FILE, "$logdir/log.htm") || &file_open_error("log.htm"); @lines = ; close(FILE); $sizelines = @lines; $counter_max = 1; # add current hit to the log open (FILE, ">$logdir/log.htm") || &file_open_error("log.htm"); for ($a = 0; $a <= $sizelines; $a++) { $_ = $lines[$a]; if (//) { print FILE "\n"; print FILE ""; print FILE "$date\n"; print FILE ""; print FILE "Name Server
"; if ($ENV{REMOTE_HOST}) { print FILE "$ENV{REMOTE_HOST}
\n"; } else { print FILE "Unknown\n"; } print FILE ""; print FILE "IP Address
"; if ($ENV{REMOTE_ADDR}) { print FILE "$ENV{REMOTE_ADDR}
\n"; } else { print FILE "Unknown\n"; } print FILE ""; print FILE "User Agent
"; if ($ENV{HTTP_USER_AGENT}) { print FILE "$ENV{HTTP_USER_AGENT}\n"; } else { print FILE "Unknown\n"; } if ($ENV{HTTP_REFERER}) { print FILE ""; print FILE "Referring Page\n"; print FILE "(Go)\n"; } print FILE "\n\n"; print FILE ""; print FILE "\ \n"; } elsif (//) { print FILE "\n"; $counter_max++; if ($counter_max == $max) { $a = $sizelines; } } elsif (//) { $a = $sizelines; } else { print FILE "$_"; } } print FILE "\n"; print FILE "

\n"; print FILE "\n"; print FILE "\n"; print FILE "
RobLog Main
\n"; print FILE "
\n"; close(FILE); print "\n"; } # end sub log sub index { open(FILE, ">$logdir/index.html") || &file_open_error("index.html"); print FILE "\n"; print FILE "RobLog v4.02 Main Page\n\n"; print FILE "\n\n"; print FILE "\n"; print FILE "

\n\n"; print FILE "RobLog v4.02 Main
\n"; print FILE "with RobAdmin

\n"; print FILE "\n"; print FILE "Last Hit: $date.\n"; print FILE "\n"; print FILE "

\n"; print FILE "\n"; print FILE "\n"; print FILE "\n"; print FILE "\n"; print FILE "\n"; print FILE "\n"; print FILE "\n"; print FILE "\n"; print FILE "\n"; print FILE "\n"; print FILE "\n"; print FILE "\n"; print FILE "
Log FileHits by WeekdayHits by HourHits by IP \n"; print FILE "\n"; print FILE "\n"; print FILE "
\n"; print FILE "
\n"; print FILE "
\n"; print FILE "
Hits by BrowserHits by OSHits by RefererHits by Domain
RobAdminE-mail Rob
\n"; print FILE "

\n"; close(FILE); print "\n"; } # end sub index sub get_data { open(FILE, "$logdir/pwd.txt") || &file_open_error("pwd.txt"); @pwdinfo = ; close(FILE); ($p, $max, $ipdate, $brdate, $osdate, $redate, $nochop) = split(/``/,$pwdinfo[0]); } # end sub get_data sub get_date { @days = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'); @months = ('January','February','March','April','May','June','July','August','September','October','November','December'); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time + (3600*$timeoffset)); $savehour = $hour; $hour = "0$hour" if ($hour < 10); $min = "0$min" if ($min < 10); $sec = "0$sec" if ($sec < 10); $year = 1900 + $year; $date = "$days[$wday], $months[$mon] $mday, $year at $hour\:$min\:$sec"; } # end sub get_date sub header { local($passed) = @_; print FILE "\n"; print FILE "RobLog v4.02 - $passed\n\n"; print FILE "\n\n"; print FILE "\n"; print FILE "
\n"; print FILE "RobLog v4.02 - $passed

\n"; } # end sub header sub check_url { local($check_referer) = 1; if ($ENV{'HTTP_REFERER'}) { foreach $referer (@referers) { if ($ENV{'HTTP_REFERER'} =~ m|https?://([^/]*)$referer|i) { exit; } } } if ($ENV{'REMOTE_ADDR'}) { foreach $referer (@referers) { if ($ENV{'REMOTE_ADDR'} =~ m|([^/]*)$referer|i) { exit; } } } if ($ENV{'REMOTE_HOST'}) { foreach $referer (@referers) { if ($ENV{'REMOTE_HOST'} =~ m|([^/]*)$referer|i) { exit; } } } } # end sub check_url sub file_open_error { local($file) = @_; print "\n"; print "\n"; print "[ RobLog Error - "; print "Unable to open $file ]
\n"; exit; } # end sub file_open_error ### end of code ###