* OS used (pages, hits, KB for each OS)
* Robot visits
* Worm attacks
+ * Download and continuation detection
* Search engines, keyphrases and keywords used to find your site
* HTTP errors (Page not found with last referer, etc,)
* Screen size report
- Added parameter to ignore missing log files when merging for a site on
multiple servers where a single server may not have created a log for a given day.
- Update robots database.
+- Added Download tracking where certain mime types are defined as downloads
+ and HTTP status 206 is tracked as download continuation
Thanks to Chris Larsen (author of most thoses changes).
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
+<html><head>
<meta name="description" content="AWStats Documentation - Configuration directives and parameters">
<meta name="keywords" content="awstats, awstat, config, parameters, configuration, conf">
<meta name="robots" content="index,follow">
<meta name="title" content="AWStats Documentation - Configuration directives and parameters">
-<title>AWStats Documentation - Configuration directives and parameters</title>
-<link rel="stylesheet" href="styles.css" type="text/css">
-<!-- $Revision$ - $Author$ - $Date$ -->
-</head>
-<body topmargin=10 leftmargin=5>
+<title>AWStats Documentation - Configuration directives and parameters</title><link rel="stylesheet" href="styles.css" type="text/css"><!-- $Revision$ - $Author$ - $Date$ --></head>
+<body topmargin="10" leftmargin="5">
-<table style="font: 10pt arial,helvetica,verdana" cellpadding=0 cellspacing=0 border=0 bgcolor=#FFFFFF width=100%>
+
+<table style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="100%">
<!-- Large -->
-<tr style="font: 10pt arial,helvetica,verdana">
-<td bgcolor=#9999cc align=center><a href="/"><img src="images/awstats_logo4.png" border=0></a></td>
-<td bgcolor=#9999cc align=center>
+<tbody><tr style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
+<td align="center" bgcolor="#9999cc"><a href="/"><img src="images/awstats_logo4.png" border="0"></a></td>
+<td align="center" bgcolor="#9999cc">
<br>
-<font style="font: 16pt arial,helvetica,sans-serif" color=#EEEEFF><b>AWStats logfile analyzer 6.95 Documentation</b></font><br>
+<font style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" color="#eeeeff"><b>AWStats logfile analyzer 6.95 Documentation</b></font><br>
<br>
</td>
-<td bgcolor=#9999cc align=center>
+<td align="center" bgcolor="#9999cc">
</td>
</tr>
-</table>
+</tbody></table>
-<br><br><H1 style="font: 26px arial,helvetica,sans-serif">AWStats configuration directives/options</H1>
+<br><br><h1 style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 26px; line-height: normal; font-size-adjust: none; font-stretch: normal;">AWStats configuration directives/options</h1>
<!-- -------------------------------------------------------------------------------------- -->
<br>Each directive available in the AWStats config file (.conf) is listed here (with examples and default values).<br>
<br><b>DIRECTIVES IN MAIN SETUP SECTION (Required to make AWStats work)</b><br>
<ul>
<li><a href="#LogFile">LogFile</a>
-<li><a href="#LogType">LogType</a>
-<li><a href="#LogFormat">LogFormat</a>
-<li><a href="#LogSeparator">LogSeparator</a>
-<li><a href="#DNSLookup">DNSLookup</a>
-<li><a href="#DirData">DirData</a>
-<li><a href="#DirCgi">DirCgi</a>
-<li><a href="#DirIcons">DirIcons</a>
-<li><a href="#SiteDomain">SiteDomain</a>
-<li><a href="#HostAliases">HostAliases</a>
-<li><a href="#AllowToUpdateStatsFromBrowser">AllowToUpdateStatsFromBrowser</a>
-<li><a href="#AllowFullYearView">AllowFullYearView</a>
-</ul>
+</li><li><a href="#LogType">LogType</a>
+</li><li><a href="#LogFormat">LogFormat</a>
+</li><li><a href="#LogSeparator">LogSeparator</a>
+</li><li><a href="#DNSLookup">DNSLookup</a>
+</li><li><a href="#DirData">DirData</a>
+</li><li><a href="#DirCgi">DirCgi</a>
+</li><li><a href="#DirIcons">DirIcons</a>
+</li><li><a href="#SiteDomain">SiteDomain</a>
+</li><li><a href="#HostAliases">HostAliases</a>
+</li><li><a href="#AllowToUpdateStatsFromBrowser">AllowToUpdateStatsFromBrowser</a>
+</li><li><a href="#AllowFullYearView">AllowFullYearView</a>
+</li></ul>
<br><b>DIRECTIVES IN OPTIONAL SETUP SECTION (Not required but increase AWStats features)</b><br>
<ul>
<li><a href="#EnableLockForUpdate">EnableLockForUpdate</a>
-<li><a href="#DNSStaticCacheFile">DNSStaticCacheFile</a>
-<li><a href="#DNSLastUpdateCacheFile">DNSLastUpdateCacheFile</a>
-<li><a href="#SkipDNSLookupFor">SkipDNSLookupFor</a>
-<li><a href="#AllowAccessFromWebToAuthenticatedUsersOnly">AllowAccessFromWebToAuthenticatedUsersOnly</a>
-<li><a href="#AllowAccessFromWebToFollowingAuthenticatedUsers">AllowAccessFromWebToFollowingAuthenticatedUsers</a>
-<li><a href="#AllowAccessFromWebToFollowingIPAddresses">AllowAccessFromWebToFollowingIPAddresses</a>
-<li><a href="#CreateDirDataIfNotExists">CreateDirDataIfNotExists</a>
-<li><a href="#BuildHistoryFormat">BuildHistoryFormat</a>
-<li><a href="#BuildReportFormat">BuildReportFormat</a>
-<li><a href="#SaveDatabaseFilesWithPermissionsForEveryone">SaveDatabaseFilesWithPermissionsForEveryone</a>
-<li><a href="#PurgeLogFile">PurgeLogFile</a>
-<li><a href="#ArchiveLogRecords">ArchiveLogRecords</a>
-<li><a href="#KeepBackupOfHistoricFiles">KeepBackupOfHistoricFiles</a>
-<li><a href="#DefaultFile">DefaultFile</a>
-<li><a href="#SkipHosts">SkipHosts</a>
-<li><a href="#SkipUserAgents">SkipUserAgents</a>
-<li><a href="#SkipFiles">SkipFiles</a>
-<li><a href="#OnlyHosts">OnlyHosts</a>
-<li><a href="#OnlyUserAgents">OnlyUserAgents</a>
-<li><a href="#OnlyUsers">OnlyUsers</a>
-<li><a href="#OnlyFiles">OnlyFiles</a>
-<li><a href="#NotPageList">NotPageList</a>
-<li><a href="#ValidHTTPCodes">ValidHTTPCodes</a>
-<li><a href="#ValidSMTPCodes">ValidSMTPCodes</a>
-<li><a href="#AuthenticatedUsersNotCaseSensitive">AuthenticatedUsersNotCaseSensitive</a>
-<li><a href="#URLNotCaseSensitive">URLNotCaseSensitive</a>
-<li><a href="#URLWithAnchor">URLWithAnchor</a>
-<li><a href="#URLQuerySeparators">URLQuerySeparators</a>
-<li><a href="#URLWithQuery">URLWithQuery</a>
-<li><a href="#URLWithQueryWithOnlyFollowingParameters">URLWithQueryWithOnlyFollowingParameters</a>
-<li><a href="#URLWithQueryWithoutFollowingParameters">URLWithQueryWithoutFollowingParameters</a>
-<li><a href="#URLReferrerWithQuery">URLReferrerWithQuery</a>
-<li><a href="#WarningMessages">WarningMessages</a>
-<li><a href="#ErrorMessages">ErrorMessages</a>
-<li><a href="#DebugMessages">DebugMessages</a>
-<li><a href="#NbOfLinesForCorruptedLog">NbOfLinesForCorruptedLog</a>
-<li><a href="#SplitSearchString">SplitSearchString</a>
-<li><a href="#WrapperScript">WrapperScript</a>
-<li><a href="#DecodeUA">DecodeUA</a>
-<li><a href="#MiscTrackerUrl">MiscTrackerUrl</a>
-</ul>
+</li><li><a href="#DNSStaticCacheFile">DNSStaticCacheFile</a>
+</li><li><a href="#DNSLastUpdateCacheFile">DNSLastUpdateCacheFile</a>
+</li><li><a href="#SkipDNSLookupFor">SkipDNSLookupFor</a>
+</li><li><a href="#AllowAccessFromWebToAuthenticatedUsersOnly">AllowAccessFromWebToAuthenticatedUsersOnly</a>
+</li><li><a href="#AllowAccessFromWebToFollowingAuthenticatedUsers">AllowAccessFromWebToFollowingAuthenticatedUsers</a>
+</li><li><a href="#AllowAccessFromWebToFollowingIPAddresses">AllowAccessFromWebToFollowingIPAddresses</a>
+</li><li><a href="#CreateDirDataIfNotExists">CreateDirDataIfNotExists</a>
+</li><li><a href="#BuildHistoryFormat">BuildHistoryFormat</a>
+</li><li><a href="#BuildReportFormat">BuildReportFormat</a>
+</li><li><a href="#SaveDatabaseFilesWithPermissionsForEveryone">SaveDatabaseFilesWithPermissionsForEveryone</a>
+</li><li><a href="#PurgeLogFile">PurgeLogFile</a>
+</li><li><a href="#ArchiveLogRecords">ArchiveLogRecords</a>
+</li><li><a href="#KeepBackupOfHistoricFiles">KeepBackupOfHistoricFiles</a>
+</li><li><a href="#DefaultFile">DefaultFile</a>
+</li><li><a href="#SkipHosts">SkipHosts</a>
+</li><li><a href="#SkipUserAgents">SkipUserAgents</a>
+</li><li><a href="#SkipFiles">SkipFiles</a>
+</li><li><a href="#OnlyHosts">OnlyHosts</a>
+</li><li><a href="#OnlyUserAgents">OnlyUserAgents</a>
+</li><li><a href="#OnlyUsers">OnlyUsers</a>
+</li><li><a href="#OnlyFiles">OnlyFiles</a>
+</li><li><a href="#NotPageList">NotPageList</a>
+</li><li><a href="#ValidHTTPCodes">ValidHTTPCodes</a>
+</li><li><a href="#ValidSMTPCodes">ValidSMTPCodes</a>
+</li><li><a href="#AuthenticatedUsersNotCaseSensitive">AuthenticatedUsersNotCaseSensitive</a>
+</li><li><a href="#URLNotCaseSensitive">URLNotCaseSensitive</a>
+</li><li><a href="#URLWithAnchor">URLWithAnchor</a>
+</li><li><a href="#URLQuerySeparators">URLQuerySeparators</a>
+</li><li><a href="#URLWithQuery">URLWithQuery</a>
+</li><li><a href="#URLWithQueryWithOnlyFollowingParameters">URLWithQueryWithOnlyFollowingParameters</a>
+</li><li><a href="#URLWithQueryWithoutFollowingParameters">URLWithQueryWithoutFollowingParameters</a>
+</li><li><a href="#URLReferrerWithQuery">URLReferrerWithQuery</a>
+</li><li><a href="#WarningMessages">WarningMessages</a>
+</li><li><a href="#ErrorMessages">ErrorMessages</a>
+</li><li><a href="#DebugMessages">DebugMessages</a>
+</li><li><a href="#NbOfLinesForCorruptedLog">NbOfLinesForCorruptedLog</a>
+</li><li><a href="#SplitSearchString">SplitSearchString</a>
+</li><li><a href="#WrapperScript">WrapperScript</a>
+</li><li><a href="#DecodeUA">DecodeUA</a>
+</li><li><a href="#MiscTrackerUrl">MiscTrackerUrl</a>
+</li></ul>
<br><b>DIRECTIVES IN OPTIONAL ACCURACY SETUP SECTION (Not required but increase AWStats features)</b><br>
<ul>
<li><a href="#LevelFor">LevelForBrowsersDetection</a>
-<li><a href="#LevelFor">LevelForOSDetection</a>
-<li><a href="#LevelFor">LevelForRefererAnalyze</a>
-<li><a href="#LevelFor">LevelForRobotsDetection</a>
-<li><a href="#LevelFor">LevelForSearchEnginesDetection</a>
-<li><a href="#LevelFor">LevelForKeywordsDetection</a>
-<li><a href="#LevelFor">LevelForFileTypesDetection</a>
-<li><a href="#LevelFor">LevelForWormsDetection</a>
+</li><li><a href="#LevelFor">LevelForOSDetection</a>
+</li><li><a href="#LevelFor">LevelForRefererAnalyze</a>
+</li><li><a href="#LevelFor">LevelForRobotsDetection</a>
+</li><li><a href="#LevelFor">LevelForSearchEnginesDetection</a>
+</li><li><a href="#LevelFor">LevelForKeywordsDetection</a>
+</li><li><a href="#LevelFor">LevelForFileTypesDetection</a>
+</li><li><a href="#LevelFor">LevelForWormsDetection</a>
-</ul>
+</li></ul>
<br><b>DIRECTIVES IN OPTIONAL APPEARANCE SETUP SECTION (Not required but increase AWStats features)</b><br>
<ul>
<li><a href="#UseFramesWhenCGI">UseFramesWhenCGI</a>
-<li><a href="#DetailedReportsOnNewWindows">DetailedReportsOnNewWindows</a>
-<li><a href="#Expires">Expires</a>
-<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="#Show">ShowMenu</a>
-<li><a href="#Show">ShowSummary</a>
-<li><a href="#Show">ShowMonthStats</a>
-<li><a href="#Show">ShowDaysOfMonthStats</a>
-<li><a href="#Show">ShowDaysOfWeekStats</a>
-<li><a href="#Show">ShowHoursStats</a>
-<li><a href="#Show">ShowDomainsStats</a>
-<li><a href="#Show">ShowHostsStats</a>
-<li><a href="#Show">ShowAuthenticatedUsers</a>
-<li><a href="#Show">ShowRobotsStats</a>
-<li><a href="#Show">ShowWormsStats</a>
-<li><a href="#Show">ShowSessionsStats</a>
-<li><a href="#Show">ShowPagesStats</a>
-<li><a href="#Show">ShowCompressionStats</a>
-<li><a href="#Show">ShowFileTypesStats</a>
-<li><a href="#Show">ShowFileSizesStats</a>
-<li><a href="#Show">ShowOSStats</a>
-<li><a href="#Show">ShowBrowsersStats</a>
-<li><a href="#Show">ShowScreenSizeStats</a>
-<li><a href="#Show">ShowOriginStats</a>
-<li><a href="#Show">ShowKeyphrasesStats</a>
-<li><a href="#Show">ShowKeywordsStats</a>
-<li><a href="#Show">ShowMiscStats</a>
-<li><a href="#Show">ShowHTTPErrorsStats</a>
-<li><a href="#Show">ShowSMTPErrorsStats</a>
-<li><a href="#Show">ShowClusterStats</a>
-<li><a href="#AddDataArray">AddDataArrayMonthStats</a>
-<li><a href="#AddDataArray">AddDataArrayShowDaysOfMonthStats</a>
-<li><a href="#AddDataArray">AddDataArrayShowDaysOfWeekStats</a>
-<li><a href="#AddDataArray">AddDataArrayShowHoursStats</a>
-<li><a href="#IncludeInternalLinksInOriginSection">IncludeInternalLinksInOriginSection</a>
-<li><a href="#Max">MaxNbOfDomain</a>
-<li><a href="#Max">MinHitDomain</a>
-<li><a href="#Max">MaxNbOfHostsShown</a>
-<li><a href="#Max">MinHitHost</a>
-<li><a href="#Max">MaxNbOfLoginShown</a>
-<li><a href="#Max">MinHitLogin</a>
-<li><a href="#Max">MaxNbOfRobotShown</a>
-<li><a href="#Max">MinHitRobot</a>
-<li><a href="#Max">MaxNbOfPageShown</a>
-<li><a href="#Max">MaxNbOfOsShown</a>
-<li><a href="#Max">MinHitOs</a>
-<li><a href="#Max">MaxNbOfBrowsersShown</a>
-<li><a href="#Max">MinHitBrowser</a>
-<li><a href="#Max">MinHitFile</a>
-<li><a href="#Max">MaxNbOfScreenSizesShown</a>
-<li><a href="#Max">MinHitScreenSize</a>
-<li><a href="#Max">MaxNbOfRefererShown</a>
-<li><a href="#Max">MinHitRefer</a>
-<li><a href="#Max">MaxNbOfKeywordsShown</a>
-<li><a href="#Max">MinHitKeyword</a>
-<li><a href="#FirstDayOfWeek">FirstDayOfWeek</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="#UseHTTPSLinksForUrl">UseHTTPSLinksForUrl</a>
-<li><a href="#LinksToWhoIs">LinksToWhoIs</a>
-<li><a href="#LinksToIPWhoIs">LinksToIPWhoIs</a>
-<li><a href="#HTMLHeadSection">HTMLHeadSection</a>
-<li><a href="#HTMLEndSection">HTMLEndSection</a>
-<li><a href="#Bar">BarWidth</a>
-<li><a href="#Bar">BarHeight</a>
-<li><a href="#Logo">Logo</a>
-<li><a href="#Logo">LogoLink</a>
-<li><a href="#StyleSheet">StyleSheet</a>
-<li><a href="#color_">color_Background</a>
-<li><a href="#color_">color_TableBGTitle</a>
-<li><a href="#color_">color_TableTitle</a>
-<li><a href="#color_">color_TableBG</a>
-<li><a href="#color_">color_TableRowTitle</a>
-<li><a href="#color_">color_TableBGRowTitle</a>
-<li><a href="#color_">color_TableBorder</a>
-<li><a href="#color_">color_text</a>
-<li><a href="#color_">color_titletext</a>
-<li><a href="#color_">color_weekend</a>
-<li><a href="#color_">color_link</a>
-<li><a href="#color_">color_hover</a>
-<li><a href="#color_">color_u</a>
-<li><a href="#color_">color_v</a>
-<li><a href="#color_">color_p</a>
-<li><a href="#color_">color_h</a>
-<li><a href="#color_">color_k</a>
-<li><a href="#color_">color_s</a>
-<li><a href="#color_">color_e</a>
-<li><a href="#color_">color_x</a>
-</ul>
+</li><li><a href="#DetailedReportsOnNewWindows">DetailedReportsOnNewWindows</a>
+</li><li><a href="#Expires">Expires</a>
+</li><li><a href="#MaxRowsInHTMLOutput">MaxRowsInHTMLOutput</a>
+</li><li><a href="#Lang">Lang</a>
+</li><li><a href="#DirLang">DirLang</a>
+</li><li><a href="#Show">ShowHeader</a>
+</li><li><a href="#Show">ShowMenu</a>
+</li><li><a href="#Show">ShowSummary</a>
+</li><li><a href="#Show">ShowMonthStats</a>
+</li><li><a href="#Show">ShowDaysOfMonthStats</a>
+</li><li><a href="#Show">ShowDaysOfWeekStats</a>
+</li><li><a href="#Show">ShowHoursStats</a>
+</li><li><a href="#Show">ShowDomainsStats</a>
+</li><li><a href="#Show">ShowHostsStats</a>
+</li><li><a href="#Show">ShowAuthenticatedUsers</a>
+</li><li><a href="#Show">ShowRobotsStats</a>
+</li><li><a href="#Show">ShowWormsStats</a>
+</li><li><a href="#Show">ShowSessionsStats</a>
+</li><li><a href="#Show">ShowPagesStats</a>
+</li><li><a href="#Show">ShowCompressionStats</a>
+</li><li><a href="#Show">ShowFileTypesStats</a>
+</li><li><a href="#Show">ShowFileSizesStats</a></li><li><a href="#Show">ShowDownloadsStats</a></li><li><a href="#Show">ShowOSStats</a>
+</li><li><a href="#Show">ShowBrowsersStats</a>
+</li><li><a href="#Show">ShowScreenSizeStats</a>
+</li><li><a href="#Show">ShowOriginStats</a>
+</li><li><a href="#Show">ShowKeyphrasesStats</a>
+</li><li><a href="#Show">ShowKeywordsStats</a>
+</li><li><a href="#Show">ShowMiscStats</a>
+</li><li><a href="#Show">ShowHTTPErrorsStats</a>
+</li><li><a href="#Show">ShowSMTPErrorsStats</a>
+</li><li><a href="#Show">ShowClusterStats</a>
+</li><li><a href="#AddDataArray">AddDataArrayMonthStats</a>
+</li><li><a href="#AddDataArray">AddDataArrayShowDaysOfMonthStats</a>
+</li><li><a href="#AddDataArray">AddDataArrayShowDaysOfWeekStats</a>
+</li><li><a href="#AddDataArray">AddDataArrayShowHoursStats</a>
+</li><li><a href="#IncludeInternalLinksInOriginSection">IncludeInternalLinksInOriginSection</a>
+</li><li><a href="#Max">MaxNbOfDomain</a>
+</li><li><a href="#Max">MinHitDomain</a>
+</li><li><a href="#Max">MaxNbOfHostsShown</a>
+</li><li><a href="#Max">MinHitHost</a>
+</li><li><a href="#Max">MaxNbOfLoginShown</a>
+</li><li><a href="#Max">MinHitLogin</a>
+</li><li><a href="#Max">MaxNbOfRobotShown</a>
+</li><li><a href="#Max">MinHitRobot</a></li><li><a href="#Max">MaxNbOfDownloadsShown</a></li><li><a href="#Max">MinHitDownloads</a></li><li><a href="#Max">MaxNbOfPageShown</a>
+</li><li><a href="#Max">MaxNbOfOsShown</a>
+</li><li><a href="#Max">MinHitOs</a>
+</li><li><a href="#Max">MaxNbOfBrowsersShown</a>
+</li><li><a href="#Max">MinHitBrowser</a>
+</li><li><a href="#Max">MinHitFile</a>
+</li><li><a href="#Max">MaxNbOfScreenSizesShown</a>
+</li><li><a href="#Max">MinHitScreenSize</a>
+</li><li><a href="#Max">MaxNbOfRefererShown</a>
+</li><li><a href="#Max">MinHitRefer</a>
+</li><li><a href="#Max">MaxNbOfKeywordsShown</a>
+</li><li><a href="#Max">MinHitKeyword</a>
+</li><li><a href="#FirstDayOfWeek">FirstDayOfWeek</a>
+</li><li><a href="#ShowFlagLinks">ShowFlagLinks</a>
+</li><li><a href="#ShowLinksOnUrl">ShowLinksOnUrl</a>
+</li><li><a href="#MaxLengthOfURL">MaxLengthOfURL</a>
+</li><li><a href="#ShowLinksToWhoIs">ShowLinksToWhoIs</a>
+</li><li><a href="#UseHTTPSLinksForUrl">UseHTTPSLinksForUrl</a>
+</li><li><a href="#LinksToWhoIs">LinksToWhoIs</a>
+</li><li><a href="#LinksToIPWhoIs">LinksToIPWhoIs</a>
+</li><li><a href="#HTMLHeadSection">HTMLHeadSection</a>
+</li><li><a href="#HTMLEndSection">HTMLEndSection</a>
+</li><li><a href="#Bar">BarWidth</a>
+</li><li><a href="#Bar">BarHeight</a>
+</li><li><a href="#Logo">Logo</a>
+</li><li><a href="#Logo">LogoLink</a>
+</li><li><a href="#StyleSheet">StyleSheet</a>
+</li><li><a href="#color_">color_Background</a>
+</li><li><a href="#color_">color_TableBGTitle</a>
+</li><li><a href="#color_">color_TableTitle</a>
+</li><li><a href="#color_">color_TableBG</a>
+</li><li><a href="#color_">color_TableRowTitle</a>
+</li><li><a href="#color_">color_TableBGRowTitle</a>
+</li><li><a href="#color_">color_TableBorder</a>
+</li><li><a href="#color_">color_text</a>
+</li><li><a href="#color_">color_titletext</a>
+</li><li><a href="#color_">color_weekend</a>
+</li><li><a href="#color_">color_link</a>
+</li><li><a href="#color_">color_hover</a>
+</li><li><a href="#color_">color_u</a>
+</li><li><a href="#color_">color_v</a>
+</li><li><a href="#color_">color_p</a>
+</li><li><a href="#color_">color_h</a>
+</li><li><a href="#color_">color_k</a>
+</li><li><a href="#color_">color_s</a>
+</li><li><a href="#color_">color_e</a>
+</li><li><a href="#color_">color_x</a>
+</li></ul>
<br><b>DIRECTIVES FOR PLUGINS</b><br>
<ul>
<li><a href="#LoadPlugin">LoadPlugin</a>
-</ul>
+</li></ul>
<br><b>DIRECTIVES IN EXTRA SECTIONS</b><br>
<ul>
<li><a href="#Extra">ExtraSectionNameX</a>
-<li><a href="#Extra">ExtraSectionCodeFilterX</a>
-<li><a href="#Extra">ExtraSectionConditionX</a>
-<li><a href="#Extra">ExtraSectionFirstColumnTitleX</a>
-<li><a href="#Extra">ExtraSectionFirstColumnValuesX</a>
-<li><a href="#Extra">ExtraSectionFirstColumnFormatX</a>
-<li><a href="#Extra">ExtraSectionStatTypesX</a>
-<li><a href="#Extra">ExtraSectionAddAverageRowX</a>
-<li><a href="#Extra">ExtraSectionAddSumRowX</a>
-<li><a href="#Extra">MaxNbOfExtraX</a>
-<li><a href="#Extra">MinHitExtraX</a>
-<li><a href="#ExtraTrackedRowsLimit">ExtraTrackedRowsLimit</a>
-</ul>
+</li><li><a href="#Extra">ExtraSectionCodeFilterX</a>
+</li><li><a href="#Extra">ExtraSectionConditionX</a>
+</li><li><a href="#Extra">ExtraSectionFirstColumnTitleX</a>
+</li><li><a href="#Extra">ExtraSectionFirstColumnValuesX</a>
+</li><li><a href="#Extra">ExtraSectionFirstColumnFormatX</a>
+</li><li><a href="#Extra">ExtraSectionStatTypesX</a>
+</li><li><a href="#Extra">ExtraSectionAddAverageRowX</a>
+</li><li><a href="#Extra">ExtraSectionAddSumRowX</a>
+</li><li><a href="#Extra">MaxNbOfExtraX</a>
+</li><li><a href="#Extra">MinHitExtraX</a>
+</li><li><a href="#ExtraTrackedRowsLimit">ExtraTrackedRowsLimit</a>
+</li></ul>
<br><b>INCLUDES</b><br>
<ul>
<li><a href="#Include">Include</a>
-</ul>
+</li></ul>
<br># %uaquot User agent with format: "Mozilla/4.0 (compatible, ...)"
<br># %ua User agent with format: Mozilla/4.0_(compatible...)
<br># %gzipin mod_gzip compression input bytes: In:XXX
-<br># %gzipout mod_gzip compression output bytes & ratio: Out:YYY:ZZpct.
+<br># %gzipout mod_gzip compression output bytes & ratio: Out:YYY:ZZpct.
<br># %gzipratio mod_gzip compression ratio: ZZpct.
<br># %deflateratio mod_deflate compression ratio with format: (ZZ)
<br># %email EMail sender (for mail log)
<a name="DirIcons"><b>DirIcons</b></a><br>
<b>Version : </b>1.0+<br>
<br># Relative or absolute web URL of your awstats icon directory.
-<br># If you build static reports ("... -output > outputpath/output.html"), enter
+<br># If you build static reports ("... -output > outputpath/output.html"), enter
<br># path of icon directory relative to the output directory 'outputpath'.
<br># Example: "/awstatsicons"
<br># Example: "../icon"
<br># the next parameter URLWithQueryWithoutFollowingParameters.
<br># Possible values:
<br># 0 - URLs are cleaned from the query string (ie: "/mypage.html")
-<br># 1 - Full URL with query string is used (ie: "/mypage.html?p=x&q=y")
+<br># 1 - Full URL with query string is used (ie: "/mypage.html?p=x&q=y")
<br># Default: 0
<br>#
<br>URLWithQuery=0
<br># such cases, it is higly recommanded to ask AWStats to keep only parameters
<br># you need (if you know them) before counting, manipulating and storing URL.
<br># Enter here list of wanted parameters. For example, with "param", one hit on
-<br># /mypage.cgi?param=abc&id=Yo4UomP9d and /mypage.cgi?param=abc&id=Mu8fdxl3r
+<br># /mypage.cgi?param=abc&id=Yo4UomP9d and /mypage.cgi?param=abc&id=Mu8fdxl3r
<br># will be reported as 2 hits on /mypage.cgi?param=abc
<br># This parameter is not used when URLWithQuery is 0 and can't be used with
<br># URLWithQueryWithoutFollowingParameters.
<br># such cases, it is higly recommanded to ask AWStats to remove such parameters
<br># from the URL before counting, manipulating and storing URL. Enter here list
<br># of all non wanted parameters. For example, if you enter "id", one hit on
-<br># /mypage.cgi?param=abc&id=Yo4UomP9d and /mypage.cgi?param=abc&id=Mu8fdxl3r
+<br># /mypage.cgi?param=abc&id=Yo4UomP9d and /mypage.cgi?param=abc&id=Mu8fdxl3r
<br># will be reported as 2 hits on /mypage.cgi?param=abc
<br># This parameter is not used when URLWithQuery is 0 and can't be used with
<br># URLWithQueryWithOnlyFollowingParameters.
<br># are counted as two different referrer pages.
<br># Possible values:
<br># 0 - Referrer URLs are cleaned from the query string (ie: "/mypage.html")
-<br># 1 - Full URL with query string is used (ie: "/mypage.html?p=x&q=y")
+<br># 1 - Full URL with query string is used (ie: "/mypage.html?p=x&q=y")
<br># Default: 0
<br>#
<br>URLReferrerWithQuery=0
<br># To enable all this features, you must copy the awstats_misc_tracker.js file
<br># into a /js/ directory stored in your web document root and add the following
<br># HTML code at the end of your index page (before </BODY>) :
-<br># <i><script language=javascript src="/js/awstats_misc_tracker.js"></script></i>
+<br># <i><script language=javascript src="/js/awstats_misc_tracker.js"></script></i>
<br># If code is not added in index page, all this detection capabilities will be
<br># disabled. You must also check that ShowScreenSizeStats and ShowMiscStats
<br># parameters are set to 1 to make results appear in report page.
5.6+ for ShowMiscStats,ShowSTMPErrorsStats<br>
5.8+ for ShowClusterStats<br>
6.0+ for ShowWormsStats<br>
-6.4+ for ShowSummary<br>
+6.4+ for ShowSummary<br>7.0+ for ShowDownloadsStats<br>
<br># You choose here which reports you want to see in the main page and what you
<br># want to see in those reports.
<br># Possible values:
<br># Context: Web, Streaming, Mail, Ftp
<br># Default: 1, Possible column codes: None
<br>ShowFileSizesStats=0
-<br>
+<br><br># Show downloads chart.<br># Context: Web, Streaming, Ftp<br># Default: HB, Possible column codes: HB<br>ShowDownloadsStats=HB <br>
<br># Show operating systems chart
<br># Context: Web, Streaming, Ftp
<br># Default: 1, Possible column codes: None
<br># Stats by robots
<br>MaxNbOfRobotShown = 10
<br>MinHitRobot = 1
-<br># Stats by pages
+<br># Stats for Downloads<br>MaxNbOfDownloadsShown = 10<br>MinHitDownloads = 1<br># Stats by pages
<br>MaxNbOfPageShown = 10
<br>MinHitFile = 1
<br># Stats by OS
<br><br><hr>
-<script language=javascript>
+<script language="javascript">
var date='$Date$';
document.writeln("Last revision: "+date);
</script>
-</body>
-</html>
+</body></html>
\ No newline at end of file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
+<html><head>
<meta name="description" content="AWStats Documentation - Glossary of terms">
<meta name="keywords" content="awstats, awstat, glossary, terms, definition, lexical, index">
<meta name="robots" content="index,follow">
-<meta name="title" content="AWStats Documentation - Glossary">
-<title>AWStats Documentation - Glossary</title>
+<meta name="title" content="AWStats Documentation - Glossary"><title>AWStats Documentation - Glossary</title>
+
<link rel="stylesheet" href="styles.css" type="text/css">
<!-- $Revision$ - $Author$ - $Date$ -->
</head>
-
-<body topmargin=10 leftmargin=5>
-
-
-<table style="font: 10pt arial,helvetica,verdana" cellpadding=0 cellspacing=0 border=0 bgcolor=#FFFFFF width=100%>
-
+<body topmargin="10" leftmargin="5">
+<table style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="100%">
<!-- Large -->
-<tr style="font: 10pt arial,helvetica,verdana">
-<td bgcolor=#9999cc align=center><a href="/"><img src="images/awstats_logo4.png" border=0></a></td>
-<td bgcolor=#9999cc align=center>
+<tbody>
+<tr style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
+<td align="center" bgcolor="#9999cc"><a href="/"><img src="images/awstats_logo4.png" border="0"></a></td>
+<td align="center" bgcolor="#9999cc">
<br>
-<font style="font: 16pt arial,helvetica,sans-serif" color=#EEEEFF><b>AWStats logfile analyzer 6.95 Documentation</b></font><br>
+<font style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" color="#eeeeff"><b>AWStats logfile analyzer 6.95
+Documentation</b></font><br>
<br>
</td>
-<td bgcolor=#9999cc align=center>
+<td align="center" bgcolor="#9999cc">
</td>
</tr>
-
+</tbody>
</table>
-
-
-<br><br><H1 style="font: 26px arial,helvetica,sans-serif">Glossary</H1><br>
-
+<br>
+<br>
+<h1 style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 26px; line-height: normal; font-size-adjust: none; font-stretch: normal;">Glossary</h1>
+<br>
<a name="Unique Visitor"><b>Unique Visitor</b></a>:<br>
- A unique visitor is a host that has made at least 1 hit
-on 1 page of your web site during the current period shown by the report.
-If this host make several visits during this period, it is counted only once.<br>
+A unique
+visitor is a person or computer (host) that has made at least 1 hit
+on 1 page of your web site during the current period shown by the
+report.
+If this user makes several visits during this period, it is counted
+only once. Visitors are tracked by IP address, so if multiple users are
+accessing your site from the same IP (such as a home or office
+network), they will be counted as a single unique visitor.<br>
The period shown by AWStats reports is by default the current month.<br>
-However if you use AWStats as a CGI you can click on the "year" link to have a report for all the year.
-In a such report, period is full year, so Unique Visitors are number of hosts that have made at least 1 hit
-on 1 page of your web site during those year.<br>
+However if you use AWStats as a CGI you can click on the "year" link to
+have a report for all the year.
+In such a report, period is a full year, so Unique Visitors are number
+of hosts that have made at least 1 hit
+on 1 page of your web site during the year.<br>
<hr>
-
<a name="Visits"><b>Visits</b></a>:<br>
Number of visits made by all visitors.<br>
-Think "session" here, say a unique IP accesses a page, and then requests three others without an hour
-between any of the requests, all of the "pages" are included in the visit, therefore you should expect
-multiple pages per visit and multiple visits per unique visitor (assuming that some of the unique IPs are
+Think "session" here, say a unique IP accesses a page, and then
+requests three other pages within an hour. All of the "pages" are
+included in the visit, therefore you should expect
+multiple pages per visit and multiple visits per unique visitor
+(assuming that some of the unique IPs are
logged with more than an hour between requests)<br>
<hr>
-
<a name="Pages"><b>Pages</b></a>:<br>
-The number of "pages" logged. Only files that don't match an entry in the NotPageList config
-parameter (and match an entry of OnlyFiles config parameter if used) are counted as "Pages".
-Usually pages are reserved for HTML files or CGI files, not images nor other files requested as a result
-of loading a "Page" (like js,css... files).<br>
-<hr>
-
-<a name="Hits"><b>Hits</b></a>:<br>
-Any files requested from the server (including files that are "Pages") except those that match
+The number of "pages" viewed by visitors. Pages are usually HTML, PHP
+or ASP files, not images or other files requested as a result
+of loading a "Page" (like js,css... files). Files listed in the
+NotPageList config
+parameter (and match an entry of OnlyFiles config parameter if used)
+are not counted as "Pages".
+<hr><a name="Hits"><b>Hits</b></a>:<br>
+Any files requested from the server (including files that are "Pages")
+except those that match
the SkipFiles config parameter.<br>
<hr>
-
-
<a name="Bandwidth"><b>Bandwidth</b></a>:<br>
-Total number of bytes for pages, images and files downloaded by web browsing.<br>
-Note 1: Of course, this number includes only traffic for web only (or mail only, or ftp only
+Total number of bytes for pages, images and files downloaded by web
+browsing.<br>
+Note 1: Of course, this number includes only traffic for web only (or
+mail only, or ftp only
depending on value of LogType).<br>
-Note 2: This number does not include technical header data size used inside the HTTP or HTTPS protocol or by
+Note 2: This number does not include technical header data size used
+inside the HTTP or HTTPS protocol or by
protocols at a lower level (TCP, IP...).<br>
-Because of two previous notes, this number is often lower than bandwith reported by your provider (your
-provider counts in most cases bandwitdh at a lower level and includes all IP and UDP traffic).<br>
+Because of two previous notes, this number is often lower than bandwith
+reported by your provider (your
+provider counts in most cases bandwitdh at a lower level and includes
+all IP and UDP traffic).<br>
<hr>
-
<a name="Entry Page"><b>Entry Page</b></a>:<br>
First page viewed by a visitor during its visit.<br>
-Note: When a visit started at end of month to end at beginning of next month,
+Note: When a visit started at end of month to end at beginning of next
+month,
you might have an Entry page for the month report and no Exit pages.<br>
That's why Entry pages can be different than Exit pages.<br>
<hr>
-
<a name="Exit Page"><b>Exit Page</b></a>:<br>
Last page viewed by a visitor during its visit.<br>
-Note: When a visit started at end of month to end at beginning of next month,
+Note: When a visit started at end of month to end at beginning of next
+month,
you might have an Entry page for the month report and no Exit pages.<br>
That's why Entry pages can be different than Exit pages.<br>
<hr>
-
<a name="Session Duration"><b>Session Duration</b></a>:<br>
The time a visitor spent on your site for each visit.<br>
-Some Visits durations are 'unknown' because they can't always be calculated. This is the major reason for this:<br>
+Some Visits durations are 'unknown' because they can't always be
+calculated. This is the major reason for this:<br>
- Visit was not finished when 'update' occured.<br>
-- Visit started the last hour (after 23:00) of the last day of a month (A technical reason prevents AWStats from
+- Visit started the last hour (after 23:00) of the last day of a month
+(A technical reason prevents AWStats from
calculating duration of such sessions).<br>
<hr>
-
<a name="Grabber"><b>Grabber</b></a>:<br>
-A browser that is used primarily for copying locally an entire site. These include
+A browser that is used primarily for copying locally an entire site.
+These include
for example "teleport", "webcapture", "webcopier"...<br>
<hr>
-
<a name="Direct"><b>Direct access / Bookmark</b></a>:<br>
-This number represent the number of hits or ratio of hits when a visit to your site comes
-from a direct access. This means the first page of your web site was called:<br>
+This number represent the number of hits or ratio of hits when a visit
+to your site comes
+from a direct access. This means the first page of your web site was
+called:<br>
- By typing your URL on the web browser address bar<br>
- By clicking on your URL stored by a visitor inside its favorites<br>
-- By clicking on your URL found everywhere but not another internet web pages (a link in a document,
+- By clicking on your URL found everywhere but not another internet web
+pages (a link in a document,
an application, etc...)<br>
- Clicking an URL of your site inside a mail is often counted here.<br>
<hr>
-
<a name="AddToFavourites"><b>Add To Favourites</b></a>:<br>
-This value, available in the "miscellanous chart", reports an estimated indicator
-that can be used to have an idea of the number of times a visitor has added your web
+This value, available in the "miscellanous chart", reports an estimated
+indicator
+that can be used to have an idea of the number of times a visitor has
+added your web
site into its favourite bookmarks.<br>
The technical rules for that is the following formula:<br>
<i>Number of Add to Favourites = round((x+y) / r)</i><br>
where<br>
-x = Number of hits made by IE browsers for "/anydir/favicon.ico", with a referer field not defined, and with no 404 error code<br>
-y = Number of hits made by IE browsers for "/favicon.ico", with a referer field not defined, with or without 404 error code<br>
-r = Ratio of hits made by IE browsers compared to hits made by all browsers (r <= 1)<br>
-<br>
-As you can see in formula, only IE is used to count reliable "add", the "Add to favourites"
-for other browsers are estimated using ratio of other browsers usage compared to ratio of
-IE usage. The reason is that only IE do a hit on favicon.ico nearly ONLY when a user add the
-page to its favourites. The other browsers make often hits on this file also for other reasons
-so we can't count one "hit" as one "add" since it might be a hit for another reason.<br>
-AWStats differentiate also hits with error and not to avoid counting multiple hits
-made recursively in upper path when favicon.ico file is not found in deeper directory
+x = Number of hits made by IE browsers for "/anydir/favicon.ico", with
+a referer field not defined, and with no 404 error code<br>
+y = Number of hits made by IE browsers for "/favicon.ico", with a
+referer field not defined, with or without 404 error code<br>
+r = Ratio of hits made by IE browsers compared to hits made by all
+browsers (r <= 1)<br>
+<br>
+As you can see in formula, only IE is used to count reliable "add", the
+"Add to favourites"
+for other browsers are estimated using ratio of other browsers usage
+compared to ratio of
+IE usage. The reason is that only IE do a hit on favicon.ico nearly
+ONLY when a user add the
+page to its favourites. The other browsers make often hits on this file
+also for other reasons
+so we can't count one "hit" as one "add" since it might be a hit for
+another reason.<br>
+AWStats differentiate also hits with error and not to avoid counting
+multiple hits
+made recursively in upper path when favicon.ico file is not found in
+deeper directory
of path.<br>
-Note that this number is just an indicator that is in most case higher than true value.
-The reason is that even IE browser sometimes make hit on favicon without an "Add to favourites"
+Note that this number is just an indicator that is in most case higher
+than true value.
+The reason is that even IE browser sometimes make hit on favicon
+without an "Add to favourites"
action by a user.
-<hr>
-
-
-<a name="HTTP"><b>HTTP Status Codes</b><a>:<br>
-HTTP status codes are returned by web servers to indicate the status of a request.
-Codes <b>200</b> and <b>304</b> are used to tell the browser the page can be viewed.
-All other codes generates hits and traffic 'not seen' by the visitor. For example a return
-code 301 or 302 will tell the browser to ask another page. The browser will do another hit
-and should finaly receive the page with a return code <b>200</b> and <b>304</b>.
-All codes that are 'unseen' traffic are isolated by AWStats in the HTTP Status report chart,
+<hr><a name="HTTP"><b>HTTP Status Codes</b></a>:<br>
+HTTP status codes are returned by web servers to indicate the status of
+a request.
+Codes <b>200</b> and <b>304</b> are used to
+tell the browser the page can be viewed.
+<span style="font-weight: bold;">206</span> codes indicate partial
+downloading of content and is reported in the Downloads section. All
+other codes generates hits and traffic 'not seen' by the visitor.
+For example a return
+code 301 or 302 will tell the browser to ask another page. The browser
+will do another hit
+and should finaly receive the page with a return code <b>200</b>
+and <b>304</b>.
+All codes that are 'unseen' traffic are isolated by AWStats in the HTTP
+Status report chart,
enabled by the directives <a href="awstats_config.html#Show">ShowHTTPErrorsStats</a>.
-in config file. You can also change value for 'not error' hits (set by default to <b>200</b> and <b>304</b>
-with the <a href="awstats_config.html#ValidHTTPcodes">ValidHTTPcodes</a> directive.
-The following table outlines all status codes defined for the HTTP/1.1 draft specification
-outlined in <a href="http://www.w3.org/Protocols/rfc2068/rfc2068">IETF rfc 2068</a>.<br>
-They are 3-digit codes where the first digit of this code identifies the class of the status
-code and the remaining 2 digits correspond to the specific condition within the response class.
+in config file. You can also change value for 'not error' hits (set by
+default to <b>200</b> and <b>304</b>
+with the <a href="awstats_config.html#ValidHTTPcodes">ValidHTTPcodes</a>
+directive.
+The following table outlines all status codes defined for the HTTP/1.1
+draft specification
+outlined in <a href="http://www.w3.org/Protocols/rfc2068/rfc2068">IETF
+rfc 2068</a>.<br>
+They are 3-digit codes where the first digit of this code identifies
+the class of the status
+code and the remaining 2 digits correspond to the specific condition
+within the response class.
They are classified in 5 categories:<br>
<ul>
-<li><font face="arial"><font size=-1><a href="#1">1xx - informational</a></font></font></li>
-<li><font face="arial"><font size=-1><a href="#2">2xx - successful</a></font></font></li>
-<li><font face="arial"><font size=-1><a href="#3">3xx - redirection</a></font></font></li>
-<li><font face="arial"><font size=-1><a href="#4">4xx - client error </a></font></font></li>
-<li><font face="arial"><font size=-1><a href="#5">5xx - server error </a></font></font></li>
+<li><font face="arial"><font size="-1"><a href="#1">1xx - informational</a></font></font></li>
+<li><font face="arial"><font size="-1"><a href="#2">2xx - successful</a></font></font></li>
+<li><font face="arial"><font size="-1"><a href="#3">3xx - redirection</a></font></font></li>
+<li><font face="arial"><font size="-1"><a href="#4">4xx - client error </a></font></font></li>
+<li><font face="arial"><font size="-1"><a href="#5">5xx - server error </a></font></font></li>
</ul>
-
-
-<table WIDTH="90%" >
-<tr><td VALIGN=TOP BGCOLOR="#DADADA">
-
-<!-- HTTP 1xx codes -->
-<a NAME="1"></a><b><font face="arial">1xx class - Informational</font></b>
-<br><font face="arial"><font size=-1>Informational status codes are provisional
-responses from the web server... they give the client a heads-up on what
-the server is doing. Informational codes do not indicate an error condition. </font></font>
-
-<table WIDTH="100%">
+<table width="90%">
+<tbody>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>100</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>100 Continue</font></font></b>
-<br><font face="arial"><font size=-1>The continue status code tells the
+<td bgcolor="#dadada" valign="top"><!-- HTTP 1xx codes -->
+<a name="1"></a><b><font face="arial">1xx
+class - Informational</font></b>
+<br>
+<font face="arial"><font size="-1">Informational
+status codes are provisional
+responses from the web server... they give the client a heads-up on
+what
+the server is doing. Informational codes do not indicate an error
+condition. </font></font>
+<table width="100%">
+<tbody>
+<tr>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">100</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">100 Continue</font></font></b>
+<br>
+<font face="arial"><font size="-1">The
+continue status code tells the
browser to continue sending a request to the server. </font></font></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>101</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>101 Switching Protocols</font></font></b>
-<br><font face="arial"><font size=-1>The server sends this response when
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">101</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">101 Switching
+Protocols</font></font></b>
+<br>
+<font face="arial"><font size="-1">The
+server sends this response when
the client asks to switch from HTTP/1.0 to HTTP/1.1 </font></font></td>
</tr>
+</tbody>
</table>
-
-<p><a NAME="2"></a><b><font face="arial">2xx class - Successful</font></b>
-<br><font face="arial"><font size=-1>This class of status code indicates
-that the client's request was received, understood, and successful. </font></font>
-
-<table WIDTH="100%">
+<p><a name="2"></a><b><font face="arial">2xx class - Successful</font></b>
+<br>
+<font face="arial"><font size="-1">This
+class of status code indicates
+that the client's request was received, understood, and
+successful. </font></font>
+<table width="100%">
+<tbody>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>200</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>200 Successful</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">200</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">200 Successful</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>201</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>201 Created</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">201</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">201 Created</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>202</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>202 Accepted</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">202</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">202 Accepted</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>203</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>203 Non-Authorative Information</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">203</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">203
+Non-Authorative Information</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>204</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>204 No Content</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">204</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">204 No Content</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>205</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>205 Reset Content</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">205</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">205 Reset Content</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>206</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>206 Partial Content</font></font></b>
-<br><font face="arial"><font size=-1>The partial content success code is
-issued when the server fulfills a partial GET request. This happens when
-the client is downloading a multi-part document or part of a larger file. </font></font></td>
-</tr>
-
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">206</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">206 Partial Content</font></font></b>
+<br>
+<font face="arial"><font size="-1">The
+partial content success code is
+issued when the server fulfills a partial GET request. This happens
+when
+the client is downloading a multi-part document or part of a larger
+file. </font></font></td>
+</tr>
+</tbody>
</table>
-
<!-- HTTP 3xx codes -->
-<a NAME="3"></a><b><font face="arial">3xx class - Redirection</font></b>
-<br><font face="arial"><font size=-1>This code tells the client that the
-browser should be redirected to another URL in order to complete the request.
+<a name="3"></a><b><font face="arial">3xx
+class - Redirection</font></b>
+<br>
+<font face="arial"><font size="-1">This
+code tells the client that the
+browser should be redirected to another URL in order to complete the
+request.
This is not an error condition. </font></font>
-
-<table WIDTH="100%" >
+<table width="100%">
+<tbody>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>300</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>300 Multiple Choices</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">300</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">300 Multiple
+Choices</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>301</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>301 Moved Permanently</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">301</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">301 Moved
+Permanently</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>302</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>302 Moved Temporarily</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">302</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">302 Moved
+Temporarily</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>303</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>303 See Other</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">303</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">303 See Other</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>304</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>304 Not Modified</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">304</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">304 Not Modified</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>305</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>305 Use Proxy</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">305</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">305 Use Proxy</font></font></b></td>
</tr>
-
+</tbody>
</table>
-
<!-- HTTP 4xx codes -->
-<a NAME="4"></a><b><font face="arial">4xx class - Client Error</font></b>
-<br><font face="arial"><font size=-1>This status code indicates that the
-client has sent bad data or a malformed request to the server. Client errors
-are generally issued by the webserver when a client tries to gain access
+<a name="4"></a><b><font face="arial">4xx
+class - Client Error</font></b>
+<br>
+<font face="arial"><font size="-1">This
+status code indicates that the
+client has sent bad data or a malformed request to the server. Client
+errors
+are generally issued by the webserver when a client tries to gain
+access
to a protected area using a bad username and password. </font></font>
-
-<table WIDTH="100%" >
+<table width="100%">
+<tbody>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>400</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>400 Bad Request</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">400</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">400 Bad Request</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>401</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>401 Unauthorized</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">401</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">401 Unauthorized</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>402</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>402 Payment Required</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">402</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">402 Payment
+Required</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>403</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>403 Forbidden</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">403</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">403 Forbidden</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>404</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>404 Not Found</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">404</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">404 Not Found</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>405</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>400 Method Not Allowed</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">405</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">400 Method Not
+Allowed</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>406</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>400 Not Acceptable</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">406</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">400 Not Acceptable</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>407</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>400 Proxy Authentication Required</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">407</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">400 Proxy
+Authentication Required</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>408</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>400 Request Timeout</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">408</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">400 Request Timeout</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>409</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>409 Conflict</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">409</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">409 Conflict</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>410</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>410 Gone</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">410</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">410 Gone</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>411</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>411 Length Required</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">411</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">411 Length Required</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>412</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>412 Precondition Failed</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">412</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">412 Precondition
+Failed</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>413</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>413 Request Entity Too Long</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">413</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">413 Request Entity
+Too Long</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>414</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>414 Request-URI Too Long</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">414</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">414 Request-URI
+Too Long</font></font></b></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>415</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>415 Unsupported Media Type</font></font></b></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">415</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">415 Unsupported
+Media Type</font></font></b></td>
</tr>
-
+</tbody>
</table>
-
<!-- HTTP 5xx codes -->
-<a NAME="5"></a><b><font face="arial">5xx class - Server Error</font></b>
-<br><font face="arial"><font size=-1>This status code indicates that the
+<a name="5"></a><b><font face="arial">5xx
+class - Server Error</font></b>
+<br>
+<font face="arial"><font size="-1">This
+status code indicates that the
client's request couldn't be succesfully processed due to some internal
-error in the web server. These error codes may indicate something is seriously
+error in the web server. These error codes may indicate something is
+seriously
wrong with the web server. </font></font>
-
-<table WIDTH="100%" >
-<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>500</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>500 Internal Server Error</font></font></b>
-<br><font face="arial"><font size=-1>An internal server error has caused
-the server to abort your request. This is an error condition that may also
-indicate a misconfiguration with the web server. However, the most common
-reason for 500 server errors is when you try to execute a script that has
+<table width="100%">
+<tbody>
+<tr>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">500</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">500 Internal
+Server Error</font></font></b>
+<br>
+<font face="arial"><font size="-1">An
+internal server error has caused
+the server to abort your request. This is an error condition that may
+also
+indicate a misconfiguration with the web server. However, the most
+common
+reason for 500 server errors is when you try to execute a script that
+has
syntax errors. </font></font></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>501</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>501 Not Implemented</font></font></b>
-<br><font face="arial"><font size=-1>This code is generated by a webserver
-when the client requests a service that is not implemented on the server.
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">501</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">501 Not Implemented</font></font></b>
+<br>
+<font face="arial"><font size="-1">This
+code is generated by a webserver
+when the client requests a service that is not implemented on the
+server.
Typically, not implemented codes are returned when a client attempts to
-POST data to a non-CGI (ie, the form action tag refers to a non-executable
+POST data to a non-CGI (ie, the form action tag refers to a
+non-executable
file). </font></font></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>502</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>502 Bad Gateway</font></font></b>
-<br><font face="arial"><font size=-1>The server, when acting as a proxy,
-issues this response when it receives a bad response from an upstream or
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">502</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">502 Bad Gateway</font></font></b>
+<br>
+<font face="arial"><font size="-1">The
+server, when acting as a proxy,
+issues this response when it receives a bad response from an upstream
+or
support server. </font></font></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>503</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>503 Service Unavailable</font></font></b>
-<br><font face="arial"><font size=-1>The web server is too busy processing
-current requests to listen to a new client. This error represents a serious
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">503</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">503 Service
+Unavailable</font></font></b>
+<br>
+<font face="arial"><font size="-1">The
+web server is too busy processing
+current requests to listen to a new client. This error represents a
+serious
problem with the webserver (normally solved with a reboot). </font></font></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>504</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>504 Gateway Timeout</font></font></b>
-<br><font face="arial"><font size=-1>Gateway timeouts are normally issued
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">504</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">504 Gateway Timeout</font></font></b>
+<br>
+<font face="arial"><font size="-1">Gateway
+timeouts are normally issued
by proxy servers when an upstream or support server doesn't respond to
a request in a timely fashion. </font></font></td>
</tr>
-
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>505</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>505 HTTP Version Not Supported</font></font></b>
-<br><font face="arial"><font size=-1>The server issues this status code
-when a client tries to talk using an HTTP protocol that the server doesn't
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">505</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">505 HTTP Version
+Not Supported</font></font></b>
+<br>
+<font face="arial"><font size="-1">The
+server issues this status code
+when a client tries to talk using an HTTP protocol that the server
+doesn't
support or is configured to ignore.</font></font></td>
</tr>
-
+</tbody>
</table>
+</p>
</td>
-
-<td ALIGN=LEFT VALIGN=TOP></td>
+<td align="left" valign="top"></td>
</tr>
+</tbody>
</table>
<br>
-
<hr>
-
-<a name="SMTP"><b>SMTP Status Codes</b><a>:<br>
-
-SMTP status codes are returned by mail servers to indicate the status of a sending/receiving mail.
-The status code depends on mail server and preprocessor used to analyze log file.<br>
-All codes that are failure codes are isolated by AWStats in the SMTP Status report chart,
-enabled by the directives <a href="awstats_config.html#Show">ShowSMTPErrorsStats</a> in AWStats
-config file. You can decide which codes are successfull mail transfer that should not appear
-in this chart with the <a href="awstats_config.html#ValidSMTPCodes">ValidSMTPCodes</a> directive.<br>
-Here are values reported for most mail servers (This should also be values when mail log file
+<a name="SMTP"><b>SMTP Status Codes</b></a><a>:<br>
+SMTP status codes are returned by mail servers to indicate the status
+of a sending/receiving mail.
+The status code depends on mail server and preprocessor used to analyze
+log file.<br>
+All codes that are failure codes are isolated by AWStats in the SMTP
+Status report chart,
+enabled by the directives </a><a href="awstats_config.html#Show">ShowSMTPErrorsStats</a>
+in AWStats
+config file. You can decide which codes are successfull mail transfer
+that should not appear
+in this chart with the <a href="awstats_config.html#ValidSMTPCodes">ValidSMTPCodes</a>
+directive.<br>
+Here are values reported for most mail servers (This should also be
+values when mail log file
is preprocessing with maillogconvert.pl).<br>
SMTP Errors are classified in 3 categories:<br>
<ul>
-<li><font face="arial"><font size=-1><a href="#SMTP23">2xx/3xx - successful</a></font></font></li>
-<li><font face="arial"><font size=-1><a href="#SMTP4">4xx - failure, asking sender to try later</a></font></font></li>
-<li><font face="arial"><font size=-1><a href="#SMTP5">5xx - permanent failure</a></font></font></li>
+<li><font face="arial"><font size="-1"><a href="#SMTP23">2xx/3xx - successful</a></font></font></li>
+<li><font face="arial"><font size="-1"><a href="#SMTP4">4xx - failure, asking sender to try later</a></font></font></li>
+<li><font face="arial"><font size="-1"><a href="#SMTP5">5xx - permanent failure</a></font></font></li>
</ul>
-
-
-<table WIDTH="90%">
-<tr><td VALIGN=TOP BGCOLOR="#DADADA">
-
-<!-- SMTP 2xx/3xx -->
-
-<a NAME="SMTP23"></a><b><font face="arial">2xx/3xx class - Success</font></b>
-<br><font face="arial"><font size=-1>
-They are SMTP protocols successfull answers
+<table width="90%">
+<tbody>
+<tr>
+<td bgcolor="#dadada" valign="top"><!-- SMTP 2xx/3xx -->
+<a name="SMTP23"></a><b><font face="arial">2xx/3xx class - Success</font></b>
+<br>
+<font face="arial"><font size="-1">They
+are SMTP protocols successfull answers
</font></font>
-
-<table WIDTH="100%">
+<table width="100%">
+<tbody>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>200</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>200 Non standard success response</font></font></b>
-<br><font face="arial"><font size=-1>Non standard success response</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">200</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">200 Non standard
+success response</font></font></b>
+<br>
+<font face="arial"><font size="-1">Non
+standard success response</font></font></td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>211</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>211 System status, or system help reply</font></font></b>
-<br><font face="arial"><font size=-1>System status, or system help reply</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">211</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">211 System status,
+or system help reply</font></font></b>
+<br>
+<font face="arial"><font size="-1">System
+status, or system help reply</font></font></td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>214</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>214 Help message</font></font></b>
-<br><font face="arial"><font size=-1>Help message</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">214</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">214 Help message</font></font></b>
+<br>
+<font face="arial"><font size="-1">Help
+message</font></font></td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>220</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>220 <domain> Service ready</font></font></b>
-<br><font face="arial"><font size=-1><domain> Service ready</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">220</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">220 <domain>
+Service ready</domain></font></font></b>
+<br>
+<font face="arial"><font size="-1"><domain>
+Service ready</domain></font></font></td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>221</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>221 <domain> Service closing transmission channel</font></font></b>
-<br><font face="arial"><font size=-1><domain> Service closing transmission channel</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">221</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">221 <domain>
+Service closing transmission channel</domain></font></font></b>
+<br>
+<font face="arial"><font size="-1"><domain>
+Service closing transmission channel</domain></font></font></td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>250</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>250 Requested mail action taken and completed</font></font></b>
-<br><font face="arial"><font size=-1>Your ISP mail server have successfully executes a command and the DNS is reporting a positive delivery.</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">250</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">250 Requested mail
+action taken and completed</font></font></b>
+<br>
+<font face="arial"><font size="-1">Your
+ISP mail server have successfully executes a command and the DNS is
+reporting a positive delivery.</font></font></td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>251</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>251 User not local: will forward to <forward-path></font></font></b>
-<br><font face="arial"><font size=-1>Your message to a specified email address is not local to the mail server, but it will accept and forward the message to a different recipient email address.</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">251</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">251 User not
+local: will forward to <forward-path></forward-path></font></font></b>
+<br>
+<font face="arial"><font size="-1">Your
+message to a specified
+email address is not local to the mail server, but it will accept and
+forward the message to a different recipient email address.</font></font></td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>252</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>252 Recipient cannot be verified</font></font></b>
-<br><font face="arial"><font size=-1>Recipient cannot be verified but mail server accepts the message and attempts delivery</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">252</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">252 Recipient
+cannot be verified</font></font></b>
+<br>
+<font face="arial"><font size="-1">Recipient
+cannot be verified but mail server accepts the message and attempts
+delivery</font></font></td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>354</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>354 Start mail input and end with <CRLF>.<CRLF></font></font></b>
-<br><font face="arial"><font size=-1>Indicates mail server is ready to accept the message or instruct your mail client to send the message body after the mail server have received the message headers.</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">354</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">354 Start mail
+input and end with <crlf>.<crlf></crlf></crlf></font></font></b>
+<br>
+<font face="arial"><font size="-1">Indicates
+mail server is ready
+to accept the message or instruct your mail client to send the message
+body after the mail server have received the message headers.</font></font></td>
</tr>
-
+</tbody>
</table>
-
-
<!-- SMTP 4xx -->
-
-<a NAME="SMTP4"></a><b><font face="arial">4xx class - Temporary Errors</font></b>
-<br><font face="arial"><font size=-1>
-Those codes are temporary error message. They are used to tell client sender that
-an error occured but he can try to solve it but trying again, so in most cases, clients that
-receive such codes will keep the mail in their queue and will try again later.<br>
+<a name="SMTP4"></a><b><font face="arial">4xx class - Temporary Errors</font></b>
+<br>
+<font face="arial"><font size="-1">Those
+codes are temporary error message. They are used to tell client sender
+that
+an error occured but he can try to solve it but trying again, so in
+most cases, clients that
+receive such codes will keep the mail in their queue and will try again
+later.<br>
</font></font>
-
-<table WIDTH="100%" >
+<table width="100%">
+<tbody>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>421</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>421 <domain> Service not available, closing transmission channel</font></font></b>
-<br><font face="arial"><font size=-1>This may be a reply to any command if the service knows it must shut down.</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">421</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">421 <domain>
+Service not available, closing transmission channel</domain></font></font></b>
+<br>
+<font face="arial"><font size="-1">This
+may be a reply to any command if the service knows it must shut down.</font></font></td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>450</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>450 Requested mail action not taken: mailbox busy or access denied</font></font></b>
-<br><font face="arial"><font size=-1>Your ISP mail server indicates that an email address does not exist or the mailbox is busy. It could be the network connection went down while sending, or it could also happen if the remote mail server does not want to accept mail from you for some reason i.e. (IP address, From address, Recipient, etc.)</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">450</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">450 Requested mail
+action not taken: mailbox busy or access denied</font></font></b>
+<br>
+<font face="arial"><font size="-1">Your
+ISP mail server indicates
+that an email address does not exist or the mailbox is busy. It could
+be the network connection went down while sending, or it could also
+happen if the remote mail server does not want to accept mail from you
+for some reason i.e. (IP address, From address, Recipient, etc.)</font></font></td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>451</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>451 Requested mail action aborted: error in processing</font></font></b>
-<br><font face="arial"><font size=-1>Your ISP mail server indicates that the mailing has been interrupted, usually due to overloading from too many messages or transient failure is one in which the message sent is valid, but some temporary event prevents the successful sending of the message. Sending in the future may be successful.</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">451</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">451 Requested mail
+action aborted: error in processing</font></font></b>
+<br>
+<font face="arial"><font size="-1">Your
+ISP mail server indicates
+that the mailing has been interrupted, usually due to overloading from
+too many messages or transient failure is one in which the message sent
+is valid, but some temporary event prevents the successful sending of
+the message. Sending in the future may be successful.</font></font></td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>452</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>452 Requested mail action not taken: insufficient system storage</font></font></b>
-<br><font face="arial"><font size=-1>Your ISP mail server indicates, probable overloading from too many messages and sending in the future may be successful.</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">452</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">452 Requested mail
+action not taken: insufficient system storage</font></font></b>
+<br>
+<font face="arial"><font size="-1">Your
+ISP mail server indicates, probable overloading from too many messages
+and sending in the future may be successful.</font></font></td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>453</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>453 Too many messages</font></font></b>
-<br><font face="arial"><font size=-1>Some mail servers have the option to reduce the number of concurrent connection and also the number of messages sent per connection. If you have a lot of messages queued up it could go over the max number of messages per connection. To see if this is the case you can try submitting only a few messages to that domain at a time and then keep increasing the number until you find the maximum number accepted by the server.</font></font></td>
-</tr>
-
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">453</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">453 Too many
+messages</font></font></b>
+<br>
+<font face="arial"><font size="-1">Some
+mail servers have the
+option to reduce the number of concurrent connection and also the
+number of messages sent per connection. If you have a lot of messages
+queued up it could go over the max number of messages per connection.
+To see if this is the case you can try submitting only a few messages
+to that domain at a time and then keep increasing the number until you
+find the maximum number accepted by the server.</font></font></td>
+</tr>
+</tbody>
</table>
-
<!-- SMTP 5xx -->
-
-<a NAME="SMTP5"></a><b><font face="arial">5xx class - Permanent Errors</font></b>
-<br><font face="arial"><font size=-1>
-This are permanent error codes. Mail transfer is definitly a failure. No other try will be done.
+<a name="SMTP5"></a><b><font face="arial">5xx class - Permanent Errors</font></b>
+<br>
+<font face="arial"><font size="-1">This
+are permanent error codes. Mail transfer is definitly a failure. No
+other try will be done.
</font></font>
-
-<table WIDTH="100%" >
+<table width="100%">
+<tbody>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>500</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>500 Syntax error, command unrecognized or command line too long</font></font></b>
-</tr>
-<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>501</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>501 Syntax error in parameters or arguments</font></font></b>
-</tr>
-<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>502</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>502 Command not implemented</font></font></b>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">500</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">500 Syntax error,
+command unrecognized or command line too long</font></font></b>
+</td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>503</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>503 Server encountered bad sequence of commands</font></font></b>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">501</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">501 Syntax error
+in parameters or arguments</font></font></b>
+</td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>504</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>504 Command parameter not implemented</font></font></b>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">502</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">502 Command not
+implemented</font></font></b>
+</td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>521</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>521 <domain> does not accept mail or closing transmission channel</font></font></b>
-<br><font face="arial"><font size=-1>You must be pop-authenticated before you can use this SMTP server and you must use your mail address for the Sender/From field.</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">503</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">503 Server
+encountered bad sequence of commands</font></font></b>
+</td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>530</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>530 Access denied</font></font></b>
-<br><font face="arial"><font size=-1>A sendmailism ?</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">504</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">504 Command
+parameter not implemented</font></font></b>
+</td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>550</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>550 Requested mail action not taken (Relaying not allowed, Unknown recipient user, ...)</font></font></b>
-<br><font face="arial"><font size=-1>Sending an email to recipients outside of your domain are not allowed or your mail server does not know that you have access to use it for relaying messages and authentication is required. Or to prevent the sending of SPAM some mail servers will not allow (relay) send mail to any e-mail using another company\92s network and computer resources.</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">521</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">521 <domain>
+does not accept mail or closing transmission channel</domain></font></font></b>
+<br>
+<font face="arial"><font size="-1">You
+must be pop-authenticated before you can use this SMTP server and you
+must use your mail address for the Sender/From field.</font></font></td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>551</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>551 User not local: please try <forward-path> or Invalid Address: Relay request denied</font></font></b>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">530</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">530 Access denied</font></font></b>
+<br>
+<font face="arial"><font size="-1">A
+sendmailism ?</font></font></td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>552</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>552 Requested mail action aborted: exceeded storage allocation</font></font></b>
-<br><font face="arial"><font size=-1>ISP mail server indicates, probable overloading from too many messages.</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">550</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">550 Requested mail
+action not taken (Relaying not allowed, Unknown recipient user, ...)</font></font></b>
+<br>
+<font face="arial"><font size="-1">Sending
+an email to recipients
+outside of your domain are not allowed or your mail server does not
+know that you have access to use it for relaying messages and
+authentication is required. Or to prevent the sending of SPAM some mail
+servers will not allow (relay) send mail to any e-mail using another
+company’s network and computer resources.</font></font></td>
+</tr>
+<tr>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">551</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">551 User not
+local: please try <forward-path> or Invalid Address: Relay
+request denied</forward-path></font></font></b>
+</td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>553</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>553 Requested mail action not taken: mailbox name not allowed</font></font></b>
-<br><font face="arial"><font size=-1>Some mail servers have the option to reduce the number of concurrent connection and also the number of messages sent per connection. If you have a lot of messages queued up (being sent) for a domain, it could go over the maximum number of messages per connection and/or some change to the message and/or destination must be made for successful delivery.</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">552</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">552 Requested mail
+action aborted: exceeded storage allocation</font></font></b>
+<br>
+<font face="arial"><font size="-1">ISP
+mail server indicates, probable overloading from too many messages.</font></font></td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>554</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>554 Requested mail action rejected: access denied</font></font></b>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">553</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">553 Requested mail
+action not taken: mailbox name not allowed</font></font></b>
+<br>
+<font face="arial"><font size="-1">Some
+mail servers have the
+option to reduce the number of concurrent connection and also the
+number of messages sent per connection. If you have a lot of messages
+queued up (being sent) for a domain, it could go over the maximum
+number of messages per connection and/or some change to the message
+and/or destination must be made for successful delivery.</font></font></td>
+</tr>
+<tr>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">554</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">554 Requested mail
+action rejected: access denied</font></font></b>
+</td>
</tr>
<tr>
-<td width=80 valign=top align=center BGCOLOR="#EEEEEE"><b><font face="arial"><font size=-1>557</font></font></b></td>
-<td VALIGN=TOP BGCOLOR="#EEEEFF"><b><font face="arial"><font size=-1>557 Too many duplicate messages</font></font></b>
-<br><font face="arial"><font size=-1>Resource temporarily unavailable Indicates (probable) that there is some kind of anti-spam system on the mail server.</font></font></td>
+<td align="center" bgcolor="#eeeeee" valign="top" width="80"><b><font face="arial"><font size="-1">557</font></font></b></td>
+<td bgcolor="#eeeeff" valign="top"><b><font face="arial"><font size="-1">557 Too many
+duplicate messages</font></font></b>
+<br>
+<font face="arial"><font size="-1">Resource
+temporarily unavailable Indicates (probable) that there is some kind of
+anti-spam system on the mail server.</font></font></td>
</tr>
-<!--
-# Postfix code for access_map_reject_code (postfix default=554) with access_map_reject_code rule
-'570'=>'Access denied: access_map violation (on SMTP client or HELO hostname, sender or recipient email address)',
-# Postfix code for maps_rbl_reject_code (postfix default=554) with maps_rbl_code rule
-'571'=>'Access denied: SMTP client listed in RBL',
-# Postfix code for relay_domains_reject_code (postfix default=554) with relay_domains_reject rule
-'572'=>'Access denied: Relay not authorized or not local host not a gateway',
-# Postfix code for unknown_client_reject_code (postfix default=450) with reject_unknown_client rule
-'573'=>'Access denied: Unknown SMTP client hostname (without DNS A or MX record)',
-# Postfix code for invalid_hostname_reject_code (postfix default=501) with reject_invalid_hostname rule
-'574'=>'Access denied: Bad syntax for client HELO hostname (Not RFC compliant)',
-# Postfix code for reject_code (postfix default=554) with smtpd_client_restrictions
-'575'=>'Access denied: SMTP client hostname rejected',
-# Postfix code for unknown_address_reject_code (postfix default=450) with reject_unknown_sender_domain or reject_unknown_recipient_domain rule
-'576'=>'Access denied: Unknown domain for sender or recipient email address (without DNS A or MX record)',
-# Postfix code for unknown_hostname_reject_code (postfix default=501) with reject_unknown_hostname rule
-'577'=>'Access denied: Unknown client HELO hostname (without DNS A or MX record)',
-# Postfix code for non_fqdn_reject_code (Postfix default=504) with reject_non_fqdn_hostname, reject_non_fqdn_sender or reject_non_fqdn_recipient rule
-'578'=>'Access denied: Invalid domain for client HELO hostname, sender or recipient email address (not FQDN)',
--->
+<!-- # Postfix code for access_map_reject_code (postfix default=554) with access_map_reject_code rule '570'=>'Access denied: access_map violation (on SMTP client or HELO hostname, sender or recipient email address)', # Postfix code for maps_rbl_reject_code (postfix default=554) with maps_rbl_code rule '571'=>'Access denied: SMTP client listed in RBL', # Postfix code for relay_domains_reject_code (postfix default=554) with relay_domains_reject rule '572'=>'Access denied: Relay not authorized or not local host not a gateway', # Postfix code for unknown_client_reject_code (postfix default=450) with reject_unknown_client rule '573'=>'Access denied: Unknown SMTP client hostname (without DNS A or MX record)', # Postfix code for invalid_hostname_reject_code (postfix default=501) with reject_invalid_hostname rule '574'=>'Access denied: Bad syntax for client HELO hostname (Not RFC compliant)', # Postfix code for reject_code (postfix default=554) with smtpd_client_restrictions '575'=>'Access denied: SMTP client hostname rejected', # Postfix code for unknown_address_reject_code (postfix default=450) with reject_unknown_sender_domain or reject_unknown_recipient_domain rule '576'=>'Access denied: Unknown domain for sender or recipient email address (without DNS A or MX record)', # Postfix code for unknown_hostname_reject_code (postfix default=501) with reject_unknown_hostname rule '577'=>'Access denied: Unknown client HELO hostname (without DNS A or MX record)', # Postfix code for non_fqdn_reject_code (Postfix default=504) with reject_non_fqdn_hostname, reject_non_fqdn_sender or reject_non_fqdn_recipient rule '578'=>'Access denied: Invalid domain for client HELO hostname, sender or recipient email address (not FQDN)', -->
+</tbody>
</table>
-
-<td ALIGN=LEFT VALIGN=TOP></td>
+</td>
+<td align="left" valign="top"></td>
</tr>
+</tbody>
</table>
-
-
-
-<br><hr>
-
-<script language=javascript>
- var date='$Date$';
- document.writeln("Last revision: "+date);
+<br>
+<hr>
+<script language="javascript">
+var date='$Date$';
+document.writeln("Last revision: "+date);
</script>
-
-</body>
-</html>
+</body></html>
\ No newline at end of file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
+<html><head>
<meta name="description" content="AWStats Documentation - What is AWStats, features">
<meta name="keywords" content="awstats, awstat, features, function">
<meta name="robots" content="index,follow">
<meta name="title" content="AWStats Documentation - What is AWStats">
-<title>AWStats Documentation - What is AWStats</title>
-<link rel="stylesheet" href="styles.css" type="text/css">
-<!-- $Revision$ - $Author$ - $Date$ -->
-</head>
+
+<title>AWStats Documentation - What is AWStats</title><link rel="stylesheet" href="styles.css" type="text/css"><!-- $Revision$ - $Author$ - $Date$ --></head>
<body topmargin="10" leftmargin="5">
-<table style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="100%">
+<table style="font-family: arial,helvetica,verdana; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="100%">
<!-- Large -->
<tbody>
<td align="center" bgcolor="#9999cc"><a href="/"><img src="images/awstats_logo4.png" border="0"></a></td>
<td align="center" bgcolor="#9999cc">
<br>
-<font style="font: 16pt arial,helvetica,sans-serif" color=#EEEEFF><b>AWStats logfile analyzer 6.95 Documentation</b></font><br>
+<font style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 16pt; line-height: normal; font-size-adjust: none; font-stretch: normal;" color="#eeeeff"><b>AWStats logfile analyzer 6.95 Documentation</b></font><br>
<br>
</td>
<td align="center" bgcolor="#9999cc"> </td>
</table>
<br>
<br>
-<h1
- style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 26px; line-height: normal; font-size-adjust: none; font-stretch: normal;">What
+<h1 style="font-family: arial,helvetica,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 26px; line-height: normal; font-size-adjust: none; font-stretch: normal;">What
is AWStats / Features Overview<br>
</h1>
<br>
<br>
AWStats is short for <span style="text-decoration: underline;">A</span>dvanced
-<span style="text-decoration: underline;">W</span>eb <span
- style="text-decoration: underline;">Stat</span>istic<span
- style="text-decoration: underline;">s</span>. <b>AWStats is </b><b>powerful
+<span style="text-decoration: underline;">W</span>eb <span style="text-decoration: underline;">Stat</span>istic<span style="text-decoration: underline;">s</span>. <b>AWStats is </b><b>powerful
log analyzer which creates advanced web, ftp, mail and streaming
server statistics reports</b> based on the rich data contained in
server logs. Data is graphically presented in <b>easy to read
ftp and mail server logs.<br>
<br>
See how the most famous open source statistics tools (AWStats, Analog,
-Webalizer) stack up feature by feature in this <a
- href="awstats_compare.html#COMPARISON">comparison
+Webalizer) stack up feature by feature in this <a href="awstats_compare.html#COMPARISON">comparison
table</a>.<br>
<br>
-AWStats is free software distributed under the <a
- href="http://www.gnu.org/copyleft/gpl.html" target="_gnugpl">GNU
+AWStats is free software distributed under the <a href="http://www.gnu.org/copyleft/gpl.html" target="_gnugpl">GNU
General Public License</a>. The <a href="awstats_license.html">license
chart</a> illustrates what you
can and cannot do.<br>
(pages, hits, KB for each OS, <font color="#221188">45
OS detected</font>).<br>
* <u>Robots</u> visits, including
-search engine crawlers (<font color="#221188">381 robots detected</font>).<br>
+search engine crawlers (<font color="#221188">381 robots detected</font>).<br>* Track <span style="text-decoration: underline;">Downloads</span> such as PDFs, compressed files and others<br>
* <u>Search engines</u>, <u>Keywords</u> and <u>Phrases</u> used to
find your site (<font color="#221188">The 122 most famous search
engines are detected like Yahoo, Google, Altavista, etc...</font>)<br>
web-hosting providers).<br>
<!-- * Yearly, monthly and daily statistics,<br> --> * Cross Site
Scripting Attacks protection.<br>
-* Reports available in many international languages. See <a
- href="awstats_faq.html#LANG">AWStats F.A.Q.</a> for full list.
+* Reports available in many international languages. See <a href="awstats_faq.html#LANG">AWStats F.A.Q.</a> for full list.
Users can provide files for additional languages not yet available.<br>
* No need for esoteric perl libraries. AWStats works with all basic
perl interpreters.<br>
* You must be able to run perl scripts (.pl files) from command line
and/or as a CGI. If not, you can solve this by downloading latest
Perl version at <a href="http://www.activestate.com/ActivePerl/">ActivePerl</a>
-(<font color="#221188">Win32</font>) or <a
- href="http://www.perl.com/pub/language/info/software.html">Perl.com</a>
+(<font color="#221188">Win32</font>) or <a href="http://www.perl.com/pub/language/info/software.html">Perl.com</a>
(<font color="#221188">Unix/Linux/Other</font>).<br>
See <a href="awstats_faq.html#SERVERSOS">AWStats F.A.Q.</a> for
examples of supported OS and Web servers.<br>
<a href="http://www.chatsderace.com"> </a>
-</body>
-</html>
+</body></html>
\ No newline at end of file
# Show file size chart (Not yet available)
# Context: Web, Streaming, Mail, Ftp
# Default: 1, Possible column codes: None
-ShowFileSizesStats=0
+ShowFileSizesStats=0
+
+# Show downloads chart.
+# Context: Web, Streaming, Ftp
+# Default: HB, Possible column codes: HB
+ShowDownloadsStats=HB
# Show operating systems chart
# Context: Web, Streaming, Ftp
# Stats by robots
MaxNbOfRobotShown = 10
MinHitRobot = 1
+# Stats for Downloads
+MaxNbOfDownloadsShown = 10
+MinHitDownloads = 1
# Stats by pages
MaxNbOfPageShown = 10
MinHitFile = 1
$WarningMessages $ShowLinksOnUrl $UseFramesWhenCGI
$ShowMenu $ShowSummary $ShowMonthStats $ShowDaysOfMonthStats $ShowDaysOfWeekStats
$ShowHoursStats $ShowDomainsStats $ShowHostsStats
- $ShowRobotsStats $ShowSessionsStats $ShowPagesStats $ShowFileTypesStats
+ $ShowRobotsStats $ShowSessionsStats $ShowPagesStats $ShowFileTypesStats $ShowDownloadsStats
$ShowOSStats $ShowBrowsersStats $ShowOriginStats
$ShowKeyphrasesStats $ShowKeywordsStats $ShowMiscStats $ShowHTTPErrorsStats
$AddDataArrayMonthStats $AddDataArrayShowDaysOfMonthStats $AddDataArrayShowDaysOfWeekStats $AddDataArrayShowHoursStats
$ShowSessionsStats,
$ShowPagesStats,
$ShowFileTypesStats,
+ $ShowDownloadsStats,
$ShowOSStats,
$ShowBrowsersStats,
$ShowOriginStats,
use vars qw/
%BrowsersHashIDLib %BrowsersHashIcon %BrowsersHereAreGrabbers
%DomainsHashIDLib
- %MimeHashLib %MimeHashIcon %MimeHashFamily
+ %MimeHashLib %MimeHashFamily
%OSHashID %OSHashLib
%RobotsHashIDLib %RobotsAffiliateLib
%SearchEnginesHashID %SearchEnginesHashLib %SearchEnginesWithKeysNotInQuery %SearchEnginesKnownUrl %NotSearchEnginesKeys
%_misc_p %_misc_h %_misc_k
%_cluster_p %_cluster_h %_cluster_k
%_se_referrals_p %_se_referrals_h %_sider404_h %_referer404_h %_url_p %_url_k %_url_e %_url_x
+ %_downloads
%_unknownreferer_l %_unknownrefererbrowser_l
%_emails_h %_emails_k %_emails_l %_emailr_h %_emailr_k %_emailr_l
/;
'Safari versions',
'Chrome versions',
'Konqueror versions',
- ' '
+ ',',
+ 'Downloads',
);
#------------------------------------------------------------------------------
return $SessionsRange[6];
}
+#------------------------------------------------------------------------------
+# Function: Return string with just the extension of a file in the URL
+# Parameters: $regext, $url without query string
+# Input: None
+# Output: None
+# Return: A lowercase string with the name of the extension, e.g. "html"
+#------------------------------------------------------------------------------
+sub Get_Extension{
+ my $extension;
+ my $regext = shift;
+ my $urlwithnoquery = shift;
+ if ( $urlwithnoquery =~ /$regext/o
+ || ( $urlwithnoquery =~ /[\\\/]$/ && $DefaultFile[0] =~ /$regext/o )
+ )
+ {
+ $extension =
+ ( $LevelForFileTypesDetection >= 2 || $MimeHashLib{$1} )
+ ? lc($1)
+ : 'Unknown';
+ }
+ else {
+ $extension = 'Unknown';
+ }
+ return $extension;
+}
+
+#------------------------------------------------------------------------------
+# Function: Returns just the file of the url
+# Parameters: -
+# Input: $url
+# Output: String with the file name
+# Return: -
+#------------------------------------------------------------------------------
+sub Get_Filename{
+ my $temp = shift;
+ my $idx = -1;
+ # check for slash
+ $idx = rindex($temp, "/");
+ if ($idx > -1){ $temp = substr($temp, $idx+1);}
+ else{
+ $idx = rindex($temp, "\\");
+ if ($idx > -1){ $temp = substr($temp, $idx+1);}
+ }
+ return $temp;
+}
+
#------------------------------------------------------------------------------
# Function: Compare two browsers version
# Parameters: $a
if ( $ShowSessionsStats !~ /[01]/ ) { $ShowSessionsStats = 1; }
if ( $ShowPagesStats !~ /[01PBEX]/i ) { $ShowPagesStats = 'PBEX'; }
if ( $ShowFileTypesStats !~ /[01HBC]/ ) { $ShowFileTypesStats = 'HB'; }
+ if ( $ShowDownloadsStats !~ /[01HB]/ ) { $ShowDownloadsStats = 'HB';}
if ( $ShowFileSizesStats !~ /[01]/ ) { $ShowFileSizesStats = 1; }
if ( $ShowOSStats !~ /[01]/ ) { $ShowOSStats = 1; }
if ( $ShowBrowsersStats !~ /[01]/ ) { $ShowBrowsersStats = 1; }
'OsShown', 'BrowsersShown',
'ScreenSizesShown', 'RefererShown',
'KeyphrasesShown', 'KeywordsShown',
- 'EMailsShown'
+ 'EMailsShown', 'DownloadsShown'
);
my @maxnboflistdefaultval =
( 10, 10, 10, 10, 5, 10, 10, 10, 5, 10, 10, 10, 20 );
'Domain', 'Host', 'Login', 'Robot',
'Worm', 'File', 'Os', 'Browser',
'ScreenSize', 'Refer', 'Keyphrase', 'Keyword',
- 'EMail'
+ 'EMail', 'Downloads'
);
my @minhitlistdefaultval = ( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 );
foreach my $i ( 0 .. ( @minhitlist - 1 ) ) {
if ( $ShowWormsStats eq '1' ) { $ShowWormsStats = 'HBL'; }
if ( $ShowPagesStats eq '1' ) { $ShowPagesStats = 'PBEX'; }
if ( $ShowFileTypesStats eq '1' ) { $ShowFileTypesStats = 'HB'; }
+ if ( $ShowDownloadsStats eq '1' ) { $ShowDownloadsStats = 'HB';}
if ( $ShowOriginStats eq '1' ) { $ShowOriginStats = 'PH'; }
if ( $ShowClusterStats eq '1' ) { $ShowClusterStats = 'PHB'; }
if ( $ShowMiscStats eq '1' ) { $ShowMiscStats = 'anjdfrqwp'; }
'session' => 13,
'sider' => 14,
'filetypes' => 15,
- 'os' => 16,
- 'browser' => 17,
- 'screensize' => 18,
- 'unknownreferer' => 19,
- 'unknownrefererbrowser' => 20,
- 'origin' => 21,
- 'sereferrals' => 22,
- 'pagerefs' => 23,
- 'searchwords' => 24,
- 'keywords' => 25,
- 'errors' => 26
+ 'downloads' => 16,
+ 'os' => 17,
+ 'browser' => 18,
+ 'screensize' => 19,
+ 'unknownreferer' => 20,
+ 'unknownrefererbrowser' => 21,
+ 'origin' => 22,
+ 'sereferrals' => 23,
+ 'pagerefs' => 24,
+ 'searchwords' => 25,
+ 'keywords' => 26,
+ 'errors' => 27,
);
my $order = ( scalar keys %allsections ) + 1;
{
$SectionsToLoad{'filetypes'} = $order++;
}
+
+ if ( $UpdateStats
+ || $MigrateStats
+ || ($HTMLOutput{'main'} && $ShowDownloadsStats )
+ || $HTMLOutput{'downloads'} )
+ {
+ $SectionsToLoad{'downloads'} = $order++;
+ }
if ( $UpdateStats
|| $MigrateStats
|| ( $HTMLOutput{'main'} && $ShowOSStats )
next;
}
+ # BEGIN_DOWNLOADS
+ if ( $field[0] eq 'BEGIN_DOWNLOADS' ) {
+ if ($Debug) {
+ debug(" Begin of DOWNLOADS section");
+ }
+ $field[0] = '';
+ my $count = 0;
+ my $counttoload = int($field[1]);
+ my $countloaded = 0;
+ do {
+ if ( $field[0] ) {
+ $count++;
+ if ( $SectionsToLoad{'downloads'}) {
+ $countloaded++;
+ $_downloads{$field[0]}->{'AWSTATS_HITS'} += int( $field[1] );
+ $_downloads{$field[0]}->{'AWSTATS_206'} += int( $field[2] );
+ $_downloads{$field[0]}->{'AWSTATS_SIZE'} += int( $field[3] );
+ }
+ }
+ $_ = <HISTORY>;
+ chomp $_;
+ s/\r//;
+ @field =
+ split( /\s+/,
+ ( $readxml ? XMLDecodeFromHisto($_) : $_ ) );
+ $countlines++;
+ } until ( $field[0] eq 'END_DOWNLOADS'
+ || $field[0] eq "${xmleb}END_DOWNLOADS"
+ || !$_ );
+ if ( $field[0] ne 'END_DOWNLOADS'
+ && $field[0] ne "${xmleb}END_DOWNLOADS" )
+ {
+ error(
+"History file \"$filetoread\" is corrupted (End of section DOWNLOADS not found).\nRestore a recent backup of this file (data for this month will be restored to backup date), remove it (data for month will be lost), or remove the corrupted section in file (data for at least this section will be lost).",
+ "", "", 1
+ );
+ }
+ if ($Debug) {
+ debug(
+" End of DOWNLOADS section ($count entries, $countloaded loaded)"
+ );
+ }
+ delete $SectionsToLoad{'downloads'};
+ if ( $SectionsToSave{'downloads'} ) {
+ Save_History( 'downloads',
+ $year, $month, $date );
+ delete $SectionsToSave{'downloads'};
+ if ($withpurge) { %_downloads = (); }
+ }
+ if ( !scalar %SectionsToLoad ) {
+ debug(" Stop reading history file. Got all we need.");
+ last;
+ }
+ next;
+ }
+
# BEGIN_SEREFERRALS
if ( $field[0] eq 'BEGIN_SEREFERRALS' ) {
if ($Debug) { debug(" Begin of SEREFERRALS section"); }
print HISTORYTMP "${xmlrb}POS_FILETYPES${xmlrs}";
$PosInFile{"filetypes"} = tell HISTORYTMP;
print HISTORYTMP "$spacebar${xmlre}\n";
+ print HISTORYTMP "${xmlrb}POS_DOWNLOADS${xmlrs}";
+ $PosInFile{'downloads'} = tell HISTORYTMP;
+ print HISTORYTMP "$spacebar${xmlre}\n";
print HISTORYTMP "${xmlrb}POS_OS${xmlrs}";
$PosInFile{"os"} = tell HISTORYTMP;
print HISTORYTMP "$spacebar${xmlre}\n";
}
print HISTORYTMP "${xmleb}END_FILETYPES${xmlee}\n";
}
+ if ( $sectiontosave eq 'downloads' ) {
+ print HISTORYTMP "\n";
+ if ($xml) {
+ print HISTORYTMP "<section id='$sectiontosave'><comment>\n";
+ }
+ print HISTORYTMP "# Downloads - Hits - Bandwidth\n";
+ $ValueInFile{$sectiontosave} = tell HISTORYTMP;
+ print HISTORYTMP "${xmlbb}BEGIN_DOWNLOADS${xmlbs}"
+ . ( scalar keys %_downloads )
+ . "${xmlbe}\n";
+ for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){
+ #if (!$_downloads{$u}->{'AWSTATS_HITS'}){next;} # TODO - fix some strange bug where other files are getting in to the hash
+ print HISTORYTMP "${xmlrb}"
+ . XMLEncodeForHisto($u)
+ . "${xmlrs}"
+ . XMLEncodeForHisto($_downloads{$u}->{'AWSTATS_HITS'} || 0)
+ . "${xmlrs}"
+ . XMLEncodeForHisto($_downloads{$u}->{'AWSTATS_206'} || 0)
+ ."${xmlrs}"
+ . XMLEncodeForHisto($_downloads{$u}->{'AWSTATS_SIZE'} || 0)
+ ."${xmlre}\n";
+ }
+ print HISTORYTMP "${xmleb}END_DOWNLOADS${xmlee}\n";
+ }
if ( $sectiontosave eq 'os' ) {
print HISTORYTMP "\n";
if ($xml) {
%_cluster_p = %_cluster_h = %_cluster_k = ();
%_se_referrals_p = %_se_referrals_h = %_sider404_h = %_referer404_h =
%_url_p = %_url_k = %_url_e = %_url_x = ();
+ %_downloads = ();
%_unknownreferer_l = %_unknownrefererbrowser_l = ();
%_emails_h = %_emails_k = %_emails_l = %_emailr_h = %_emailr_k =
%_emailr_l = ();
$LogFormatString =~ s/s-cache-info/%other/g;
$LogFormatString =~ s/cluster-node/%cluster/g;
$LogFormatString =~ s/s-sitename/%other/g;
- $LogFormatString =~ s/s-ip/%other/g;
- $LogFormatString =~ s/s-port/%other/g;
- $LogFormatString =~ s/cs\(Cookie\)/%other/g;
- $LogFormatString =~ s/sc-substatus/%other/g;
- $LogFormatString =~ s/sc-win32-status/%other/g;
+ $LogFormatString =~ s/s-ip/%other/g;
+ $LogFormatString =~ s/s-port/%other/g;
+ $LogFormatString =~ s/cs\(Cookie\)/%other/g;
+ $LogFormatString =~ s/sc-substatus/%other/g;
+ $LogFormatString =~ s/sc-win32-status/%other/g;
+
# Added for MMS
$LogFormatString =~
$ShowSessionsStats, $ShowPagesStats,
$ShowFileTypesStats, $ShowFileSizesStats,
$ShowOSStats, $ShowBrowsersStats,
- $ShowScreenSizeStats
+ $ShowScreenSizeStats, $ShowDownloadsStats
);
if ($linetitle) {
print "<tr><td class=\"awsm\""
"<a href=\"$linkanchor#sessions\"$targetpage>$Message[117]</a>";
print( $frame? "</td></tr>\n" : " " );
}
- if ($ShowFileTypesStats) {
+ if ($ShowFileTypesStats && $LevelForFileTypesDetection > 0) {
print( $frame? "<tr><td class=\"awsm\">" : "" );
print
"<a href=\"$linkanchor#filetypes\"$targetpage>$Message[73]</a>";
print( $frame? "</td></tr>\n" : " " );
}
+ if ($ShowDownloadsStats && $LevelForFileTypesDetection > 0) {
+ print( $frame? "<tr><td class=\"awsm\">" : "" );
+ print
+"<a href=\"$linkanchor#downloads\"$targetpage>$Message[178]</a>";
+ print( $frame? "</td></tr>\n" : " " );
+ print( $frame
+ ? "<tr><td class=\"awsm\"> <img height=\"8\" width=\"9\" src=\"$DirIcons/other/page.png\" alt=\"...\" /> "
+ : ""
+ );
+ print "<a href=\""
+ . (
+ $ENV{'GATEWAY_INTERFACE'} || !$StaticLinks
+ ? XMLEncode(
+ "$AWScript?${NewLinkParams}output=downloads")
+ : "$StaticLinks.downloads.$StaticExt"
+ )
+ . "\"$NewLinkTarget>$Message[80]</a>\n";
+ print( $frame? "</td></tr>\n" : " " );
+ }
if ($ShowPagesStats) {
print( $frame? "<tr><td class=\"awsm\">" : "" );
print
# Return: -
#------------------------------------------------------------------------------
sub HTMLMainFileType{
+ if (!$LevelForFileTypesDetection > 0){return;}
if ($Debug) { debug( "ShowFileTypesStatsCompressionStats", 2 ); }
print "$Center<a name=\"filetypes\"> </a><br />\n";
my $Totalh = 0;
. " /></td><td class=\"aws\" colspan=\"2\"><span style=\"color: #$color_other\">$Message[0]</span></td>";
}
else {
- my $nameicon = $MimeHashIcon{$key} || "notavailable";
- my $nametype =
- $MimeHashLib{ $MimeHashFamily{$key} || "" } || " ";
+ my $nameicon = $MimeHashLib{$key}[0] || "notavailable";
+ my $nametype = $MimeHashFamily{$MimeHashLib{$key}[0]} || " ";
print "<tr><td"
. ( $count ? "" : " width=\"$WIDTHCOLICON\"" )
. "><img src=\"$DirIcons\/mime\/$nameicon.png\""
&html_end(1);
}
+#------------------------------------------------------------------------------
+# Function: Prints the Downloads code frame or static page
+# Parameters: _
+# Input: _
+# Output: HTML
+# Return: -
+#------------------------------------------------------------------------------
+sub HTMLShowDownloads{
+ my $regext = qr/\.(\w{1,6})$/;
+ print "$Center<a name=\"downloads\"> </a><br />\n";
+ &tab_head( $Message[178], 19, 0, "downloads" );
+ print "<tr bgcolor=\"#$color_TableBGRowTitle\"><th colspan=\"2\">$Message[178]</th>";
+ if ( $ShowFileTypesStats =~ /H/i ){print "<th bgcolor=\"#$color_h\" width=\"80\">$Message[57]</th>"
+ ."<th bgcolor=\"#$color_h\" width=\"80\">206 $Message[57]</th>"; }
+ if ( $ShowFileTypesStats =~ /B/i ){
+ print "<th bgcolor=\"#$color_k\" width=\"80\">$Message[75]</th>";
+ print "<th bgcolor=\"#$color_k\" width=\"80\">$Message[106]</th>";
+ }
+ print "</tr>\n";
+ my $count = 0;
+ for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){
+ print "<tr>";
+ my $ext = Get_Extension($regext, $u);
+ if ( !$ext) {
+ print "<td"
+ . ( $count ? "" : " width=\"$WIDTHCOLICON\"" )
+ . "><img src=\"$DirIcons\/mime\/unknown.png\""
+ . AltTitle("")
+ . " /></td>";
+ }
+ else {
+ my $nameicon = $MimeHashLib{$ext}[0] || "notavailable";
+ my $nametype = $MimeHashFamily{$MimeHashLib{$ext}[0]} || " ";
+ print "<td"
+ . ( $count ? "" : " width=\"$WIDTHCOLICON\"" )
+ . "><img src=\"$DirIcons\/mime\/$nameicon.png\""
+ . AltTitle("")
+ . " /></td>";
+ }
+ print "<td class=\"aws\">";
+ &HTMLShowURLInfo($u);
+ print "</td>";
+ if ( $ShowFileTypesStats =~ /H/i ){
+ print "<td>".Format_Number($_downloads{$u}->{'AWSTATS_HITS'})."</td>";
+ print "<td>".Format_Number($_downloads{$u}->{'AWSTATS_206'})."</td>";
+ }
+ if ( $ShowFileTypesStats =~ /B/i ){
+ print "<td>".Format_Bytes($_downloads{$u}->{'AWSTATS_SIZE'})."</td>";
+ print "<td>".Format_Bytes(($_downloads{$u}->{'AWSTATS_SIZE'}/
+ ($_downloads{$u}->{'AWSTATS_HITS'} + $_downloads{$u}->{'AWSTATS_206'})))."</td>";
+ }
+ print "</tr>\n";
+ $count++;
+ if ($count >= $MaxRowsInHTMLOutput){last;}
+ }
+ &tab_end();
+ &html_end(1);
+}
+
#------------------------------------------------------------------------------
# Function: Prints the Summary section at the top of the main page
# Parameters: _
&tab_end();
}
+#------------------------------------------------------------------------------
+# Function: Prints the Downloads chart and table
+# Parameters: -
+# Input: -
+# Output: HTML
+# Return: -
+#------------------------------------------------------------------------------
+sub HTMLMainDownloads{
+ my $NewLinkParams = shift;
+ my $NewLinkTarget = shift;
+ if (!$LevelForFileTypesDetection > 0){return;}
+ if ($Debug) { debug( "ShowDownloadStats", 2 ); }
+ my $regext = qr/\.(\w{1,6})$/;
+ print "$Center<a name=\"downloads\"> </a><br />\n";
+ my $Totalh = 0;
+ if ($MaxNbOf{'DownloadsShown'} < 1){$MaxNbOf{'DownloadsShown'} = 10;} # default if undefined
+ my $title =
+ "$Message[178] ($Message[77] $MaxNbOf{'DownloadsShown'}) - <a href=\""
+ . (
+ $ENV{'GATEWAY_INTERFACE'}
+ || !$StaticLinks
+ ? XMLEncode("$AWScript?${NewLinkParams}output=downloads")
+ : "$StaticLinks.downloads.$StaticExt"
+ )
+ . "\"$NewLinkTarget>$Message[80]</a>";
+ &tab_head( "$title", 0, 0, 'downloads' );
+ my $cnt=0;
+ for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){
+ $Totalh += $_downloads{$u}->{'AWSTATS_HITS'};
+ $cnt++;
+ if ($cnt > 4){last;}
+ }
+ # Graph the top five in a pie chart
+ if (scalar keys %_downloads > 1){
+ foreach my $pluginname ( keys %{ $PluginsLoaded{'ShowGraph'} } )
+ {
+ my @blocklabel = ();
+ my @valdata = ();
+ my @valcolor = ($color_p);
+ my $cnt = 0;
+ for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){
+ push @valdata, ($_downloads{$u}->{'AWSTATS_HITS'} / $Totalh * 1000 ) / 10;
+ push @blocklabel, Get_Filename($u);
+ $cnt++;
+ if ($cnt > 4) { last; }
+ }
+ my $columns = 2;
+ if ($ShowDownloadsStats =~ /H/i){$columns += length($ShowDownloadsStats)+1;}
+ else{$columns += length($ShowDownloadsStats);}
+ print "<tr><td colspan=\"$columns\">";
+ my $function = "ShowGraph_$pluginname";
+ &$function(
+ "$Message[80]", "downloads",
+ 0, \@blocklabel,
+ 0, \@valcolor,
+ 0, 0,
+ 0, \@valdata
+ );
+ print "</td></tr>";
+ }
+ }
+
+ my $total_dls = scalar keys %_downloads;
+ print "<tr bgcolor=\"#$color_TableBGRowTitle\"><th colspan=\"2\">$Message[178]: $total_dls</th>";
+ if ( $ShowDownloadsStats =~ /H/i ){print "<th bgcolor=\"#$color_h\" width=\"80\">$Message[57]</th>"
+ ."<th bgcolor=\"#$color_h\" width=\"80\">206 $Message[57]</th>"; }
+ if ( $ShowDownloadsStats =~ /B/i ){
+ print "<th bgcolor=\"#$color_k\" width=\"80\">$Message[75]</th>";
+ print "<th bgcolor=\"#$color_k\" width=\"80\">$Message[106]</th>";
+ }
+ print "</tr>\n";
+ my $count = 0;
+ for my $u (sort {$_downloads{$b}->{'AWSTATS_HITS'} <=> $_downloads{$a}->{'AWSTATS_HITS'}}(keys %_downloads) ){
+ print "<tr>";
+ my $ext = Get_Extension($regext, $u);
+ if ( !$ext) {
+ print "<td"
+ . ( $count ? "" : " width=\"$WIDTHCOLICON\"" )
+ . "><img src=\"$DirIcons\/mime\/unknown.png\""
+ . AltTitle("")
+ . " /></td>";
+ }
+ else {
+ my $nameicon = $MimeHashLib{$ext}[0] || "notavailable";
+ my $nametype = $MimeHashFamily{$MimeHashLib{$ext}[0]} || " ";
+ print "<td"
+ . ( $count ? "" : " width=\"$WIDTHCOLICON\"" )
+ . "><img src=\"$DirIcons\/mime\/$nameicon.png\""
+ . AltTitle("")
+ . " /></td>";
+ }
+ print "<td class=\"aws\">";
+ &HTMLShowURLInfo($u);
+ print "</td>";
+ if ( $ShowDownloadsStats =~ /H/i ){
+ print "<td>".Format_Number($_downloads{$u}->{'AWSTATS_HITS'})."</td>";
+ print "<td>".Format_Number($_downloads{$u}->{'AWSTATS_206'})."</td>";
+ }
+ if ( $ShowDownloadsStats =~ /B/i ){
+ print "<td>".Format_Bytes($_downloads{$u}->{'AWSTATS_SIZE'})."</td>";
+ print "<td>".Format_Bytes(($_downloads{$u}->{'AWSTATS_SIZE'}/
+ ($_downloads{$u}->{'AWSTATS_HITS'} + $_downloads{$u}->{'AWSTATS_206'})))."</td>";
+ }
+ print "</tr>\n";
+ $count++;
+ if ($count >= $MaxNbOf{'DownloadsShown'}){last;}
+ }
+ &tab_end();
+}
+
#------------------------------------------------------------------------------
# Function: Prints the hours chart and table
# Parameters: -
2
);
}
+ my $regext = qr/\.(\w{1,6})$/;
print
"$Center<a name=\"urls\"> </a><a name=\"entry\"> </a><a name=\"exit\"> </a><br />\n";
my $title =
$filebrowser = 'browsers_phone';
}
if ($UpdateStats) { # If update
- if ( $LevelForFileTypesDetection < 2 ) {
+ if ($LevelForFileTypesDetection) {
$datatoload{$filemime} = 1;
} # Only if need to filter on known extensions
if ($LevelForRobotsDetection) {
my $lastlinenb = 0;
my $lastlineoffset = 0;
my $lastlineoffsetnext = 0;
-
if ($Debug) { debug( "UpdateStats is $UpdateStats", 2 ); }
if ( $UpdateStats && $FrameName ne 'index' && $FrameName ne 'mainleft' )
{ # Update only on index page or when not framed to avoid update twice
my $PageBool = 1;
# Extension
- my $extension;
- if ( $urlwithnoquery =~ /$regext/o
- || ( $urlwithnoquery =~ /[\\\/]$/ && $DefaultFile[0] =~ /$regext/o )
- )
- {
- $extension =
- ( $LevelForFileTypesDetection >= 2 || $MimeHashFamily{$1} )
- ? lc($1)
- : 'Unknown';
- if ( $NotPageList{$extension} ) { $PageBool = 0; }
- }
- else {
- $extension = 'Unknown';
- }
-
- if ( @NotPageFiles && &NotPageFile( $field[$pos_url] ) ) {
- $PageBool = 0;
- }
+ my $extension = Get_Extension($regext, $urlwithnoquery);
+ if ( $NotPageList{$extension} ||
+ ($MimeHashLib{$extension}[1]) && $MimeHashLib{$extension}[1] ne 'p') { $PageBool = 0;}
+ if ( @NotPageFiles && &NotPageFile( $field[$pos_url] ) ) { $PageBool = 0; }
# Analyze: misc tracker (must be before return code)
#---------------------------------------------------
if ( $LogType eq 'W' || $LogType eq 'S' )
{ # HTTP record or Stream record
if ( $ValidHTTPCodes{ $field[$pos_code] } ) { # Code is valid
- if ( $field[$pos_code] == 304 && $pos_size>0) { $field[$pos_size] = 0; }
- }
- else { # Code is not valid
+ if ( int($field[$pos_code]) == 304 && $pos_size>0) { $field[$pos_size] = 0; }
+ # track downloads
+ if (int($field[$pos_code]) == 200 && $MimeHashLib{$extension}[1] eq 'd'){
+ $_downloads{$urlwithnoquery}->{'AWSTATS_HITS'}++;
+ $_downloads{$urlwithnoquery}->{'AWSTATS_SIZE'} += ($pos_size>0 ? int($field[$pos_size]) : 0);
+ # TODO - debug this - tracking by host this way corrupts and allows other mimes in, may be array related
+ #$_downloads{$urlwithnoquery}->{$field[$pos_host]}[0] = $timerecord;
+ #$_downloads{$urlwithnoquery}->{$field[$pos_host]}[1] = $timerecord;
+ #if ($pos_size>0){$_downloads{$urlwithnoquery}->{$field[$pos_host]}[2] = int($field[$pos_size]);}
+ if ($Debug) { debug( " New download detected: '$urlwithnoquery'", 2 ); }
+ }
+ # handle 206 download continuation message IF we had a successful 200 before, otherwise it goes in errors
+ }elsif(int($field[$pos_code]) == 206
+ #&& $_downloads{$urlwithnoquery}->{$field[$pos_host]}[0] > 0
+ && ($MimeHashLib{$extension}[1] eq 'd')){
+ $_downloads{$urlwithnoquery}->{'AWSTATS_SIZE'} += ($pos_size>0 ? int($field[$pos_size]) : 0);
+ $_downloads{$urlwithnoquery}->{'AWSTATS_206'}++;
+ #$_downloads{$urlwithnoquery}->{$field[$pos_host]}[1] = $timerecord;
+ if ($pos_size>0){
+ #$_downloads{$urlwithnoquery}->{$field[$pos_host]}[2] = int($field[$pos_size]);
+ $DayBytes{$yearmonthdayrecord} += int($field[$pos_size]);
+ $_time_k[$hourrecord] += int($field[$pos_size]);
+ }
+ $countedtraffic = 6; # 206 continued download, so we track bandwidth but not pages or hits
+ if ($Debug) { debug( " Download continuation detected: '$urlwithnoquery'", 2 ); }
+ }else { # Code is not valid
if ( $field[$pos_code] !~ /^\d\d\d$/ ) {
$field[$pos_code] = 999;
}
# Analyze: File type - Compression
#---------------------------------
- if ( !$countedtraffic ) {
+ if ( !$countedtraffic || $countedtraffic == 6) {
if ($LevelForFileTypesDetection) {
- $_filetypes_h{$extension}++;
+ if ($countedtraffic != 6){$_filetypes_h{$extension}++;}
if ( $field[$pos_size] ne '-' && $pos_size>0) {
$_filetypes_k{$extension} += int( $field[$pos_size] );
}
# TODO Use an id for hash key of url
# $_url_t{$_url_id}
}
- $_time_h[$hourrecord]++;
- $DayHits{$yearmonthdayrecord}++; #Count accesses for hour (hit)
- if ( $field[$pos_size] ne '-' && $pos_size>0) {
- $_time_k[$hourrecord] += int( $field[$pos_size] );
- $DayBytes{$yearmonthdayrecord} +=
- int( $field[$pos_size] ); #Count accesses for hour (kb)
- }
+ if ($countedtraffic != 6){$_time_h[$hourrecord]++;}
+ if ($countedtraffic != 6){$DayHits{$yearmonthdayrecord}++;} #Count accesses for hour (hit)
+ if ( $field[$pos_size] ne '-' && $pos_size>0) {
+ $_time_k[$hourrecord] += int( $field[$pos_size] );
+ $DayBytes{$yearmonthdayrecord} += int( $field[$pos_size] ); #Count accesses for hour (kb)
+ }
# Analyze: Login
#---------------
if ($PageBool) {
$_login_p{ $field[$pos_logname] }++;
} #Count accesses for page (page)
- $_login_h{ $field[$pos_logname] }
- ++; #Count accesses for page (hit)
+ if ($countedtraffic != 6){$_login_h{$field[$pos_logname]}++;} #Count accesses for page (hit)
if ($pos_size>0){$_login_k{ $field[$pos_logname] } +=
int( $field[$pos_size] );} #Count accesses for page (kb)
$_login_l{ $field[$pos_logname] } = $timerecord;
my $HostResolved = ''
; # HostResolved will be defined in next paragraf if countedtraffic is true
- if ( !$countedtraffic ) {
+ if ( !$countedtraffic || $countedtraffic == 6) {
my $ip = 0;
if ($DNSLookup) { # DNS lookup is 1 or 2
if ( $Host =~ /$regipv4l/o ) { # IPv4 lighttpd
# Store country
if ($PageBool) { $_domener_p{$Domain}++; }
- $_domener_h{$Domain}++;
+ if ($countedtraffic != 6){$_domener_h{$Domain}++;}
if ( $field[$pos_size] ne '-' && $pos_size>0) {
$_domener_k{$Domain} += int( $field[$pos_size] );
}
if ( $HTMLOutput{'keywords'} ) {
&HTMLShowKeywords();
}
+ if ( $HTMLOutput{'downloads'} ) {
+ &HTMLShowDownloads();
+ }
foreach my $code ( keys %TrapInfosForHTTPErrorCodes ) {
if ( $HTMLOutput{"errors$code"} ) {
&HTMLShowErrorCodes($code);
if ($ShowFileSizesStats) {
# TODO
}
+
+ # BY DOWNLOADS
+ #-------------------------
+ if ($ShowDownloadsStats) {
+ &HTMLMainDownloads($NewLinkParams, $NewLinkTarget);
+ }
# BY PAGE
#-------------------------
message174=Safari versions
message175=Chrome versions
message176=Konqueror versions
-message177=,
\ No newline at end of file
+message177=,
+message178=Downloads
\ No newline at end of file
# AWSTATS MIME DATABASE
#-------------------------------------------------------
# If you want to add MIME types,
-# you must add an entry in MimeFamily and may be MimeHashLib
+# you must add an entry in MimeHashLib and assign it to a family
#-------------------------------------------------------
# $Revision$ - $Author$ - $Date$
#package AWSMIME;
-
-# MimeHashLib
-# List of mime's label ("mime id in lower case", "mime text")
+# MimeHashFamily
+# This is a hash table of mime groupings and descriptions.
+# Report icons will appear if names the same as a family, e.g.
+# if you have a "text.png" icon in the icon/mime directory, the
+# report will load the icon
+# Format: 'family', 'descriptive text',
#---------------------------------------------------------------
-%MimeHashLib = (
+%MimeHashFamily = (
'text', 'Text file',
'page', 'HTML or XML static page',
'script', 'Dynamic Html page or Script file',
'archive', 'Archive',
'audio', 'Audio file',
'video', 'Video file',
-'javascript','JavaScript file',
+'jscript', 'JavaScript file',
'vbs', 'Visual Basic script',
'conf', 'Config file',
'css', 'Cascading Style Sheet file',
'encrypt', 'Encrypted document',
);
-# MimeHashIcon
-# Each Mime ID is associated to a string that is the name of icon
-# file for this Mime type.
-#---------------------------------------------------------------------------
-%MimeHashIcon = (
-# Text file
-'txt','text',
-'log','text',
-# HTML Static page
-'chm','html',
-'html','html',
-'htm','html',
-'hdml','html',
-'mht','html',
-'wml','html',
-'wmlp','html',
-'xhtml','html',
-'xml','html',
-'vak','glasses',
-'sgm','html',
-'sgml','html',
-# HTML Dynamic pages or script
-'asp','script',
-'aspx','dotnet',
-'ashx','dotnet',
-'asmx','dotnet',
-'axd', 'dotnet',
-'cfm','script',
-'jsp','script',
-'cgi','script',
-'ksh','script',
-'php','php',
-'php3','php',
-'php4','php',
-'pl','pl',
-'py','script',
-'sh','script',
-'shtml','html',
-'tcl','script',
-'xsp','script',
-'rss','rss',
-# Image
-'gif','image',
-'png','image',
-'bmp','image',
-'jpg','image',
-'jpeg','image',
-'cdr','image',
-'ico','image',
-'svg','svg',
-'psd','phshop',
-# Document
-'doc','doc',
-'wmz','doc',
-'rtf','doc',
-'pdf','pdf',
-'frl','pdf',
-'xls','xls',
-'ppt','ppt',
-'pps','ppt',
-'mso','doc',
-'sxw','ooffice',
-'sxc','ooffice',
-'sxi','ooffice',
-'sxd','ooffice',
-'sxm','ooffice',
-'sxg','ooffice',
-'csv','other',
-'xsl','html',
-'lit','lit',
-'ai','ai',
-'mdb','mdb',
-'rpt','crystal',
-# Package
-'rpm',($LogType eq 'S'?'audio':'archive'),
-'deb','archive',
-'msi','archive',
-# Archive
-'7z','archive',
-'ace','archive',
-'bz2','archive',
-'cab','archive',
-'emz','archive',
-'gz','archive',
-'jar','archive',
-'lzma','archive',
-'rar','archive',
-'tar','archive',
-'tgz','archive',
-'tbz2','archive',
-'z','archive',
-'zip','archive',
-# Audio
-'aac','audio',
-'flac','audio',
-'mp3','audio',
-'oga','audio',
-'ogg','audio',
-'wma','audio',
-'wav','audio',
-'m4a','audio',
-'m3u','audio',
-'asf','audio',
-# Video
-'avi','video',
-'divx','video',
-'mp4','video',
-'m4v','video',
-'mpeg','video',
-'mpg','video',
-'ogv','video',
-'ogx','video',
-'rm','real',
-'swf','flash',
-'flv','flash',
-'f4v','flash',
-'wmv','video',
-'wmf','video',
-'mov','quicktime',
-'qt','quicktime',
-# Web scripts
-'js','jscript',
-'vbs','jscript',
-# Config
-'cf','other',
-'conf','other',
-'css','css',
-'ini','other',
-'dtd','other',
-# Program
-'exe','script',
-'dll','script',
-'jnlp','jnlp',
-'bin', 'library',
-# Fonts
-'ttf','ttf',
-'fon','fon',
-# Encrypted files
-'pgp','encrypt',
-'gpg','encrypt',
-);
-
-
-%MimeHashFamily=(
+# MimeHashLib
+# This is a hash of arrays where the key is a specific file extension
+# and the array is a list of family and file type, e.g. 'd' for download
+# If a file does not have a type defined, it is counted as a page. Each
+# mime entry can have only one type
+# Format: 'extension', ['family', 'type'],
+# Valid Types:
+# i - image
+# d - download
+# p - page
+#---------------------------------------------------------------
+%MimeHashLib=(
# Text file
-'txt','text',
-'log','text',
+'txt',['text','d'],
+'log',['text','d'],
# HTML Static page
-'chm','page',
-'html','page',
-'htm','page',
-'mht','page',
-'wml','page',
-'wmlp','page',
-'xhtml','page',
-'xml','page',
-'vak','page',
-'sgm','page',
-'sgml','page',
+'chm',['page',''],
+'html',['page',''],
+'htm',['page',''],
+'mht',['page',''],
+'wml',['page',''],
+'wmlp',['page',''],
+'xhtml',['page',''],
+'xml',['page',''],
+'vak',['page',''],
+'sgm',['page',''],
+'sgml',['page',''],
# HTML Dynamic pages or script
-'asp','script',
-'aspx','dotnet',
-'ashx','dotnet',
-'asmx','dotnet',
-'axd', 'dotnet',
-'cfm','script',
-'jsp','script',
-'cgi','script',
-'ksh','script',
-'php','php',
-'php3','php',
-'php4','php',
-'pl','pl',
-'py','script',
-'sh','script',
-'shtml','script',
-'tcl','script',
-'xsp','script',
-'rss','rss',
+'asp',['script',''],
+'aspx',['dotnet',''],
+'ashx',['dotnet',''],
+'asmx',['dotnet',''],
+'axd', ['dotnet',''],
+'cfm',['script',''],
+'class',['script',''],
+'js',['jscript',''],
+'jsp',['script',''],
+'cgi',['script',''],
+'ksh',['script',''],
+'php',['php',''],
+'php3',['php',''],
+'php4',['php',''],
+'pl',['pl',''],
+'py',['script',''],
+'rss',['rss',''],
+'sh',['script',''],
+'shtml',['script',''],
+'tcl',['script',''],
+'xsp',['script',''],
+'vbs',['vbs',''],
# Image
-'gif','image',
-'png','image',
-'bmp','image',
-'jpg','image',
-'jpeg','image',
-'cdr','image',
-'ico','image',
-'svg','svg',
-'psd','phshop',
-'ai','ai',
+'gif',['image','i'],
+'png',['image','i'],
+'bmp',['image','i'],
+'jpg',['image','i'],
+'jpeg',['image','i'],
+'cdr',['image','d'],
+'ico',['image','i'],
+'svg',['image','i'],
# Document
-'doc','document',
-'wmz','document',
-'rtf','document',
-'mso','document',
-'pdf','pdf',
-'frl','pdf',
-'xls','document',
-'ppt','document',
-'pps','document',
-'sxw','ooffice',
-'sxc','ooffice',
-'sxi','ooffice',
-'sxd','ooffice',
-'sxm','ooffice',
-'sxg','ooffice',
-'csv','csv',
-'xsl','xsl',
-'lit','lit',
-'mdb','mdb',
-'rpt','crystal',
+'ai',['document','d'],
+'doc',['document','d'],
+'wmz',['document','d'],
+'rtf',['document','d'],
+'mso',['document','d'],
+'pdf',['pdf','d'],
+'frl',['pdf','d'],
+'xls',['document','d'],
+'ppt',['document','d'],
+'pps',['document','d'],
+'psd',['document','d'],
+'sxw',['ooffice','d'],
+'sxc',['ooffice','d'],
+'sxi',['ooffice','d'],
+'sxd',['ooffice','d'],
+'sxm',['ooffice','d'],
+'sxg',['ooffice','d'],
+'csv',['csv','d'],
+'xsl',['xsl','d'],
+'lit',['lit','d'],
+'mdb',['mdb',''],
+'rpt',['crystal',''],
# Package
-'rpm',($LogType eq 'S'?'audio':'package'),
-'deb','package',
-'msi','package',
+'rpm',[($LogType eq 'S'?'audio':'package'),'d'],
+'deb',['package','d'],
+'msi',['package','d'],
# Archive
-'7z','archive',
-'ace','archive',
-'bz2','archive',
-'cab','archive',
-'emz','archive',
-'gz','archive',
-'jar','archive',
-'lzma','archive',
-'rar','archive',
-'tar','archive',
-'tgz','archive',
-'tbz2','archive',
-'z','archive',
-'zip','archive',
+'7z',['archive','d'],
+'ace',['archive','d'],
+'bz2',['archive','d'],
+'cab',['archive','d'],
+'emz',['archive','d'],
+'gz',['archive','d'],
+'jar',['archive','d'],
+'lzma',['archive','d'],
+'rar',['archive','d'],
+'tar',['archive','d'],
+'tgz',['archive','d'],
+'tbz2',['archive','d'],
+'z',['archive','d'],
+'zip',['archive','d'],
# Audio
-'aac','audio',
-'flac','audio',
-'mp3','audio',
-'oga','audio',
-'ogg','audio',
-'wav','audio',
-'wma','audio',
-'m4a','audio',
-'m3u','audio',
-'asf','audio',
+'aac',['audio','d'],
+'flac',['audio','d'],
+'mp3',['audio','d'],
+'oga',['audio','d'],
+'ogg',['audio','d'],
+'wav',['audio','d'],
+'wma',['audio','d'],
+'m4a',['audio','d'],
+'m3u',['audio','d'],
+'asf',['audio','d'],
# Video
-'avi','video',
-'divx','video',
-'mp4','video',
-'m4v','video',
-'mpeg','video',
-'mpg','video',
-'ogv','video',
-'ogx','video',
-'rm','video',
-'swf','swf',
-'flv','flv',
-'f4v','flv',
-'wmv','video',
-'wmf','video',
-'mov','video',
-'qt','video',
-# Web scripts
-'js','javascript',
-'vbs','vbs',
+'avi',['video','d'],
+'divx',['video','d'],
+'mp4',['video','d'],
+'m4v',['video','d'],
+'mpeg',['video','d'],
+'mpg',['video','d'],
+'ogv',['video','d'],
+'ogx',['video','d'],
+'rm',['video','d'],
+'swf',['swf',''],
+'flv',['flv','d'],
+'f4v',['flv','d'],
+'wmv',['video','d'],
+'wmf',['video','d'],
+'mov',['video','d'],
+'qt',['video','d'],
# Config
-'cf','conf',
-'conf','conf',
-'css','css',
-'ini','conf',
-'dtd','dtd',
+'cf',['conf',''],
+'conf',['conf',''],
+'css',['css',''],
+'ini',['conf',''],
+'dtd',['dtd',''],
# Program
-'exe','runtime',
-'jnlp','jnlp',
-'dll','library',
-'bin', 'library',
+'exe',['runtime',''],
+'jnlp',['jnlp',''],
+'dll',['library',''],
+'bin',['library',''],
# Font
-'ttf','ttf',
-'fon','fon',
+'ttf',['ttf',''],
+'fon',['fon',''],
# Encrypted files
-'pgp','encrypt',
-'gpg','encrypt',
+'pgp',['encrypt',''],
+'gpg',['encrypt',''],
);