1
diff -ruN awstats-6.3/wwwroot/cgi-bin/awstats.model.conf awstats-6.4/wwwroot/cgi-bin/awstats.model.conf
2
--- awstats-6.3/wwwroot/cgi-bin/awstats.model.conf 2005-02-17 02:39:33.000000000 +0100
3
+++ awstats-6.4/wwwroot/cgi-bin/awstats.model.conf 2005-02-11 01:45:06.000000000 +0100
8
-# AWStat can be run with debug=x parameter to ouput various informations
9
-# to help in debugging or solving troubles. If you want (in most cases for
10
-# security reasons) to disable debugging, set this parameter to 0.
11
+# AWStat can be run with debug=x parameter to output various informations
12
+# to help in debugging or solving troubles. If you want to allow this (not
13
+# enabled by default for security reasons), set this parameter to 0.
14
# Change : Effective immediatly
15
# Possible values: 0 or 1
23
# To help you to detect if your log format is good, AWStats report an error
25
# M = Average mail size (mail logs)
28
+# Show monthly summary
29
+# Context: Web, Streaming, Mail, Ftp
30
+# Default: UVPHB, Possible column codes: UVPHB
34
# Context: Web, Streaming, Mail, Ftp
35
# Default: UVPHB, Possible column codes: UVPHB
39
# Context: Web, Streaming
40
-# Default: 0 (If set to 1, see also LevelForWormsDetection), Possible column codes: HBL
41
+# Default: 0 (If set to other than 0, see also LevelForWormsDetection), Possible column codes: HBL
44
# Show email senders chart (For use when analyzing mail log files)
46
# Stats by screen size
47
MaxNbOfScreenSizesShown = 5
49
-# Stats by window size (following 2 parameters are not yet used)
50
-MaxNbOfWindowSizesShown = 5
52
+# Stats by window size (following 2 parameters are not yet used)
53
+MaxNbOfWindowSizesShown = 5
56
MaxNbOfRefererShown = 10
58
diff -ruN awstats-6.3/wwwroot/cgi-bin/awstats.pl awstats-6.4/wwwroot/cgi-bin/awstats.pl
59
--- awstats-6.3/wwwroot/cgi-bin/awstats.pl 2005-02-17 02:39:34.000000000 +0100
60
+++ awstats-6.4/wwwroot/cgi-bin/awstats.pl 2005-02-11 01:45:06.000000000 +0100
62
# line or a browser to read report results.
63
# See AWStats documentation (in docs/ directory) for all setup instructions.
64
#------------------------------------------------------------------------------
65
-# $Revision: 1.800 $ - $Author: eldy $ - $Date: 2005/01/22 16:34:38 $
66
+# $Revision: 1.810 $ - $Author: eldy $ - $Date: 2005/02/11 00:45:06 $
72
#------------------------------------------------------------------------------
73
use vars qw/ $REVISION $VERSION /;
74
-$REVISION='$Revision: 1.800 $'; $REVISION =~ /\s(.*)\s/; $REVISION=$1;
75
-$VERSION="6.3 (build $REVISION)";
76
+$REVISION='$Revision: 1.810 $'; $REVISION =~ /\s(.*)\s/; $REVISION=$1;
77
+$VERSION="6.4 (build $REVISION)";
79
# ----- Constants -----
82
$BuildHistoryFormat='text';
83
$ExtraTrackedRowsLimit=500;
85
-$EnableLockForUpdate $DNSLookup $AllowAccessFromWebToAuthenticatedUsersOnly
86
+$DebugMessages $AllowToUpdateStatsFromBrowser $EnableLockForUpdate $DNSLookup $AllowAccessFromWebToAuthenticatedUsersOnly
87
$BarHeight $BarWidth $CreateDirDataIfNotExists $KeepBackupOfHistoricFiles
88
$NbOfLinesParsed $NbOfLinesDropped $NbOfLinesCorrupted $NbOfOldLines $NbOfNewLines
89
$NbOfLinesShowsteps $NewLinePhase $NbOfLinesForCorruptedLog $PurgeLogFile $ArchiveLogRecords
91
$Expires $UpdateStats $MigrateStats $URLNotCaseSensitive $URLWithQuery $URLReferrerWithQuery
94
-($EnableLockForUpdate, $DNSLookup, $AllowAccessFromWebToAuthenticatedUsersOnly,
95
+($DebugMessages, $AllowToUpdateStatsFromBrowser, $EnableLockForUpdate, $DNSLookup, $AllowAccessFromWebToAuthenticatedUsersOnly,
96
$BarHeight, $BarWidth, $CreateDirDataIfNotExists, $KeepBackupOfHistoricFiles,
97
$NbOfLinesParsed, $NbOfLinesDropped, $NbOfLinesCorrupted, $NbOfOldLines, $NbOfNewLines,
98
$NbOfLinesShowsteps, $NewLinePhase, $NbOfLinesForCorruptedLog, $PurgeLogFile, $ArchiveLogRecords,
100
$AuthenticatedUsersNotCaseSensitive,
101
$Expires, $UpdateStats, $MigrateStats, $URLNotCaseSensitive, $URLWithQuery, $URLReferrerWithQuery,
103
-(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
104
+(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
106
-$AllowToUpdateStatsFromBrowser $DetailedReportsOnNewWindows
107
+$DetailedReportsOnNewWindows
108
$FirstDayOfWeek $KeyWordsNotSensitive $SaveDatabaseFilesWithPermissionsForEveryone
109
-$WarningMessages $DebugMessages $ShowLinksOnUrl $UseFramesWhenCGI
110
-$ShowMenu $ShowMonthStats $ShowDaysOfMonthStats $ShowDaysOfWeekStats
111
+$WarningMessages $ShowLinksOnUrl $UseFramesWhenCGI
112
+$ShowMenu $ShowSummary $ShowMonthStats $ShowDaysOfMonthStats $ShowDaysOfWeekStats
113
$ShowHoursStats $ShowDomainsStats $ShowHostsStats
114
$ShowRobotsStats $ShowSessionsStats $ShowPagesStats $ShowFileTypesStats
115
$ShowOSStats $ShowBrowsersStats $ShowOriginStats
116
$ShowKeyphrasesStats $ShowKeywordsStats $ShowMiscStats $ShowHTTPErrorsStats
117
$AddDataArrayMonthStats $AddDataArrayShowDaysOfMonthStats $AddDataArrayShowDaysOfWeekStats $AddDataArrayShowHoursStats
119
-($AllowToUpdateStatsFromBrowser, $DetailedReportsOnNewWindows,
120
+($DetailedReportsOnNewWindows,
121
$FirstDayOfWeek, $KeyWordsNotSensitive, $SaveDatabaseFilesWithPermissionsForEveryone,
122
-$WarningMessages, $DebugMessages, $ShowLinksOnUrl, $UseFramesWhenCGI,
123
-$ShowMenu, $ShowMonthStats, $ShowDaysOfMonthStats, $ShowDaysOfWeekStats,
124
+$WarningMessages, $ShowLinksOnUrl, $UseFramesWhenCGI,
125
+$ShowMenu, $ShowSummary, $ShowMonthStats, $ShowDaysOfMonthStats, $ShowDaysOfWeekStats,
126
$ShowHoursStats, $ShowDomainsStats, $ShowHostsStats,
127
$ShowRobotsStats, $ShowSessionsStats, $ShowPagesStats, $ShowFileTypesStats,
128
$ShowOSStats, $ShowBrowsersStats, $ShowOriginStats,
129
$ShowKeyphrasesStats, $ShowKeywordsStats, $ShowMiscStats, $ShowHTTPErrorsStats,
130
$AddDataArrayMonthStats, $AddDataArrayShowDaysOfMonthStats, $AddDataArrayShowDaysOfWeekStats, $AddDataArrayShowHoursStats
132
-(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
133
+(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
136
$LevelForRobotsDetection $LevelForWormsDetection $LevelForBrowsersDetection $LevelForOSDetection $LevelForRefererAnalyze
138
'sv'=>'se','th'=>'th','tr'=>'tr','uk'=>'ua','cy'=>'cy','wlk'=>'cy'
140
%LangAWStatsToFlagAwstats=( # If flag (country ISO-3166 two letters) is not same than AWStats Lang code
141
-'ca'=>'es_cat','et'=>'ee','eu','es_eu',
142
+'ca'=>'es_cat','et'=>'ee','eu'=>'es_eu',
146
@@ -1577,7 +1577,7 @@
147
if ($URLWithQuery !~ /[0-1]/) { $URLWithQuery=0; }
148
if ($URLReferrerWithQuery !~ /[0-1]/) { $URLReferrerWithQuery=0; }
149
if ($WarningMessages !~ /[0-1]/) { $WarningMessages=1; }
150
- if ($DebugMessages !~ /[0-1]/) { $DebugMessages=1; }
151
+ if ($DebugMessages !~ /[0-1]/) { $DebugMessages=0; }
152
if ($NbOfLinesForCorruptedLog !~ /^\d+/ || $NbOfLinesForCorruptedLog<1) { $NbOfLinesForCorruptedLog=50; }
153
if ($Expires !~ /^\d+/) { $Expires=0; }
154
if ($DecodeUA !~ /[0-1]/) { $DecodeUA=0; }
155
@@ -1602,6 +1602,7 @@
156
# Optional appearance setup section
157
if ($MaxRowsInHTMLOutput !~ /^\d+/ || $MaxRowsInHTMLOutput<1) { $MaxRowsInHTMLOutput=1000; }
158
if ($ShowMenu !~ /[01]/) { $ShowMenu=1; }
159
+ if ($ShowSummary !~ /[01UVPHB]/) { $ShowSummary='UVPHB'; }
160
if ($ShowMonthStats !~ /[01UVPHB]/) { $ShowMonthStats='UVPHB'; }
161
if ($ShowDaysOfMonthStats !~ /[01VPHB]/) { $ShowDaysOfMonthStats='VPHB'; }
162
if ($ShowDaysOfWeekStats !~ /[01PHBL]/) { $ShowDaysOfWeekStats='PHBL'; }
163
@@ -1675,6 +1676,7 @@
164
$color_x =~ s/#//g; if ($color_x !~ /^[0-9|A-H]+$/i) { $color_x='C1B2E2'; }
166
# Correct param if default value is asked
167
+ if ($ShowSummary eq '1') { $ShowSummary = 'UVPHB'; }
168
if ($ShowMonthStats eq '1') { $ShowMonthStats = 'UVPHB'; }
169
if ($ShowDaysOfMonthStats eq '1') { $ShowDaysOfMonthStats = 'VPHB'; }
170
if ($ShowDaysOfWeekStats eq '1') { $ShowDaysOfWeekStats = 'PHBL'; }
171
@@ -1824,7 +1826,8 @@
172
my @PossiblePluginsDir=("$DIR/plugins","/usr/local/awstats/wwwroot/cgi-bin/plugins","/usr/share/awstats/plugins");
173
my %DirAddedInINC=();
175
- foreach my $key (keys %NoLoadPlugin) { if ($NoLoadPlugin{$key} < 0) { push @PluginsToLoad, $key; } }
176
+ #Removed for security reason
177
+ #foreach my $key (keys %NoLoadPlugin) { if ($NoLoadPlugin{$key} < 0) { push @PluginsToLoad, $key; } }
178
if ($Debug) { debug("Call to Read_Plugins with list: ".join(',',@PluginsToLoad)); }
179
foreach my $plugininfo (@PluginsToLoad) {
180
my ($pluginfile,$pluginparam)=split(/\s+/,$plugininfo,2);
181
@@ -2051,7 +2054,7 @@
190
@@ -2061,8 +2064,8 @@
194
- if (! $xmlold && $_ =~ /^<xml/) {
196
+ if (! $readxml && $_ =~ /^<xml/) {
198
if ($Debug) { debug(" Data file format is 'xml'",1); }
201
@@ -2075,7 +2078,7 @@
205
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_));
206
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_));
207
if (! $field[0]) { next; }
209
# Here version MUST be defined, or file will be processed as an old data file
210
@@ -2175,7 +2178,7 @@
214
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
215
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
217
until ($field[0] eq 'END_MISC' || $field[0] eq "${xmleb}END_MISC" || ! $_);
218
if ($field[0] ne 'END_MISC' && $field[0] ne "${xmleb}END_MISC") { error("History file \"$filetoread\" is corrupted (End of section MISC 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); }
219
@@ -2206,7 +2209,7 @@
223
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
224
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
226
until ($field[0] eq 'END_CLUSTER' || $field[0] eq "${xmleb}END_CLUSTER" || ! $_);
227
if ($field[0] ne 'END_CLUSTER' && $field[0] ne "${xmleb}END_CLUSTER") { error("History file \"$filetoread\" is corrupted (End of section CLUSTER 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); }
228
@@ -2250,7 +2253,7 @@
232
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
233
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
235
until ($field[0] eq 'END_TIME' || $field[0] eq "${xmleb}END_TIME" || ! $_);
236
if ($field[0] ne 'END_TIME' && $field[0] ne "${xmleb}END_TIME") { error("History file \"$filetoread\" is corrupted (End of section TIME 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); }
237
@@ -2289,7 +2292,7 @@
241
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
242
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
244
until ($field[0] eq 'END_ORIGIN' || $field[0] eq "${xmleb}END_ORIGIN" || ! $_);
245
if ($field[0] ne 'END_ORIGIN' && $field[0] ne "${xmleb}END_ORIGIN") { error("History file \"$filetoread\" is corrupted (End of section ORIGIN 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); }
246
@@ -2320,7 +2323,7 @@
250
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
251
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
253
until ($field[0] eq 'END_DAY' || $field[0] eq "${xmleb}END_DAY" || ! $_);
254
if ($field[0] ne 'END_DAY' && $field[0] ne "${xmleb}END_DAY") { error("History file \"$filetoread\" is corrupted (End of section DAY 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); }
255
@@ -2427,7 +2430,7 @@
259
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
260
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
262
until ($field[0] eq 'END_VISITOR' || $field[0] eq "${xmleb}END_VISITOR" || ! $_);
263
if ($field[0] ne 'END_VISITOR' && $field[0] ne "${xmleb}END_VISITOR") { error("History file \"$filetoread\" is corrupted (End of section VISITOR 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); }
264
@@ -2457,7 +2460,7 @@
268
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
269
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
271
until ($field[0] eq 'END_UNKNOWNIP' || $field[0] eq "${xmleb}END_UNKNOWNIP" || ! $_);
272
if ($field[0] ne 'END_UNKNOWNIP' && $field[0] ne "${xmleb}END_UNKNOWNIP") { error("History file \"$filetoread\" is corrupted (End of section UNKOWNIP 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); }
273
@@ -2495,7 +2498,7 @@
277
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
278
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
280
until ($field[0] eq 'END_LOGIN' || $field[0] eq "${xmleb}END_LOGIN" || ! $_);
281
if ($field[0] ne 'END_LOGIN' && $field[0] ne "${xmleb}END_LOGIN") { error("History file \"$filetoread\" is corrupted (End of section LOGIN 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); }
282
@@ -2525,7 +2528,7 @@
286
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
287
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
289
until ($field[0] eq 'END_DOMAIN' || $field[0] eq "${xmleb}END_DOMAIN" || ! $_);
290
if ($field[0] ne 'END_DOMAIN' && $field[0] ne "${xmleb}END_DOMAIN") { error("History file \"$filetoread\" is corrupted (End of section DOMAIN 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); }
291
@@ -2553,7 +2556,7 @@
295
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
296
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
298
until ($field[0] eq 'END_SESSION' || $field[0] eq "${xmleb}END_SESSION" || ! $_);
299
if ($field[0] ne 'END_SESSION' && $field[0] ne "${xmleb}END_SESSION") { error("History file \"$filetoread\" is corrupted (End of section SESSION 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); }
300
@@ -2582,7 +2585,7 @@
304
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
305
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
307
until ($field[0] eq 'END_OS' || $field[0] eq "${xmleb}END_OS" || ! $_);
308
if ($field[0] ne 'END_OS' && $field[0] ne "${xmleb}END_OS") { error("History file \"$filetoread\" is corrupted (End of section OS 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); }
309
@@ -2610,7 +2613,7 @@
313
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
314
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
316
until ($field[0] eq 'END_BROWSER' || $field[0] eq "${xmleb}END_BROWSER" || ! $_);
317
if ($field[0] ne 'END_BROWSER' && $field[0] ne "${xmleb}END_BROWSER") { error("History file \"$filetoread\" is corrupted (End of section BROWSER 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); }
318
@@ -2638,7 +2641,7 @@
322
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
323
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
325
until ($field[0] eq 'END_UNKNOWNREFERER' || $field[0] eq "${xmleb}END_UNKNOWNREFERER" || ! $_);
326
if ($field[0] ne 'END_UNKNOWNREFERER' && $field[0] ne "${xmleb}END_UNKNOWNREFERER") { error("History file \"$filetoread\" is corrupted (End of section UNKNOWNREFERER 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); }
327
@@ -2666,7 +2669,7 @@
331
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
332
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
334
until ($field[0] eq 'END_UNKNOWNREFERERBROWSER' || $field[0] eq "${xmleb}END_UNKNOWNREFERERBROWSER" || ! $_);
335
if ($field[0] ne 'END_UNKNOWNREFERERBROWSER' && $field[0] ne "${xmleb}END_UNKNOWNREFERERBROWSER") { error("History file \"$filetoread\" is corrupted (End of section UNKNOWNREFERERBROWSER 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); }
336
@@ -2694,7 +2697,7 @@
340
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
341
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
343
until ($field[0] eq 'END_SCREENSIZE' || $field[0] eq "${xmleb}END_SCREENSIZE" || ! $_);
344
if ($field[0] ne 'END_SCREENSIZE' && $field[0] ne "${xmleb}END_SCREENSIZE") { error("History file \"$filetoread\" is corrupted (End of section SCREENSIZE 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); }
345
@@ -2730,7 +2733,7 @@
349
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
350
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
352
until ($field[0] eq 'END_ROBOT' || $field[0] eq "${xmleb}END_ROBOT" || ! $_);
353
if ($field[0] ne 'END_ROBOT' && $field[0] ne "${xmleb}END_ROBOT") { error("History file \"$filetoread\" is corrupted (End of section ROBOT 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); }
354
@@ -2760,7 +2763,7 @@
358
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
359
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
361
until ($field[0] eq 'END_WORMS' || $field[0] eq "${xmleb}END_WORMS" || ! $_);
362
if ($field[0] ne 'END_WORMS' && $field[0] ne "${xmleb}END_WORMS") { error("History file \"$filetoread\" is corrupted (End of section WORMS 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); }
363
@@ -2790,7 +2793,7 @@
367
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
368
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
370
until ($field[0] eq 'END_EMAILSENDER' || $field[0] eq "${xmleb}END_EMAILSENDER" || ! $_);
371
if ($field[0] ne 'END_EMAILSENDER' && $field[0] ne "${xmleb}END_EMAILSENDER") { error("History file \"$filetoread\" is corrupted (End of section EMAILSENDER 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); }
372
@@ -2820,7 +2823,7 @@
376
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
377
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
379
until ($field[0] eq 'END_EMAILRECEIVER' || $field[0] eq "${xmleb}END_EMAILRECEIVER" || ! $_);
380
if ($field[0] ne 'END_EMAILRECEIVER' && $field[0] ne "${xmleb}END_EMAILRECEIVER") { error("History file \"$filetoread\" is corrupted (End of section EMAILRECEIVER 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); }
381
@@ -2893,7 +2896,7 @@
385
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
386
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
388
until ($field[0] eq 'END_SIDER' || $field[0] eq "${xmleb}END_SIDER" || ! $_);
389
if ($field[0] ne 'END_SIDER' && $field[0] ne "${xmleb}END_SIDER") { error("History file \"$filetoread\" is corrupted (End of section SIDER 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); }
390
@@ -2925,7 +2928,7 @@
394
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
395
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
397
until ($field[0] eq 'END_FILETYPES' || $field[0] eq "${xmleb}END_FILETYPES" || ! $_);
398
if ($field[0] ne 'END_FILETYPES' && $field[0] ne "${xmleb}END_FILETYPES") { error("History file \"$filetoread\" is corrupted (End of section FILETYPES 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); }
399
@@ -2975,7 +2978,7 @@
403
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
404
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
406
until ($field[0] eq 'END_SEREFERRALS' || $field[0] eq "${xmleb}END_SEREFERRALS" || ! $_);
407
if ($field[0] ne 'END_SEREFERRALS' && $field[0] ne "${xmleb}END_SEREFERRALS") { error("History file \"$filetoread\" is corrupted (End of section SEREFERRALS 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); }
408
@@ -3018,7 +3021,7 @@
412
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
413
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
415
until ($field[0] eq 'END_PAGEREFS' || $field[0] eq "${xmleb}END_PAGEREFS" || ! $_);
416
if ($field[0] ne 'END_PAGEREFS' && $field[0] ne "${xmleb}END_PAGEREFS") { error("History file \"$filetoread\" is corrupted (End of section PAGEREFS 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); }
417
@@ -3082,7 +3085,7 @@
421
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
422
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
424
until ($field[0] eq 'END_SEARCHWORDS' || $field[0] eq "${xmleb}END_SEARCHWORDS" || ! $_);
425
if ($field[0] ne 'END_SEARCHWORDS' && $field[0] ne "${xmleb}END_SEARCHWORDS") { error("History file \"$filetoread\" is corrupted (End of section SEARCHWORDS 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); }
426
@@ -3119,7 +3122,7 @@
430
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
431
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
433
until ($field[0] eq 'END_KEYWORDS' || $field[0] eq "${xmleb}END_KEYWORDS" || ! $_);
434
if ($field[0] ne 'END_KEYWORDS' && $field[0] ne "${xmleb}END_KEYWORDS") { error("History file \"$filetoread\" is corrupted (End of section KEYWORDS 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); }
435
@@ -3148,7 +3151,7 @@
439
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
440
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
442
until ($field[0] eq 'END_ERRORS' || $field[0] eq "${xmleb}END_ERRORS" || ! $_);
443
if ($field[0] ne 'END_ERRORS' && $field[0] ne "${xmleb}END_ERRORS") { error("History file \"$filetoread\" is corrupted (End of section ERRORS 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); }
444
@@ -3180,7 +3183,7 @@
448
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
449
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
451
until ($field[0] eq "END_SIDER_$code" || $field[0] eq "${xmleb}END_SIDER_$code" || ! $_);
452
if ($field[0] ne "END_SIDER_$code" && $field[0] ne "${xmleb}END_SIDER_$code") { error("History file \"$filetoread\" is corrupted (End of section SIDER_$code 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); }
453
@@ -3213,7 +3216,7 @@
457
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
458
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
460
until ($field[0] eq "END_EXTRA_$extranum" || $field[0] eq "${xmleb}END_EXTRA_$extranum" || ! $_);
461
if ($field[0] ne "END_EXTRA_$extranum" && $field[0] ne "${xmleb}END_EXTRA_$extranum") { error("History file \"$filetoread\" is corrupted (End of section EXTRA_$extranum 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); }
462
@@ -3237,7 +3240,7 @@
463
# The plugin for this section was loaded
465
my $issectiontoload=$SectionsToLoad{"plugin_$pluginname"};
466
- my $function="SectionReadHistory_$pluginname(\$issectiontoload,\$xmlold,\$xmleb,\$countlines)";
467
+ my $function="SectionReadHistory_$pluginname(\$issectiontoload,\$readxml,\$xmleb,\$countlines)";
469
delete $SectionsToLoad{"plugin_$pluginname"};
470
if ($SectionsToSave{"plugin_$pluginname"}) {
471
@@ -3257,7 +3260,7 @@
475
- @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++;
476
+ @field=split(/\s+/,($readxml?CleanFromTags($_):$_)); $countlines++;
478
until ($field[0] eq "END_PLUGIN_$pluginname" || $field[0] eq "${xmleb}END_PLUGIN_$pluginname" || ! $_);
480
@@ -3774,7 +3777,7 @@
481
print HISTORYTMP "# Unknown referer OS - Last visit date\n";
482
$ValueInFile{$sectiontosave}=tell HISTORYTMP;
483
print HISTORYTMP "${xmlbb}BEGIN_UNKNOWNREFERER${xmlbs}".(scalar keys %_unknownreferer_l)."${xmlbe}\n";
484
- foreach (keys %_unknownreferer_l) { print HISTORYTMP "${xmlrb}$_${xmlrs}$_unknownreferer_l{$_}${xmlre}\n"; }
485
+ foreach (keys %_unknownreferer_l) { print HISTORYTMP "${xmlrb}".XMLEncodeForHisto($_)."${xmlrs}$_unknownreferer_l{$_}${xmlre}\n"; }
486
print HISTORYTMP "${xmleb}END_UNKNOWNREFERER${xmlee}\n";
488
if ($sectiontosave eq 'unknownrefererbrowser') {
489
@@ -3783,7 +3786,7 @@
490
print HISTORYTMP "# Unknown referer Browser - Last visit date\n";
491
$ValueInFile{$sectiontosave}=tell HISTORYTMP;
492
print HISTORYTMP "${xmlbb}BEGIN_UNKNOWNREFERERBROWSER${xmlbs}".(scalar keys %_unknownrefererbrowser_l)."${xmlbe}\n";
493
- foreach (keys %_unknownrefererbrowser_l) { print HISTORYTMP "${xmlrb}$_${xmlrs}$_unknownrefererbrowser_l{$_}${xmlre}\n"; }
494
+ foreach (keys %_unknownrefererbrowser_l) { print HISTORYTMP "${xmlrb}".XMLEncodeForHisto($_)."${xmlrs}$_unknownrefererbrowser_l{$_}${xmlre}\n"; }
495
print HISTORYTMP "${xmleb}END_UNKNOWNREFERERBROWSER${xmlee}\n";
497
if ($sectiontosave eq 'origin') {
498
@@ -4288,7 +4291,12 @@
499
#------------------------------------------------------------------------------
501
my $stringtoclean=shift;
502
- $stringtoclean =~ s/[^\w_\-\\\/\.\s]//g;
505
+ $stringtoclean =~ s/[^\w]//g;
507
+ $stringtoclean =~ s/[^\w\-\\\/\.:\s]//g;
509
return $stringtoclean;
512
@@ -5353,6 +5361,7 @@
513
# be set to force AWStats to be ran as CLI even from a web page.
514
if ($ENV{'AWSTATS_DEL_GATEWAY_INTERFACE'}) { $ENV{'GATEWAY_INTERFACE'}=''; }
515
if ($ENV{'GATEWAY_INTERFACE'}) { # Run from a browser as CGI
517
# Prepare QueryString
518
if ($ENV{'CONTENT_LENGTH'}) {
520
@@ -5393,6 +5402,7 @@
523
else { # Run from command line
525
# Prepare QueryString
528
@@ -5440,6 +5450,7 @@
529
if ($QueryString =~ /showcorrupted/i) { $ShowCorrupted=1; $QueryString=~s/showcorrupted[^&]*//i; }
530
if ($QueryString =~ /showdropped/i) { $ShowDropped=1; $QueryString=~s/showdropped[^&]*//i; }
531
if ($QueryString =~ /showunknownorigin/i) { $ShowUnknownOrigin=1; $QueryString=~s/showunknownorigin[^&]*//i; }
534
if ($QueryString =~ /(^|&)staticlinks/i) { $StaticLinks=".$SiteConfig"; }
535
if ($QueryString =~ /(^|&)staticlinks=([^&]+)/i) { $StaticLinks=".$2"; } # When ran from awstatsbuildstaticpages.pl
536
@@ -5447,8 +5458,9 @@
537
if ($QueryString =~ /(^|&)framename=([^&]+)/i) { $FrameName="$2"; }
538
if ($QueryString =~ /(^|&)debug=(\d+)/i) { $Debug=$2; }
539
if ($QueryString =~ /(^|&)updatefor=(\d+)/i) { $UpdateFor=$2; }
540
-if ($QueryString =~ /(^|&)noloadplugin=([^&]+)/i) { foreach (split(/,/,$2)) { $NoLoadPlugin{&Sanitize("$_")}=1; } }
541
-if ($QueryString =~ /(^|&)loadplugin=([^&]+)/i) { foreach (split(/,/,$2)) { $NoLoadPlugin{&Sanitize("$_")}=-1; } }
542
+if ($QueryString =~ /(^|&)noloadplugin=([^&]+)/i) { foreach (split(/,/,$2)) { $NoLoadPlugin{&Sanitize("$_",1)}=1; } }
543
+#Removed for security reasons
544
+#if ($QueryString =~ /(^|&)loadplugin=([^&]+)/i) { foreach (split(/,/,$2)) { $NoLoadPlugin{&Sanitize("$_",1)}=-1; } }
545
if ($QueryString =~ /(^|&)limitflush=(\d+)/i) { $LIMITFLUSH=$2; }
547
if ($QueryString =~ /(^|&)output(=[^&]*|)(.*)&output(=[^&]*|)(&|$)/i) { error("Only 1 output option is allowed","","",1); }
548
@@ -5488,7 +5500,7 @@
549
# Print AWStats and Perl version
551
debug(ucfirst($PROG)." - $VERSION - Perl $^X $]",1);
552
- debug("DIR=$DIR PROG=$PROG",2);
553
+ debug("DIR=$DIR PROG=$PROG Extension=$Extension",2);
554
debug("QUERY_STRING=$QueryString",2);
555
debug("HTMLOutput=".join(',',keys %HTMLOutput),1);
556
debug("YearRequired=$YearRequired, MonthRequired=$MonthRequired",2);
557
@@ -5634,6 +5646,10 @@
559
# Now SiteDomain is defined
561
+if ($Debug && ! $DebugMessages) {
562
+ error("Debug has not been allowed. Change DebugMessages parameter in config file to allow debug.");
565
# Define frame name and correct variable for frames
567
if ($ENV{'GATEWAY_INTERFACE'} && $UseFramesWhenCGI && $HTMLOutput{'main'} && ! $PluginMode) { $FrameName='index'; }
568
@@ -8453,7 +8469,7 @@
571
#---------------------------------------------------------------------
572
- if ($ShowMonthStats) {
573
+ if ($ShowSummary) {
574
if ($Debug) { debug("ShowSummary",2); }
575
#print "$Center<a name=\"summary\"> </a><br />\n";
576
my $title="$Message[128]";
577
@@ -8498,11 +8514,11 @@
578
# Show main indicators title row
580
if ($LogType eq 'W' || $LogType eq 'S') { print "<td bgcolor=\"#$color_TableBGTitle\"> </td>"; }
581
- if ($ShowMonthStats =~ /U/i) { print "<td width=\"$w%\" bgcolor=\"#$color_u\"".Tooltip(2).">$Message[11]</td>"; } else { print "<td bgcolor=\"#$color_TableBGTitle\" width=\"20%\"> </td>"; }
582
- if ($ShowMonthStats =~ /V/i) { print "<td width=\"$w%\" bgcolor=\"#$color_v\"".Tooltip(1).">$Message[10]</td>"; } else { print "<td bgcolor=\"#$color_TableBGTitle\" width=\"20%\"> </td>"; }
583
- if ($ShowMonthStats =~ /P/i) { print "<td width=\"$w%\" bgcolor=\"#$color_p\"".Tooltip(3).">$Message[56]</td>"; } else { print "<td bgcolor=\"#$color_TableBGTitle\" width=\"20%\"> </td>"; }
584
- if ($ShowMonthStats =~ /H/i) { print "<td width=\"$w%\" bgcolor=\"#$color_h\"".Tooltip(4).">$Message[57]</td>"; } else { print "<td bgcolor=\"#$color_TableBGTitle\" width=\"20%\"> </td>"; }
585
- if ($ShowMonthStats =~ /B/i) { print "<td width=\"$w%\" bgcolor=\"#$color_k\"".Tooltip(5).">$Message[75]</td>"; } else { print "<td bgcolor=\"#$color_TableBGTitle\" width=\"20%\"> </td>"; }
586
+ if ($ShowSummary =~ /U/i) { print "<td width=\"$w%\" bgcolor=\"#$color_u\"".Tooltip(2).">$Message[11]</td>"; } else { print "<td bgcolor=\"#$color_TableBGTitle\" width=\"20%\"> </td>"; }
587
+ if ($ShowSummary =~ /V/i) { print "<td width=\"$w%\" bgcolor=\"#$color_v\"".Tooltip(1).">$Message[10]</td>"; } else { print "<td bgcolor=\"#$color_TableBGTitle\" width=\"20%\"> </td>"; }
588
+ if ($ShowSummary =~ /P/i) { print "<td width=\"$w%\" bgcolor=\"#$color_p\"".Tooltip(3).">$Message[56]</td>"; } else { print "<td bgcolor=\"#$color_TableBGTitle\" width=\"20%\"> </td>"; }
589
+ if ($ShowSummary =~ /H/i) { print "<td width=\"$w%\" bgcolor=\"#$color_h\"".Tooltip(4).">$Message[57]</td>"; } else { print "<td bgcolor=\"#$color_TableBGTitle\" width=\"20%\"> </td>"; }
590
+ if ($ShowSummary =~ /B/i) { print "<td width=\"$w%\" bgcolor=\"#$color_k\"".Tooltip(5).">$Message[75]</td>"; } else { print "<td bgcolor=\"#$color_TableBGTitle\" width=\"20%\"> </td>"; }
592
# Show main indicators values for viewed traffic
594
@@ -8510,16 +8526,16 @@
595
print "<td class=\"aws\">$Message[165]</td>";
596
print "<td> <br /> </td>\n";
597
print "<td> <br /> </td>\n";
598
- if ($ShowMonthStats =~ /H/i) { print "<td><b>$TotalHits</b>".($LogType eq 'M'?"":"<br />($RatioHits ".lc($Message[57]."/".$Message[12]).")</td>"); } else { print "<td> </td>"; }
599
- if ($ShowMonthStats =~ /B/i) { print "<td><b>".Format_Bytes(int($TotalBytes))."</b><br />($RatioBytes $Message[108]/".lc($Message[($LogType eq 'M'?149:12)]).")</td>"; } else { print "<td> </td>"; }
600
+ if ($ShowSummary =~ /H/i) { print "<td><b>$TotalHits</b>".($LogType eq 'M'?"":"<br />($RatioHits ".lc($Message[57]."/".$Message[12]).")")."</td>"; } else { print "<td> </td>"; }
601
+ if ($ShowSummary =~ /B/i) { print "<td><b>".Format_Bytes(int($TotalBytes))."</b><br />($RatioBytes $Message[108]/".lc($Message[($LogType eq 'M'?149:12)]).")</td>"; } else { print "<td> </td>"; }
604
if ($LogType eq 'W' || $LogType eq 'S') { print "<td class=\"aws\">$Message[160] *</td>"; }
605
- if ($ShowMonthStats =~ /U/i) { print "<td>".($MonthRequired eq 'all'?"<b><= $TotalUnique</b><br />$Message[129]":"<b>$TotalUnique</b><br /> ")."</td>"; } else { print "<td> </td>"; }
606
- if ($ShowMonthStats =~ /V/i) { print "<td><b>$TotalVisits</b><br />($RatioVisits $Message[52])</td>"; } else { print "<td> </td>"; }
607
- if ($ShowMonthStats =~ /P/i) { print "<td><b>$TotalPages</b><br />($RatioPages ".lc($Message[56]."/".$Message[12]).")</td>"; } else { print "<td> </td>"; }
608
- if ($ShowMonthStats =~ /H/i) { print "<td><b>$TotalHits</b>".($LogType eq 'M'?"":"<br />($RatioHits ".lc($Message[57]."/".$Message[12]).")</td>"); } else { print "<td> </td>"; }
609
- if ($ShowMonthStats =~ /B/i) { print "<td><b>".Format_Bytes(int($TotalBytes))."</b><br />($RatioBytes $Message[108]/".lc($Message[($LogType eq 'M'?149:12)]).")</td>"; } else { print "<td> </td>"; }
610
+ if ($ShowSummary =~ /U/i) { print "<td>".($MonthRequired eq 'all'?"<b><= $TotalUnique</b><br />$Message[129]":"<b>$TotalUnique</b><br /> ")."</td>"; } else { print "<td> </td>"; }
611
+ if ($ShowSummary =~ /V/i) { print "<td><b>$TotalVisits</b><br />($RatioVisits $Message[52])</td>"; } else { print "<td> </td>"; }
612
+ if ($ShowSummary =~ /P/i) { print "<td><b>$TotalPages</b><br />($RatioPages ".lc($Message[56]."/".$Message[12]).")</td>"; } else { print "<td> </td>"; }
613
+ if ($ShowSummary =~ /H/i) { print "<td><b>$TotalHits</b>".($LogType eq 'M'?"":"<br />($RatioHits ".lc($Message[57]."/".$Message[12]).")")."</td>"; } else { print "<td> </td>"; }
614
+ if ($ShowSummary =~ /B/i) { print "<td><b>".Format_Bytes(int($TotalBytes))."</b><br />($RatioBytes $Message[108]/".lc($Message[($LogType eq 'M'?149:12)]).")</td>"; } else { print "<td> </td>"; }
617
# Show main indicators values for not viewed traffic values
618
@@ -8529,15 +8545,15 @@
619
print "<td class=\"aws\">$Message[166]</td>";
620
print "<td> <br /> </td>\n";
621
print "<td> <br /> </td>\n";
622
- if ($ShowMonthStats =~ /H/i) { print "<td><b>$TotalNotViewedHits</b></td>"; } else { print "<td> </td>"; }
623
- if ($ShowMonthStats =~ /B/i) { print "<td><b>".Format_Bytes(int($TotalNotViewedBytes))."</b></td>"; } else { print "<td> </td>"; }
624
+ if ($ShowSummary =~ /H/i) { print "<td><b>$TotalNotViewedHits</b></td>"; } else { print "<td> </td>"; }
625
+ if ($ShowSummary =~ /B/i) { print "<td><b>".Format_Bytes(int($TotalNotViewedBytes))."</b></td>"; } else { print "<td> </td>"; }
628
if ($LogType eq 'W' || $LogType eq 'S') { print "<td class=\"aws\">$Message[161] *</td>"; }
629
print "<td colspan=\"2\"> <br /> </td>\n";
630
- if ($ShowMonthStats =~ /P/i) { print "<td><b>$TotalNotViewedPages</b></td>"; } else { print "<td> </td>"; }
631
- if ($ShowMonthStats =~ /H/i) { print "<td><b>$TotalNotViewedHits</b></td>"; } else { print "<td> </td>"; }
632
- if ($ShowMonthStats =~ /B/i) { print "<td><b>".Format_Bytes(int($TotalNotViewedBytes))."</b></td>"; } else { print "<td> </td>"; }
633
+ if ($ShowSummary =~ /P/i) { print "<td><b>$TotalNotViewedPages</b></td>"; } else { print "<td> </td>"; }
634
+ if ($ShowSummary =~ /H/i) { print "<td><b>$TotalNotViewedHits</b></td>"; } else { print "<td> </td>"; }
635
+ if ($ShowSummary =~ /B/i) { print "<td><b>".Format_Bytes(int($TotalNotViewedBytes))."</b></td>"; } else { print "<td> </td>"; }
639
@@ -8616,7 +8632,6 @@
641
if ($ShowMonthStats =~ /U/i) { print "<img align=\"bottom\" src=\"$DirIcons\/other\/$BarPng{'vu'}\" height=\"$bredde_u\" width=\"6\"".AltTitle("$Message[11]: ".($MonthUnique{$YearRequired.$monthix}||0))." />"; }
642
if ($ShowMonthStats =~ /V/i) { print "<img align=\"bottom\" src=\"$DirIcons\/other\/$BarPng{'vv'}\" height=\"$bredde_v\" width=\"6\"".AltTitle("$Message[10]: ".($MonthVisits{$YearRequired.$monthix}||0))." />"; }
643
- if ($QueryString !~ /buildpdf/i) { print " "; }
644
if ($ShowMonthStats =~ /P/i) { print "<img align=\"bottom\" src=\"$DirIcons\/other\/$BarPng{'vp'}\" height=\"$bredde_p\" width=\"6\"".AltTitle("$Message[56]: ".($MonthPages{$YearRequired.$monthix}||0))." />"; }
645
if ($ShowMonthStats =~ /H/i) { print "<img align=\"bottom\" src=\"$DirIcons\/other\/$BarPng{'vh'}\" height=\"$bredde_h\" width=\"6\"".AltTitle("$Message[57]: ".($MonthHits{$YearRequired.$monthix}||0))." />"; }
646
if ($ShowMonthStats =~ /B/i) { print "<img align=\"bottom\" src=\"$DirIcons\/other\/$BarPng{'vk'}\" height=\"$bredde_k\" width=\"6\"".AltTitle("$Message[75]: ".Format_Bytes($MonthBytes{$YearRequired.$monthix}))." />"; }