<br><b>OPTIONAL APPEARANCE SETUP SECTION (Not required but increase AWStats features)</b><br>
<ul>
+<li><a href="#MaxRowsInHTMLOutput">MaxRowsInHTMLOutput</a>
<li><a href="#Lang">Lang</a>
<li><a href="#DirLang">DirLang</a>
<li><a href="#Show">ShowHeader</a>
<li><a href="#ShowFlagLinks">ShowFlagLinks</a>
<li><a href="#ShowLinksOnUrl">ShowLinksOnUrl</a>
<li><a href="#MaxLengthOfURL">MaxLengthOfURL</a>
+<li><a href="#ShowLinksToWhoIs">ShowLinksToWhoIs</a>
+<li><a href="#LinksToWhoIs">LinksToWhoIs</a>
<li><a href="#HTMLHeadSection">HTMLHeadSection</a>
<li><a href="#HTMLEndSection">HTMLEndSection</a>
<li><a href="#Bar">BarWidth</a>
<br><br><hr>
<a name="LogFile"><b>LogFile</b></a><br>
+<b>Version : </b>1.0 +<br>
<br># "LogFile" contains the web server logfile to analyze.
<br># You can use a full path or relative path from awstats.pl directory.
<br># Example: "/var/log/apache/access.log"
<br><br><hr>
<a name="LogFormat"><b>LogFormat</b></a><br>
+<b>Version : </b>2.1 +<br>
<br># Put here your log format (Must agree with your web server. See setup
<br># instructions in README.txt to know how to configure your web server to have
<br># the required log format).
<br><br><hr>
<a name="DNSLookup"><b>DNSLookup</b></a><br>
+<b>Version : </b>1.0 +<br>
<br># If you want to have informations on domains/countries visitors, you must ask
<br># AWStats to make reverse DNS lookup (if not already done in your log file).
<br># If you set DNSLookup to 1, don't forget that reverse DNS lookup decrease
<br><br><hr>
<a name="DirData"><b>DirData</b></a><br>
+<b>Version : </b>1.0 +<br>
<br># When AWStats updates its statistics, it stores results of its analysis in
<br># files (AWStats database). All those files are written in the directory
<br># defined by the "DirData" parameter. Set this value to the directory where
<br><br><hr>
<a name="DirCgi"><b>DirCgi</b></a><br>
+<b>Version : </b>1.0 +<br>
<br># Relative or absolute web URL of your awstats.pl directory.
<br># This parameter is used only when AWStats is runned from command line
<br># with -output option (to generate links in HTML reported page).
<br><br><hr>
<a name="DirIcons"><b>DirIcons</b></a><br>
+<b>Version : </b>1.0 +<br>
<br># Relative or absolute web URL of all icons subdirectories.
<br># Default: "/icon" (means you must copy icon directories in "/mywwwroot/icon")
<br>#
<br><br><hr>
<a name="SiteDomain"><b>SiteDomain</b></a><br>
+<b>Version : </b>3.2 +<br>
<br># "SiteDomain" must contain the main domain name or the main intranet web
<br># server name used to reach the web site.
<br># This parameter is only used to generate full URLs links when ShowLinksOnUrl
<br><br><hr>
<a name="Hostaliases"><b>Hostaliases</b></a><br>
+<b>Version : </b>1.0 +<br>
<br># Put here all other possible domain names, addresses or virtual host aliases
<br># someone can use to access your site. Try to keep only the minimum number of
<br># possible names/adresses to have the best performances.
<br><br><hr>
<a name="AllowToUpdateStatsFromBrowser"><b>AllowToUpdateStatsFromBrowser</b></a><br>
+<b>Version : </b>3.0 +<br>
<br># When this parameter is set to 1, AWStats add a button on report page to
<br># allow to "update" statistics from a web browser. Warning, when "update" is
<br># made from a browser, AWStats is runned as a CGI by the web server user
<br><br><hr>
<a name="PurgeLogFile"><b>PurgeLogFile</b></a><br>
+<b>Version : </b>2.23 +<br>
<br># AWStats can purge log after processing it. By this way, the next time you
<br># launch AWStats, log file will be smaller and processing time will be better.
<br># IMPORTANT !!!
<br><br><hr>
<a name="ArchiveLogRecords"><b>ArchiveLogRecords</b></a><br>
+<b>Version : </b>2.1 +<br>
<br># When PurgeLogFile is setup to 1, AWStats will clean your log file after
<br># processing it. You can however keep an archive file (saved in "DirData") of
<br># all processed log records by setting this to 1 (For example if you want to
<br><br><hr>
<a name="DefaultFile"><b>DefaultFile</b></a><br>
+<b>Version : </b>1.0 +<br>
<br># Index page name for your web server.
<br># Example: "default.htm"
<br># Default: "index.html"
<br><br><hr>
<a name="SkipHosts"><b>SkipHosts</b></a><br>
+<b>Version : </b>1.0 +<br>
<br># Do not include access from clients that match following criteria.
<br># If your log file contains IP adresses in host field, you must put here
<br># matching IP adresses criteria.
<br><br><hr>
<a name="SkipDNSLookupFor"><b>SkipDNSLookupFor</b></a><br>
+<b>Version : </b>3.0 +<br>
<br># You can specify specific IP addresses that should NOT be looked up in
<br># the DNS. You may specify partial addresses (ie 163.85. for everything
<br># behind the usual firewall setup, etc)...
<br><br><hr>
<a name="SkipFiles"><b>SkipFiles</b></a><br>
+<b>Version : </b>1.0 +<br>
<br># Use SkipFiles to ignore access to URLs that match one of following entries.
<br># You can, with this option, add a list of not important frame pages (like
<br># menus, etc...) to exclude them from statistics.
<br><br><hr>
<a name="OnlyFiles"><b>OnlyFiles</b></a><br>
+<b>Version : </b>3.0 +<br>
<br># Include in stats, only accesses to URLs that match one of following entries.
<br># For example, if you want AWStats to filter access to keep only stats that
<br># match a particular string, like a particular directory, you can add this
<br><br><hr>
<a name="NotPageList"><b>NotPageList</b></a><br>
+<b>Version : </b>3.2 +<br>
<br># Add here a list of kind of url (file extension) that must be counted as
<br># "Hit only" and not as a "Hit" and "Page viewed". You can set here all images
<br># extensions as they are hit downloaded that must be counted but they are not
<br><br><hr>
<a name="NbOfLinesForCorruptedLog"><b>NbOfLinesForCorruptedLog</b></a><br>
+<b>Version : </b>3.2 +<br>
<br># To help you to detect if your log format is good, AWStats report an error
<br># if the first NbOfLinesForCorruptedLog lines have all a format that does not
<br># match the LogFormat parameter.
<br><br><hr>
<a name="SplitSearchString"><b>SplitSearchString</b></a><br>
+<b>Version : </b>2.24 +<br>
<br># Search engines keywords reported are full search string or separate keywords
<br># Possible values:
<br># 0 - Search keywords reported are full search string (ie: "town maps")
<br><br><hr>
+<a name="MaxRowsInHTMLOutput"><b>MaxRowsInHTMLOutput</b></a><br>
+<b>Version : </b>4.0 +<br>
+<br># To avoid too large web pages, you can ask AWStats to limit number of rows of
+<br># all reported charts to this number when no other limit apply.
+<br># Default: 1000
+<br>#
+<br>MaxRowsInHTMLOutput=1000
+
+<br><br><hr>
+
<a name="Lang"><b>Lang</b></a><br>
+<b>Version : </b>2.1 +<br>
<br># Set your primary language.
<br># Possible value:
<br># Bosnian=ba, Chinese (Taiwan)=tw, Chinese (Traditional)=cn, Czech=cz,
<br><br><hr>
<a name="DirLang"><b>DirLang</b></a><br>
+<b>Version : </b>2.1 +<br>
<br># Set the location of language files.
<br># Example: "/opt/awstats/lang"
<br># Default: "./lang" (means lang directory is in same location than awstats.pl)
<br><br><hr>
<a name="Show"><b>Show...</b></a><br>
+<b>Version : </b>3.2 +<br>
<br># You choose here which summary report you want to see in the main page.
<br># Whatever is your setup here, all detailed reports are still available.
<br># So if you setup to 1 only ShowHeader, ShowMenu and ShowMonthDayStats, all
<br><br><hr>
<a name="Max"><b>Max...</b></a><br>
+<b>Version : </b>1.0 +<br>
<br># This value can be used to choose maximum number of lines shown for each
<br># particular reporting.
<br>#
<br><br><hr>
<a name="FirstDayOfWeek"><b>FirstDayOfWeek</b></a><br>
+<b>Version : </b>3.2 +<br>
<br># Choose if you want week to start on sunday or monday
<br># Possible values:
<br># 0 - Week start on sunday
<br><br><hr>
<a name="DetailedReportsOnNewWindows"><b>DetailedReportsOnNewWindows</b></a><br>
+<b>Version : </b>3.2 +<br>
<br># This parameter ask your browser to open detailed reports into a different
<br># window than the main page.
<br># Possible values: 1 or 0
<br><br><hr>
<a name="ShowFlagLinks"><b>ShowFlagLinks</b></a><br>
+<b>Version : </b>3.2 +<br>
<br># List of visible flags with link to other language translations.
<br># If you don't want any flag link, set ShowFlagLinks to "".
<br># This parameter is used only if ShowHeader is set to 1.
<br><br><hr>
<a name="ShowLinksOnUrl"><b>ShowLinksOnUrl</b></a><br>
+<b>Version : </b>3.1 +<br>
<br># Each URL shown in stats report views are links you can click.
<br># Possible values: 1 or 0
<br># Default: 1
<br><br><hr>
<a name="MaxLengthOfURL"><b>MaxLengthOfURL</b></a><br>
+<b>Version : </b>1.0 +<br>
<br># Maximum length of URL shown on stats page (number of characters). This
<br># affects only URL visible text, link still work.
<br># Default: 72
<br><br><hr>
+<a name="ShowLinksToWhoIs"><b>ShowLinksToWhoIs</b></a><br>
+<b>Version : </b>4.0 +<br>
+<br># AWStats can include a link to WhoIs database on all hostnames. For this, you
+<br># must set ShowLinksToWhoIs to 1. Warning, a such feature depends on next
+<br># parameter (LinksForWhoIs) and on WhoIs server exhaustivity and availability.
+<br># For this reason, this feature can't be a reliable feature.
+<br># Possible values: 1 or 0
+<br># Default: 0
+<br>#
+<br>ShowLinksToWhoIs=0
+
+<br><br><hr>
+
+<a name="LinksToWhoIs"><b>LinksToWhoIs</b></a><br>
+<b>Version : </b>4.0 +<br>
+<br># Set here the link used to point to Internet WhoIs database.
+<br># This parameter is not used if ShowLinksToWhoIs is 0.
+<br># Default: "http://www.whois.net/search.cgi2?str="
+<br># Example: "http://www.netsol.com/cgi-bin/whois/whois?SearchType=all&STRING="
+<br># Example: "http://www.ripe.net/perl/whois?form_type=simple&searchtext="
+<br># Example: "http://www.arin.net/cgi-bin/whois.pl?queryinput="
+<br>#
+<br>LinksToWhoIs="http://www.whois.net/search.cgi2?str="
+
+<br><br><hr>
+
<a name="HTMLHeadSection"><b>HTMLHeadSection</b></a><br>
+<b>Version : </b>3.2 +<br>
<br># You can put here HTML code that will be added at the top of AWStats reports.
<br># Default: ""
<br>#
<br><br><hr>
<a name="HTMLEndSection"><b>HTMLEndSection</b></a><br>
+<b>Version : </b>3.2 +<br>
<br># You can put here HTML code that will be added at the end of AWStats reports.
<br># Great to add advert ban.
<br># Default: ""
<br><br><hr>
<a name="Bar"><b>Bar...</b></a><br>
+<b>Version : </b>1.0 +<br>
<br># Value of maximum bar width/heigth for horizontal/vertical graphics bar
<br># Default: 260/180
<br>#
<br><br><hr>
<a name="Logo"><b>Logo...</b></a><br>
-<b>Version : </b>3.1<br>
+<b>Version : </b>3.1 +<br>
<br># You can set Logo and LogoLink to use your own logo.
<br># Logo must be the name of image file (must be in $DirIcons/other directory).
<br># LogoLink is the expected URL when clicking on Logo.
<br><br><hr>
<a name="StyleSheet"><b>StyleSheet</b></a><br>
-<b>Version : </b>4.0+<br>
+<b>Version : </b>4.0 +<br>
<br># You can ask AWStats to use a particular CSS (Cascading Style Sheet) to
<br># change its look.
<br># Example: "/css/awstats.css"
#-------------------------------------------------------
# Defines
#-------------------------------------------------------
-my $VERSION="4.0 (build 57)";
+my $VERSION="4.0 (build 58)";
# ---------- Init variables -------
my $Debug=0;
$NbOfLinesRead, $NbOfLinesDropped, $NbOfLinesCorrupted, $NbOfOldLines, $NbOfNewLines,
$NowNewLinePhase, $NbOfLinesForCorruptedLog, $PurgeLogFile,
$ShowAuthenticatedUsers, $ShowCompressionStats, $ShowFileSizesStats,
-$ShowDropped, $ShowCorrupted, $ShowUnknownOrigin, $SplitSearchString, $StartSeconds, $StartMicroseconds,
+$ShowDropped, $ShowCorrupted, $ShowUnknownOrigin, $ShowLinksToWhoIs,
+$SplitSearchString, $StartSeconds, $StartMicroseconds,
$StaticLinks, $UpdateStats, $URLWithQuery)=
-(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
my ($AllowToUpdateStatsFromBrowser, $ArchiveLogRecords, $DetailedReportsOnNewWindows,
$FirstDayOfWeek, $SaveDatabaseFilesWithPermissionsForEveryone,
$LevelForRobotsDetection, $LevelForBrowsersDetection, $LevelForOSDetection,
$ShowRobotsStats, $ShowPagesStats, $ShowFileTypesStats,
$ShowBrowsersStats, $ShowOSStats, $ShowOriginStats, $ShowKeyphrasesStats,
$ShowKeywordsStats, $ShowHTTPErrorsStats,
-$ShowFlagLinks, $ShowLinksOnUrl, $WarningMessages)=
+$ShowFlagLinks, $ShowLinksOnUrl,
+$WarningMessages)=
(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
my ($ArchiveFileName, $DayRequired, $DefaultFile, $FileConfig, $FileSuffix,
$HTMLHeadSection, $HTMLEndSection, $HTMLOutput, $Host,
-$LastUpdate, $LogFile, $LogFormat, $LogFormatString, $Logo, $LogoLink,
+$LastUpdate, $LinksToWhoIs,
+$LogFile, $LogFormat, $LogFormatString, $Logo, $LogoLink,
$MonthRequired, $PageCode, $PerlParsingFormat, $QueryString,
$SiteConfig, $SiteDomain, $SiteToAnalyze, $SiteToAnalyzeWithoutwww,
$StyleSheet, $WrapperScript,
if ($param =~ /^ShowKeywordsStats/) { $ShowKeywordsStats=$value; next; }
if ($param =~ /^ShowCompressionStats/) { $ShowCompressionStats=$value; next; }
if ($param =~ /^ShowHTTPErrorsStats/) { $ShowHTTPErrorsStats=$value; next; }
- if ($param =~ /^FirstDayOfWeek/) { $FirstDayOfWeek=$value; next; }
- if ($param =~ /^DetailedReportsOnNewWindows/) { $DetailedReportsOnNewWindows=$value; next; }
- if ($param =~ /^ShowFlagLinks/) { $ShowFlagLinks=$value; next; }
- if ($param =~ /^ShowLinksOnUrl/) { $ShowLinksOnUrl=$value; next; }
- if ($param =~ /^MaxLengthOfURL/) { $MaxLengthOfURL=$value; next; }
if ($param =~ /^MaxRowsInHTMLOutput/) { $MaxRowsInHTMLOutput=$value; next; } # Not used yet
if ($param =~ /^MaxNbOfDomain/) { $MaxNbOfDomain=$value; next; }
if ($param =~ /^MaxNbOfHostsShown/) { $MaxNbOfHostsShown=$value; next; }
if ($param =~ /^MinHitRefer/) { $MinHitRefer=$value; next; }
if ($param =~ /^MaxNbOfKeywordsShown/) { $MaxNbOfKeywordsShown=$value; next; }
if ($param =~ /^MinHitKeyword/) { $MinHitKeyword=$value; next; }
+ if ($param =~ /^FirstDayOfWeek/) { $FirstDayOfWeek=$value; next; }
+ if ($param =~ /^DetailedReportsOnNewWindows/) { $DetailedReportsOnNewWindows=$value; next; }
+ if ($param =~ /^ShowFlagLinks/) { $ShowFlagLinks=$value; next; }
+ if ($param =~ /^ShowLinksOnUrl/) { $ShowLinksOnUrl=$value; next; }
+ if ($param =~ /^MaxLengthOfURL/) { $MaxLengthOfURL=$value; next; }
+ if ($param =~ /^ShowLinksToWhoIs/) { $ShowLinksToWhoIs=$value; next; }
+ if ($param =~ /^LinksToWhoIs/) { $LinksToWhoIs=$value; next; }
if ($param =~ /^HTMLHeadSection/) { $HTMLHeadSection=$value; next; }
if ($param =~ /^HTMLEndSection/) { $HTMLEndSection=$value; next; }
if ($param =~ /^BarWidth/) { $BarWidth=$value; next; }
if ($LevelForRefererAnalyze !~ /^[\d]+/) { $LevelForRefererAnalyze=1; }
if ($LevelForKeywordsDetection !~ /^[\d]+/) { $LevelForKeywordsDetection=1; }
# Optional appearance setup section
+ if ($MaxRowsInHTMLOutput !~ /^[\d]+/ || $MaxRowsInHTMLOutput<1) { $MaxRowsInHTMLOutput=1000; }
if ($ShowHeader !~ /[0-1]/) { $ShowHeader=1; }
if ($ShowMenu !~ /[0-1]/) { $ShowMenu=1; }
if ($ShowMonthDayStats !~ /[0-1]/) { $ShowMonthDayStats=1; }
if ($ShowKeywordsStats !~ /[0-1]/) { $ShowKeywordsStats=1; }
if ($ShowCompressionStats !~ /[0-1]/) { $ShowCompressionStats=1; }
if ($ShowHTTPErrorsStats !~ /[0-1]/) { $ShowHTTPErrorsStats=1; }
- if ($ShowLinksOnUrl !~ /[0-1]/) { $ShowLinksOnUrl=1; }
if ($MaxNbOfDomain !~ /^[\d]+/ || $MaxNbOfDomain<1) { $MaxNbOfDomain=25; }
if ($MaxNbOfHostsShown !~ /^[\d]+/ || $MaxNbOfHostsShown<1) { $MaxNbOfHostsShown=25; }
if ($MinHitHost !~ /^[\d]+/ || $MinHitHost<1) { $MinHitHost=1; }
if ($MinHitRefer !~ /^[\d]+/ || $MinHitRefer<1) { $MinHitRefer=1; }
if ($MaxNbOfKeywordsShown !~ /^[\d]+/ || $MaxNbOfKeywordsShown<1) { $MaxNbOfKeywordsShown=25; }
if ($MinHitKeyword !~ /^[\d]+/ || $MinHitKeyword<1) { $MinHitKeyword=1; }
- if ($MaxRowsInHTMLOutput !~ /^[\d]+/ || $MaxRowsInHTMLOutput<1) { $MaxRowsInHTMLOutput=1000; }
- if ($MaxLengthOfURL !~ /^[\d+]/ || $MaxLengthOfURL<1) { $MaxLengthOfURL=72; }
if ($FirstDayOfWeek !~ /[0-1]/) { $FirstDayOfWeek=1; }
if ($DetailedReportsOnNewWindows !~ /[0-1]/) { $DetailedReportsOnNewWindows=1; }
- if ($BarWidth !~ /^[\d]+/ || $BarWidth<1) { $BarWidth=260; }
- if ($BarHeight !~ /^[\d]+/ || $BarHeight<1) { $BarHeight=180; }
+ if ($ShowLinksOnUrl !~ /[0-1]/) { $ShowLinksOnUrl=1; }
+ if ($MaxLengthOfURL !~ /^[\d+]/ || $MaxLengthOfURL<1) { $MaxLengthOfURL=72; }
+ if ($ShowLinksToWhoIs !~ /[0-1]/) { $ShowLinksToWhoIs=0; }
if (! $Logo) { $Logo="awstats_logo1.png"; }
if (! $LogoLink) { $LogoLink="http://awstats.sourceforge.net"; }
+ if ($BarWidth !~ /^[\d]+/ || $BarWidth<1) { $BarWidth=260; }
+ if ($BarHeight !~ /^[\d]+/ || $BarHeight<1) { $BarHeight=180; }
$color_Background =~ s/#//g; if ($color_Background !~ /^[0-9|A-Z]+$/i) { $color_Background="FFFFFF"; }
$color_TableBGTitle =~ s/#//g; if ($color_TableBGTitle !~ /^[0-9|A-Z]+$/i) { $color_TableBGTitle="CCCCDD"; }
$color_TableTitle =~ s/#//g; if ($color_TableTitle !~ /^[0-9|A-Z]+$/i) { $color_TableTitle="000000"; }
if (! $Message[111]) { $Message[111]="Grabber"; }
if (! $Message[112]) { $Message[112]="Yes"; }
if (! $Message[113]) { $Message[113]="No"; }
+ if (! $Message[114]) { $Message[114]="WhoIs info"; }
# Check if DirData is OK
if (! -d $DirData) {
if ($CreateDirDataIfNotExists) {
return "$dateformat";
}
+#--------------------------------------------------------------------
+# Function: Write a HTML cell with a WhoIs link to parameter
+# Parameter: Key to used as WhoIs target
+# Input: $LinksToWhoIs
+#--------------------------------------------------------------------
+sub ShowWhoIsCell {
+ my $keyurl=shift;
+ my $keyforwhois;
+ if ($keyurl =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) {
+ # $keyforwhois=$key;
+ }
+ else { $keyurl =~ /(\w+\.\w+)$/; $keyforwhois=$1; }
+ print "<td>";
+ if ($keyforwhois) { print "<a href=\"$LinksToWhoIs$keyforwhois\" target=whois>?</a>"; }
+ print "</td>";
+}
+
#--------------------------------------------------------------------
# Function: Return 1 if string contains only ascii chars
# Input: String
print "<td class=AWL>";
if ($ShowDomainsStats) { print "<a href=\"#DOMAINS\">$Message[17]</a> "; }
if ($ShowHostsStats) { print "<a href=\"#VISITOR\">".ucfirst($Message[81])."</a> "; }
+ if ($ShowHostsStats) { print "<a href=\"".($ENV{"GATEWAY_INTERFACE"} || !$StaticLinks?"$AWScript?${NewLinkParams}output=allhosts":"$PROG$FileSuffix.lasthosts.html")."\">$Message[80]</a> \n"; }
if ($ShowHostsStats) { print "<a href=\"".($ENV{"GATEWAY_INTERFACE"} || !$StaticLinks?"$AWScript?${NewLinkParams}output=lasthosts":"$PROG$FileSuffix.lasthosts.html")."\">$Message[9]</a> \n"; }
if ($ShowHostsStats) { print "<a href=\"".($ENV{"GATEWAY_INTERFACE"} || !$StaticLinks?"$AWScript?${NewLinkParams}output=unknownip":"$PROG$FileSuffix.unknownip.html")."\">$Message[45]</a> \n"; }
if ($ShowAuthenticatedUsers) { print "<a href=\"#LOGIN\">$Message[94]</a> "; }
if ($QueryString =~ /output=allhosts/i) {
print "$CENTER<a name=\"HOSTSLIST\"> </a><BR>";
&tab_head($Message[81],19);
- if ($MonthRequired ne "year") { print "<TR bgcolor=\"#$color_TableBGRowTitle\"><TH>$Message[81] : $TotalHostsKnown $Message[82], $TotalHostsUnknown $Message[1] - $TotalUnique $Message[11]</TH><TH bgcolor=\"#$color_p\" width=80>$Message[56]</TH><TH bgcolor=\"#$color_h\" width=80>$Message[57]</TH><TH bgcolor=\"#$color_k\" width=80>$Message[75]</TH><TH width=120>$Message[9]</TH></TR>\n"; }
- else { print "<TR bgcolor=\"#$color_TableBGRowTitle\"><TH>$Message[81] : ".(scalar keys %_hostmachine_h)."</TH><TH bgcolor=\"#$color_p\" width=80>$Message[56]</TH><TH bgcolor=\"#$color_h\" width=80>$Message[57]</TH><TH bgcolor=\"#$color_k\" width=80>$Message[75]</TH><TH width=120>$Message[9]</TH></TR>\n"; }
+ if ($MonthRequired ne "year") { print "<TR bgcolor=\"#$color_TableBGRowTitle\"><TH>$Message[81] : $TotalHostsKnown $Message[82], $TotalHostsUnknown $Message[1] - $TotalUnique $Message[11]</TH>"; }
+ else { print "<TR bgcolor=\"#$color_TableBGRowTitle\"><TH>$Message[81] : ".(scalar keys %_hostmachine_h)."</TH>"; }
+ if ($ShowLinksToWhoIs && $LinksToWhoIs) { print "<TH width=80>$Message[114]</TH>"; }
+ print "<TH bgcolor=\"#$color_p\" width=80>$Message[56]</TH><TH bgcolor=\"#$color_h\" width=80>$Message[57]</TH><TH bgcolor=\"#$color_k\" width=80>$Message[75]</TH><TH width=120>$Message[9]</TH></TR>\n";
$total_p=$total_h=$total_k=0;
my $count=0;
&BuildKeyList($MaxRowsInHTMLOutput,$MinHitHost,\%_hostmachine_h,\%_hostmachine_p);
foreach my $key (@keylist) {
my $host=CleanFromCSSA($key);
print "<tr><td CLASS=AWL>".($_robot_l{$key}?"<b>":"")."$host".($_robot_l{$key}?"</b>":"")."</td>";
+ if ($ShowLinksToWhoIs && $LinksToWhoIs) { ShowWhoIsCell($key); }
print "<TD>".($_hostmachine_p{$key}?$_hostmachine_p{$key}:" ")."</TD><TD>$_hostmachine_h{$key}</TD><TD>".Format_Bytes($_hostmachine_k{$key})."</TD>";
if ($_hostmachine_l{$key}) { print "<td>".Format_Date($_hostmachine_l{$key},1)."</td>"; }
else { print "<td>-</td>"; }
$rest_h=$TotalHits-$total_h;
$rest_k=$TotalBytes-$total_k;
if ($rest_p > 0 || $rest_h > 0 || $rest_k > 0) { # All other visitors (known or not)
- print "<TR><TD CLASS=AWL><font color=blue>$Message[2]</font></TD><TD>$rest_p</TD><TD>$rest_h</TD><TD>".Format_Bytes($rest_k)."</TD><TD> </TD></TR>\n";
+ print "<TR><TD CLASS=AWL><font color=blue>$Message[2]</font></TD>";
+ if ($ShowLinksToWhoIs && $LinksToWhoIs) { ShowWhoIsCell(""); }
+ print "<TD>$rest_p</TD><TD>$rest_h</TD><TD>".Format_Bytes($rest_k)."</TD><TD> </TD></TR>\n";
}
&tab_end;
&html_end;
if ($QueryString =~ /output=lasthosts/i) {
print "$CENTER<a name=\"HOSTSLIST\"> </a><BR>";
&tab_head($Message[9],19);
- if ($MonthRequired ne "year") { print "<TR bgcolor=\"#$color_TableBGRowTitle\"><TH>$Message[81] : $TotalHostsKnown $Message[82], $TotalHostsUnknown $Message[1] - $TotalUnique $Message[11]</TH><TH bgcolor=\"#$color_p\" width=80>$Message[56]</TH><TH bgcolor=\"#$color_h\" width=80>$Message[57]</TH><TH bgcolor=\"#$color_k\" width=80>$Message[75]</TH><TH width=120>$Message[9]</TH></TR>\n"; }
- else { print "<TR bgcolor=\"#$color_TableBGRowTitle\"><TH>$Message[81] : ".(scalar keys %_hostmachine_h)."</TH><TH bgcolor=\"#$color_p\" width=80>$Message[56]</TH><TH bgcolor=\"#$color_h\" width=80>$Message[57]</TH><TH bgcolor=\"#$color_k\" width=80>$Message[75]</TH><TH width=120>$Message[9]</TH></TR>\n"; }
+ if ($MonthRequired ne "year") { print "<TR bgcolor=\"#$color_TableBGRowTitle\"><TH>$Message[81] : $TotalHostsKnown $Message[82], $TotalHostsUnknown $Message[1] - $TotalUnique $Message[11]</TH>"; }
+ else { print "<TR bgcolor=\"#$color_TableBGRowTitle\"><TH>$Message[81] : ".(scalar keys %_hostmachine_h)."</TH>"; }
+ if ($ShowLinksToWhoIs && $LinksToWhoIs) { print "<TH width=80>$Message[114]</TH>"; }
+ print "<TH bgcolor=\"#$color_p\" width=80>$Message[56]</TH><TH bgcolor=\"#$color_h\" width=80>$Message[57]</TH><TH bgcolor=\"#$color_k\" width=80>$Message[75]</TH><TH width=120>$Message[9]</TH></TR>\n";
$total_p=$total_h=$total_k=0;
my $count=0;
&BuildKeyList($MaxRowsInHTMLOutput,$MinHitHost,\%_hostmachine_h,\%_hostmachine_l);
foreach my $key (@keylist) {
my $host=CleanFromCSSA($key);
print "<tr><td CLASS=AWL>".($_robot_l{$key}?"<b>":"")."$host".($_robot_l{$key}?"</b>":"")."</td>";
+ if ($ShowLinksToWhoIs && $LinksToWhoIs) { ShowWhoIsCell($key); }
print "<TD>".($_hostmachine_p{$key}?$_hostmachine_p{$key}:" ")."</TD><TD>$_hostmachine_h{$key}</TD><TD>".Format_Bytes($_hostmachine_k{$key})."</TD>";
if ($_hostmachine_l{$key}) { print "<td>".Format_Date($_hostmachine_l{$key},1)."</td>"; }
else { print "<td>-</td>"; }
$rest_h=$TotalHits-$total_h;
$rest_k=$TotalBytes-$total_k;
if ($rest_p > 0 || $rest_h > 0 || $rest_k > 0) { # All other visitors (known or not)
- print "<TR><TD CLASS=AWL><font color=blue>$Message[2]</font></TD><TD>$rest_p</TD><TD>$rest_h</TD><TD>".Format_Bytes($rest_k)."</TD><TD> </TD></TR>\n";
+ print "<TR><TD CLASS=AWL><font color=blue>$Message[2]</font></TD>";
+ if ($ShowLinksToWhoIs && $LinksToWhoIs) { ShowWhoIsCell(""); }
+ print "<TD>$rest_p</TD><TD>$rest_h</TD><TD>".Format_Bytes($rest_k)."</TD><TD> </TD></TR>\n";
}
&tab_end;
&html_end;
if ($QueryString =~ /output=unknownip/i) {
print "$CENTER<a name=\"UNKOWNIP\"> </a><BR>";
&tab_head($Message[45],19);
- print "<TR bgcolor=\"#$color_TableBGRowTitle\"><TH>".(scalar keys %_hostmachine_h)." $Message[1]</TH><TH bgcolor=\"#$color_p\" width=80>$Message[56]</TH><TH bgcolor=\"#$color_h\" width=80>$Message[57]</TH><TH bgcolor=\"#$color_k\" width=80>$Message[75]</TH><TH width=120>$Message[9]</TH>\n";
+ print "<TR bgcolor=\"#$color_TableBGRowTitle\"><TH>".(scalar keys %_hostmachine_h)." $Message[1]</TH>";
+ if ($ShowLinksToWhoIs && $LinksToWhoIs) { print "<TH width=80>$Message[114]</TH>"; }
+ print "<TH bgcolor=\"#$color_p\" width=80>$Message[56]</TH><TH bgcolor=\"#$color_h\" width=80>$Message[57]</TH><TH bgcolor=\"#$color_k\" width=80>$Message[75]</TH><TH width=120>$Message[9]</TH></TR>\n";
$total_p=$total_h=$total_k=0;
my $count=0;
&BuildKeyList($MaxRowsInHTMLOutput,$MinHitHost,\%_hostmachine_h,\%_hostmachine_p);
foreach my $key (@keylist) {
my $host=CleanFromCSSA($key);
print "<tr><td CLASS=AWL>$host</td>";
+ if ($ShowLinksToWhoIs && $LinksToWhoIs) { ShowWhoIsCell($key); }
print "<TD>".($_hostmachine_p{$key}||" ")."</TD><TD>$_hostmachine_h{$key}</TD><TD>".Format_Bytes($_hostmachine_k{$key})."</TD>";
if ($_hostmachine_l{$key}) { print "<td>".Format_Date($_hostmachine_l{$key},1)."</td>"; }
else { print "<td>-</td>"; }
$rest_h=$TotalHits-$total_h;
$rest_k=$TotalBytes-$total_k;
if ($rest_p > 0 || $rest_h > 0 || $rest_k > 0) { # All other visitors (known or not)
- print "<TR><TD CLASS=AWL><font color=blue>$Message[82]</font></TD><TD>$rest_p</TD><TD>$rest_h</TD><TD>".Format_Bytes($rest_k)."</TD><TD> </TD></TR>\n";
+ print "<TR><TD CLASS=AWL><font color=blue>$Message[82]</font></TD>";
+ if ($ShowLinksToWhoIs && $LinksToWhoIs) { ShowWhoIsCell(""); }
+ print "<TD>$rest_p</TD><TD>$rest_h</TD><TD>".Format_Bytes($rest_k)."</TD><TD> </TD></TR>\n";
}
&tab_end;
&html_end;
print "$CENTER<a name=\"VISITOR\"> </a><BR>";
$MaxNbOfHostsShown = (scalar keys %_hostmachine_h) if $MaxNbOfHostsShown > (scalar keys %_hostmachine_h);
&tab_head("$Message[81] ($Message[77] $MaxNbOfHostsShown) - <a href=\"".($ENV{"GATEWAY_INTERFACE"} || !$StaticLinks?"$AWScript?${NewLinkParams}output=allhosts":"$PROG$FileSuffix.allhosts.html")."\">$Message[80]</a> - <a href=\"".($ENV{"GATEWAY_INTERFACE"} || !$StaticLinks?"$AWScript?${NewLinkParams}output=lasthosts":"$PROG$FileSuffix.lasthosts.html")."\">$Message[9]</a> - <a href=\"".($ENV{"GATEWAY_INTERFACE"} || !$StaticLinks?"$AWScript?${NewLinkParams}output=unknownip":"$PROG$FileSuffix.unknownip.html")."\">$Message[45]</a>",19);
- if ($MonthRequired ne "year") { print "<TR bgcolor=\"#$color_TableBGRowTitle\"><TH>$Message[81] : $TotalHostsKnown $Message[82], $TotalHostsUnknown $Message[1] - $TotalUnique $Message[11]</TH><TH bgcolor=\"#$color_p\" width=80>$Message[56]</TH><TH bgcolor=\"#$color_h\" width=80>$Message[57]</TH><TH bgcolor=\"#$color_k\" width=80>$Message[75]</TH><TH width=120>$Message[9]</TH></TR>\n"; }
- else { print "<TR bgcolor=\"#$color_TableBGRowTitle\"><TH>$Message[81] : ".(scalar keys %_hostmachine_h)."</TH><TH bgcolor=\"#$color_p\" width=80>$Message[56]</TH><TH bgcolor=\"#$color_h\" width=80>$Message[57]</TH><TH bgcolor=\"#$color_k\" width=80>$Message[75]</TH><TH width=120>$Message[9]</TH></TR>\n"; }
+ if ($MonthRequired ne "year") { print "<TR bgcolor=\"#$color_TableBGRowTitle\"><TH>$Message[81] : $TotalHostsKnown $Message[82], $TotalHostsUnknown $Message[1] - $TotalUnique $Message[11]</TH>"; }
+ else { print "<TR bgcolor=\"#$color_TableBGRowTitle\"><TH>$Message[81] : ".(scalar keys %_hostmachine_h)."</TH>"; }
+ if ($ShowLinksToWhoIs && $LinksToWhoIs) { print "<TH width=80>$Message[114]</TH>"; }
+ print "<TH bgcolor=\"#$color_p\" width=80>$Message[56]</TH><TH bgcolor=\"#$color_h\" width=80>$Message[57]</TH><TH bgcolor=\"#$color_k\" width=80>$Message[75]</TH><TH width=120>$Message[9]</TH></TR>\n";
$total_p=$total_h=$total_k=0;
my $count=0;
&BuildKeyList($MaxNbOfHostsShown,$MinHitHost,\%_hostmachine_h,\%_hostmachine_p);
foreach my $key (@keylist) {
- print "<tr><td CLASS=AWL>$key</td><TD>".($_hostmachine_p{$key}||" ")."</TD><TD>$_hostmachine_h{$key}</TD><TD>".Format_Bytes($_hostmachine_k{$key})."</TD>";
+ print "<tr>";
+ print "<td CLASS=AWL>$key</td>";
+ if ($ShowLinksToWhoIs && $LinksToWhoIs) { ShowWhoIsCell($key); }
+ print "<TD>".($_hostmachine_p{$key}||" ")."</TD><TD>$_hostmachine_h{$key}</TD><TD>".Format_Bytes($_hostmachine_k{$key})."</TD>";
if ($_hostmachine_l{$key}) { print "<td>".Format_Date($_hostmachine_l{$key},1)."</td>"; }
else { print "<td>-</td>"; }
print "</tr>\n";