From: eldy <> Date: Thu, 12 Sep 2002 15:07:00 +0000 (+0000) Subject: Added -migrate option to migrate data file from 4.x to 5.x X-Git-Tag: AWSTATS_5_0_BETA~54 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=427fb188e40ae0e80def3a5a98e0a2535eaba670;p=thirdparty%2FAWStats.git Added -migrate option to migrate data file from 4.x to 5.x --- diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index 757c9f18..feefd562 100644 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -103,7 +103,7 @@ $NbOfLinesRead $NbOfLinesDropped $NbOfLinesCorrupted $NbOfOldLines $NbOfNewLines $NewLinePhase $NbOfLinesForCorruptedLog $PurgeLogFile $ShowAuthenticatedUsers $ShowCompressionStats $ShowFileSizesStats $ShowDropped $ShowCorrupted $ShowUnknownOrigin $ShowLinksToWhoIs -$Expires $UpdateStats $URLWithQuery $UseFramesWhenCGI +$Expires $UpdateStats $MigrateStats $URLWithQuery $UseFramesWhenCGI /; ($DNSLookup, $AllowAccessFromWebToAuthenticatedUsersOnly, $BarHeight, $BarWidth, $CreateDirDataIfNotExists, $KeepBackupOfHistoricFiles, $MaxLengthOfURL, @@ -115,8 +115,8 @@ $NbOfLinesRead, $NbOfLinesDropped, $NbOfLinesCorrupted, $NbOfOldLines, $NbOfNewL $NewLinePhase, $NbOfLinesForCorruptedLog, $PurgeLogFile, $ShowAuthenticatedUsers, $ShowCompressionStats, $ShowFileSizesStats, $ShowDropped, $ShowCorrupted, $ShowUnknownOrigin, $ShowLinksToWhoIs, -$Expires, $UpdateStats, $URLWithQuery, $UseFramesWhenCGI)= -(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); +$Expires, $UpdateStats, $MigrateStats, $URLWithQuery, $UseFramesWhenCGI)= +(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); use vars qw/ $PosTotalVisits $PosTotalUnique $PosMonthHostsKnown $PosMonthHostsUnknown /; @@ -477,7 +477,7 @@ sub tab_end { #------------------------------------------------------------------------------ # Function: Write error message and exit -# Parameters: $message $secondmessage $thirdmessage +# Parameters: $message $secondmessage $thirdmessage $donotshowsetupinfo # Input: $HTMLOutput $LogSeparator $LogFormat # Output: None # Return: None @@ -486,6 +486,7 @@ sub error { my $message=shift||""; my $secondmessage=shift||""; my $thirdmessage=shift||""; + my $donotshowsetupinfo=shift||0; if ($Debug) { debug("$message $secondmessage $thirdmessage",1); } if ($message =~ /^Format error$/i) { my $tagbold=""; my $tagunbold=""; my $tagbr=""; my $tagfontred=""; my $tagunfont=""; @@ -555,7 +556,7 @@ sub error { print ($HTMLOutput?"
":""); print "\n"; } - if ($message && $message !~ /lock file/ && $message !~ /History file.*is corrupted/) { + if (! $donotshowsetupinfo) { if ($HTMLOutput) { print "
\n"; } print "Setup (".($FileConfig?"'".$FileConfig."'":"Config")." file, web server or permissions) may be wrong.\n"; if ($HTMLOutput) { print "
\n"; } @@ -1486,6 +1487,10 @@ sub Read_History_With_Update { my $withupdate=shift||0; my $withpurge=shift||0; my $part=shift||""; + my %allsections=("general"=>1,"time"=>2,"visitor"=>3,"day"=>4,"login"=>5,"domain"=>6,"session"=>7,"browser"=>8, + "msiever"=>9,"nsver"=>10,"os"=>11,"unknownreferer"=>12,"unknownrefererbrowser"=>13,"robot"=>14,"sider"=>15, + "filetypes"=>16,"origin"=>17,"sereferrals"=>18,"pagerefs"=>19,"searchwords"=>20,"keywords"=>21, + "errors"=>22,"sider_404"=>23); my $withread=0; my $loadvisitorforbackward=0; @@ -1496,44 +1501,44 @@ sub Read_History_With_Update { # Define value for historyfilename my $historyfilename="$DirData/$PROG$DayRequired$month$year$FileSuffix.txt"; # Month before Year kept for backward compatibility - if ($Plugin_readgz) { $historyfilename.="\.gz"; } - if ($Plugin_readgz) { $historyfilename="gzip -d <\"$historyfilename\" |"; } if ($Debug) { debug(" History file is '$historyfilename'",2); } - # Define which sections to save and load - my %SectionsToSave = my %SectionsToLoad = (); - if ($withupdate) { %SectionsToSave=("general"=>1,"time"=>2,"visitor"=>3,"day"=>4,"login"=>5,"domain"=>6,"session"=>7,"browser"=>8, - "msiever"=>9,"nsver"=>10,"os"=>11,"unknownreferer"=>12,"unknownrefererbrowser"=>13,"robot"=>14,"sider"=>15, - "filetypes"=>16,"origin"=>17,"sereferrals"=>18,"pagerefs"=>19,"searchwords"=>20,"keywords"=>21,"errors"=>22,"sider_404"=>23); } + # Define SectionsToLoad (which sections to load) + my %SectionsToLoad = (); if ($part eq "all") { # Load all needed sections $SectionsToLoad{"general"}=1; $SectionsToLoad{"time"}=2; - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "allhosts" || $HTMLOutput eq "lasthosts" || $HTMLOutput eq "unknownip") { $SectionsToLoad{"visitor"}=3; } # before day, sider and session section - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "days") { $SectionsToLoad{"day"}=4; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "alllogins" || $HTMLOutput eq "lastlogins") { $SectionsToLoad{"login"}=5; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "domains") { $SectionsToLoad{"domain"}=6; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "sessions") { $SectionsToLoad{"session"}=7; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "browserdetail") { $SectionsToLoad{"browser"}=8; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "browserdetail") { $SectionsToLoad{"msiever"}=9; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "browserdetail") { $SectionsToLoad{"nsver"}=10; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "os") { $SectionsToLoad{"os"}=11; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "unknownos") { $SectionsToLoad{"unknownreferer"}=12; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "unknownbrowser") { $SectionsToLoad{"unknownrefererbrowser"}=13; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "allrobots" || $HTMLOutput eq "lastrobots") { $SectionsToLoad{"robot"}=14; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "urldetail" || $HTMLOutput eq "urlentry" || $HTMLOutput eq "urlexit") { $SectionsToLoad{"sider"}=15; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "filetypes") { $SectionsToLoad{"filetypes"}=16; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "origin") { $SectionsToLoad{"origin"}=17; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "refererse") { $SectionsToLoad{"sereferrals"}=18; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "refererpages") { $SectionsToLoad{"pagerefs"}=19; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "keyphrases" || $HTMLOutput eq "keywords") { $SectionsToLoad{"searchwords"}=20; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "allhosts" || $HTMLOutput eq "lasthosts" || $HTMLOutput eq "unknownip") { $SectionsToLoad{"visitor"}=3; } # before day, sider and session section + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "days") { $SectionsToLoad{"day"}=4; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "alllogins" || $HTMLOutput eq "lastlogins") { $SectionsToLoad{"login"}=5; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "domains") { $SectionsToLoad{"domain"}=6; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "sessions") { $SectionsToLoad{"session"}=7; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "browserdetail") { $SectionsToLoad{"browser"}=8; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "browserdetail") { $SectionsToLoad{"msiever"}=9; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "browserdetail") { $SectionsToLoad{"nsver"}=10; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "os") { $SectionsToLoad{"os"}=11; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "unknownos") { $SectionsToLoad{"unknownreferer"}=12; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "unknownbrowser") { $SectionsToLoad{"unknownrefererbrowser"}=13; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "allrobots" || $HTMLOutput eq "lastrobots") { $SectionsToLoad{"robot"}=14; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "urldetail" || $HTMLOutput eq "urlentry" || $HTMLOutput eq "urlexit") { $SectionsToLoad{"sider"}=15; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "filetypes") { $SectionsToLoad{"filetypes"}=16; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "origin") { $SectionsToLoad{"origin"}=17; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "refererse") { $SectionsToLoad{"sereferrals"}=18; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "refererpages") { $SectionsToLoad{"pagerefs"}=19; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "keyphrases" || $HTMLOutput eq "keywords") { $SectionsToLoad{"searchwords"}=20; } if ($HTMLOutput eq "main") { $SectionsToLoad{"keywords"}=21; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "errors") { $SectionsToLoad{"errors"}=22; } - if ($UpdateStats || $HTMLOutput eq "main" || $HTMLOutput eq "errors404") { $SectionsToLoad{"sider_404"}=23; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "errors") { $SectionsToLoad{"errors"}=22; } + if ($UpdateStats || $MigrateStats || $HTMLOutput eq "main" || $HTMLOutput eq "errors404") { $SectionsToLoad{"sider_404"}=23; } } else { # Load only required sections my $order=1; foreach my $key (split(/\s+/,$part)) { $SectionsToLoad{$key}=$order++; } } + + # Define SectionsToSave (which sections to save) + my %SectionsToSave = (); + if ($withupdate) { %SectionsToSave=%allsections; } + if ($Debug) { foreach my $section (sort { $SectionsToLoad{$a} <=> $SectionsToLoad{$b} } keys %SectionsToLoad) { debug(" Section '$section' is marked for load",2); } foreach my $section (sort { $SectionsToSave{$a} <=> $SectionsToSave{$b} } keys %SectionsToSave) { debug(" Section '$section' is marked for save",2); } @@ -1542,42 +1547,12 @@ sub Read_History_With_Update { if (-s $historyfilename) { $withread=1; } # Open files - if ($withupdate) { - open(HISTORYTMP,">$DirData/$PROG$month$year$FileSuffix.tmp.$$") || error("Error: Couldn't open file \"$DirData/$PROG$month$year$FileSuffix.tmp.$$\" : $!"); - } if ($withread) { open(HISTORY,$historyfilename) || error("Error: Couldn't open file \"$historyfilename\" for read: $!"); } - if ($withupdate) { - print HISTORYTMP "AWSTATS DATA FILE $VERSION\n"; - print HISTORYTMP "# If you remove this file, all statistics for date $year-$month will be lost/reset.\n"; - print HISTORYTMP "\n"; - print HISTORYTMP "# This section is not used yet\n"; - print HISTORYTMP "BEGIN_MAP 22\n"; - print HISTORYTMP "POS_GENERAL \n"; - print HISTORYTMP "POS_TIME \n"; - print HISTORYTMP "POS_VISITOR \n"; - print HISTORYTMP "POS_DAY \n"; - print HISTORYTMP "POS_LOGIN \n"; - print HISTORYTMP "POS_DOMAIN \n"; - print HISTORYTMP "POS_SESSION \n"; - print HISTORYTMP "POS_MSIEVER \n"; - print HISTORYTMP "POS_NSVER \n"; - print HISTORYTMP "POS_OS \n"; - print HISTORYTMP "POS_UNKNOWNREFERER \n"; - print HISTORYTMP "POS_UNKNOWNREFERERBROWSER \n"; - print HISTORYTMP "POS_ROBOT \n"; - print HISTORYTMP "POS_SIDER \n"; - print HISTORYTMP "POS_FILETYPES \n"; - print HISTORYTMP "POS_ORIGIN \n"; - print HISTORYTMP "POS_SEREFERRALS \n"; - print HISTORYTMP "POS_PAGEREFS \n"; - print HISTORYTMP "POS_SEARCHWORDS \n"; - print HISTORYTMP "POS_KEYWORDS \n"; - print HISTORYTMP "POS_ERRORS \n"; - print HISTORYTMP "POS_SIDER_404 \n"; - print HISTORYTMP "END_MAP\n"; + open(HISTORYTMP,">$DirData/$PROG$month$year$FileSuffix.tmp.$$") || error("Error: Couldn't open file \"$DirData/$PROG$month$year$FileSuffix.tmp.$$\" for write: $!"); + Save_History("header",$year,$month); } # Loop on read file @@ -1592,6 +1567,14 @@ sub Read_History_With_Update { if (! $versionnum && $_ =~ /^AWSTATS DATA FILE (\d+).(\d+)/i) { $versionnum=($1*1000)+$2; if ($Debug) { debug(" Data file version is $versionnum",1); } + if ($versionnum < 5000) { + warning("Data file '$historyfilename' is an old format history file. You should upgrade it running awstats.pl -migrate=\"$historyfilename\""); + } + elsif ($MigrateStats) { + close(HISTORYTMP); close(HISTORY); + unlink("$DirData/$PROG$month$year$FileSuffix.tmp.$$"); + error("Error: You try to migrate a file that is already a recent version.","","",1); + } next; } @@ -1645,7 +1628,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of TIME section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section TIME). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section TIME). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; my $monthpages=0;my $monthhits=0;my $monthbytes=0; @@ -1664,7 +1647,7 @@ sub Read_History_With_Update { #} $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section TIME). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section TIME). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } $MonthPages{$year.$month}+=$monthpages; @@ -1715,7 +1698,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of DAY section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section DAY). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section DAY). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_DAY" ) { @@ -1731,7 +1714,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section DAY). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section DAY). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of DAY section ($count entries, $countloaded loaded)"); } @@ -1749,7 +1732,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of VISITOR section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section VISITOR). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section VISITOR). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_VISITOR") { @@ -1836,7 +1819,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section VISITOR). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section VISITOR). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of VISITOR section ($count entries, $countloaded loaded)"); } @@ -1854,7 +1837,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of LOGIN section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section LOGIN). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section LOGIN). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_LOGIN") { @@ -1870,7 +1853,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section LOGIN). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section LOGIN). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of LOGIN section ($count entries, $countloaded loaded)"); } @@ -1887,7 +1870,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of DOMAIN section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section DOMAIN). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section DOMAIN). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_DOMAIN") { @@ -1902,7 +1885,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section DOMAIN). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section DOMAIN). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of DOMAIN section ($count entries, $countloaded loaded)"); } @@ -1919,7 +1902,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of SESSION section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SESSION). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SESSION). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_SESSION") { @@ -1932,7 +1915,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SESSION). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SESSION). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of SESSION section ($count entries, $countloaded loaded)"); } @@ -1950,7 +1933,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of BROWSER section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section BROWSER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section BROWSER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_BROWSER") { @@ -1963,7 +1946,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section BROWSER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section BROWSER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of BROWSER section ($count entries, $countloaded loaded)"); } @@ -1980,7 +1963,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of MSIEVER section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section MSIEVER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section MSIEVER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_MSIEVER") { @@ -1993,7 +1976,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section MSIEVER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section MSIEVER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of MSIEVER section ($count entries, $countloaded loaded)"); } @@ -2010,7 +1993,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of NSVER section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section NSVER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section NSVER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_NSVER") { @@ -2023,7 +2006,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section NSVER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section NSVER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of NSVER section ($count entries, $countloaded loaded)"); } @@ -2040,7 +2023,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of OS section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section OS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section OS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_OS") { @@ -2053,7 +2036,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section OS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section OS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of OS section ($count entries, $countloaded loaded)"); } @@ -2070,7 +2053,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of UNKNOWNREFERER section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section UNKNOWNREFERER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section UNKNOWNREFERER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_UNKNOWNREFERER") { @@ -2083,7 +2066,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section UNKNOWNREFERER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section UNKNOWNREFERER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of UNKNOWNREFERER section ($count entries, $countloaded loaded)"); } @@ -2100,7 +2083,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of UNKNOWNREFERERBROWSER section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section UNKNOWNREFERERBROWSER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section UNKNOWNREFERERBROWSER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_UNKNOWNREFERERBROWSER") { @@ -2113,7 +2096,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section UNKNOWNREFERERBROWSER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section UNKNOWNREFERERBROWSER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of UNKNOWNREFERERBROWSER section ($count entries, $countloaded loaded)"); } @@ -2130,7 +2113,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of ROBOT section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section ROBOT). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section ROBOT). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_ROBOT") { @@ -2144,7 +2127,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section ROBOT). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section ROBOT). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of ROBOT section ($count entries, $countloaded loaded)"); } @@ -2161,7 +2144,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of SIDER section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SIDER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SIDER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_SIDER") { @@ -2180,7 +2163,6 @@ sub Read_History_With_Update { $TotalDifferentPages++; } } -# elsif ($HTMLOutput eq "urldetail") { else { # This is for $HTMLOutput = urldetail, urlentry or urlexit if ($MonthRequired eq "year" ) { if (!$URLFilter || $field[0] =~ /$URLFilter/) { $loadrecord=1; } @@ -2217,7 +2199,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SIDER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SIDER). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of SIDER section ($count entries, $countloaded loaded)"); } @@ -2235,7 +2217,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of FILETYPES section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section FILETYPES). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section FILETYPES). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_FILETYPES") { @@ -2251,7 +2233,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section FILETYPES). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section FILETYPES). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of FILETYPES section ($count entries, $countloaded loaded)"); } @@ -2268,7 +2250,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of SEREFERRALS section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SEREFERRALS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SEREFERRALS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_SEREFERRALS") { @@ -2281,7 +2263,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SEREFERRALS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SEREFERRALS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of SEREFERRALS section ($count entries, $countloaded loaded)"); } @@ -2298,7 +2280,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of PAGEREFS section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section PAGEREFS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section PAGEREFS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_PAGEREFS") { @@ -2311,7 +2293,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section PAGEREFS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section PAGEREFS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of PAGEREFS section ($count entries, $countloaded loaded)"); } @@ -2328,7 +2310,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of SEARCHWORDS section ($MaxNbOfKeyphrasesShown,$MinHitKeyphrase)"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SEARCHWORDS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SEARCHWORDS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_SEARCHWORDS") { @@ -2377,7 +2359,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SEARCHWORDS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SEARCHWORDS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of SEARCHWORDS section ($count entries, $countloaded loaded)"); } @@ -2394,7 +2376,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of KEYWORDS section ($MaxNbOfKeywordsShown,$MinHitKeyword)"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section KEYWORDS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section KEYWORDS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_KEYWORDS") { @@ -2416,7 +2398,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section KEYWORDS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section KEYWORDS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of KEYWORDS section ($count entries, $countloaded loaded)"); } @@ -2433,7 +2415,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of ERRORS section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section ERRORS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section ERRORS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_ERRORS") { @@ -2446,7 +2428,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section ERRORS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section ERRORS). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of ERRORS section ($count entries, $countloaded loaded)"); } @@ -2463,7 +2445,7 @@ sub Read_History_With_Update { if ($Debug) { debug(" Begin of SIDER_404 section"); } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SIDER_404). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SIDER_404). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } my @field=split(/\s+/,$_); $countlines++; my $count=0;my $countloaded=0; while ($field[0] ne "END_SIDER_404") { @@ -2479,7 +2461,7 @@ sub Read_History_With_Update { } $_=; chomp $_; s/\r//; - if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SIDER_404). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost)."); } + if (! $_) { error("Error: History file \"$historyfilename\" is corrupted (in section SIDER_404). Last line read is number $countlines.\nCorrect the line, restore a recent backup of this file, or remove it (data for this month will be lost).","","",1); } @field=split(/\s+/,$_); $countlines++; } if ($Debug) { debug(" End of SIDER_404 section ($count entries, $countloaded loaded)"); } @@ -2495,7 +2477,6 @@ sub Read_History_With_Update { } if ($withupdate) { - # Process rest of data saved in 'wait' arrays (data for hosts that are not in history file or no history file found) # This can change some values for day, sider and session sections if ($Debug) { debug(" Processing data in 'wait' arrays",3); } @@ -2510,7 +2491,6 @@ sub Read_History_With_Update { $_session{GetSessionRange($newtimehosts,$newtimehostl)}++; } } - } # Write all unwrote sections in section order ('general','time', 'day','sider','session' and other...) @@ -2538,7 +2518,7 @@ sub Read_History_With_Update { close(HISTORYTMP) || error("Failed to write temporary history file"); } if ($withread) { - close HISTORY || error("Command for pipe '$historyfilename' failed"); + close(HISTORY) || error("Command for pipe '$historyfilename' failed"); } # For backward compatibility, if LastLine does not exist @@ -2548,7 +2528,7 @@ sub Read_History_With_Update { #-------------------------------------------------------------------- # Function: Save a part of history file # Parameters: part_to_save year month -# Input: None +# Input: $VERSION HISTORYTMP $nowyear $nowmonth $nowday $nowhour $nowmin $nowsec # Output: None # Return: None #-------------------------------------------------------------------- @@ -2560,6 +2540,39 @@ sub Save_History { if ($Debug) { debug(" Save_History (sectiontosave=$sectiontosave year=$year month=$month)",3); } my %keysinkeylist=(); + # Header + if ($sectiontosave eq "header") { + print HISTORYTMP "AWSTATS DATA FILE $VERSION\n"; + print HISTORYTMP "# If you remove this file, all statistics for date $year-$month will be lost/reset.\n"; + print HISTORYTMP "\n"; + print HISTORYTMP "# This section is not used yet\n"; + print HISTORYTMP "BEGIN_MAP 22\n"; + print HISTORYTMP "POS_GENERAL \n"; + print HISTORYTMP "POS_TIME \n"; + print HISTORYTMP "POS_VISITOR \n"; + print HISTORYTMP "POS_DAY \n"; + print HISTORYTMP "POS_LOGIN \n"; + print HISTORYTMP "POS_DOMAIN \n"; + print HISTORYTMP "POS_SESSION \n"; + print HISTORYTMP "POS_MSIEVER \n"; + print HISTORYTMP "POS_NSVER \n"; + print HISTORYTMP "POS_OS \n"; + print HISTORYTMP "POS_UNKNOWNREFERER \n"; + print HISTORYTMP "POS_UNKNOWNREFERERBROWSER \n"; + print HISTORYTMP "POS_ROBOT \n"; + print HISTORYTMP "POS_SIDER \n"; + print HISTORYTMP "POS_FILETYPES \n"; + print HISTORYTMP "POS_ORIGIN \n"; + print HISTORYTMP "POS_SEREFERRALS \n"; + print HISTORYTMP "POS_PAGEREFS \n"; + print HISTORYTMP "POS_SEARCHWORDS \n"; + print HISTORYTMP "POS_KEYWORDS \n"; + print HISTORYTMP "POS_ERRORS \n"; + print HISTORYTMP "POS_SIDER_404 \n"; + print HISTORYTMP "END_MAP\n"; + } + + # General if ($sectiontosave eq "general") { if ($LastUpdate < int("$nowyear$nowmonth$nowday$nowhour$nowmin$nowsec")) { $LastUpdate=int("$nowyear$nowmonth$nowday$nowhour$nowmin$nowsec"); } print HISTORYTMP "\n"; @@ -2660,8 +2673,8 @@ sub Save_History { } } foreach my $key (keys %_host_h) { - if ($key !~ /^\d+\.\d+\.\d+\.\d+$/) { $monthhostsknown++; } if ($keysinkeylist{$key}) { next; } + if ($key !~ /^\d+\.\d+\.\d+\.\d+$/) { $monthhostsknown++; } my $page=$_host_p{$key}||0; my $bytes=$_host_k{$key}||0; my $timehostl=$_host_l{$key}||0; @@ -3379,11 +3392,11 @@ sub Lock_Update { foreach my $key ($ENV{"TEMP"},$ENV{"TMP"},"/tmp","/") { my $newkey =$key; $newkey =~ s/[\\\/]$//; - if (-f "$newkey/$lock") { error("An AWStats update process seems to be already running for this config file. Try later.\nIf this is not true, remove manually lock file '$newkey/$lock'."); } + if (-f "$newkey/$lock") { error("An AWStats update process seems to be already running for this config file. Try later.\nIf this is not true, remove manually lock file '$newkey/$lock'.","","",1); } } # Set lock if ($Debug) { debug("Update lock file $DirLock/$lock is set"); } - open(LOCK,">$DirLock/$lock") || error("Error: Failed to create lock file $DirLock/$lock"); + open(LOCK,">$DirLock/$lock") || error("Error: Failed to create lock file $DirLock/$lock","","",1); print LOCK "AWStats update started by process $$ at $nowyear-$nowmonth-$nowday $nowhour:$nowmin:$nowsec\n"; close(LOCK); } @@ -3447,7 +3460,9 @@ if ($ENV{"GATEWAY_INTERFACE"}) { # Run from a browser } else { # Run from command line if ($ARGV[0] && $ARGV[0] eq "-h") { $SiteConfig = $ARGV[1]; } # For backward compatibility but useless - $QueryString=""; for (0..@ARGV-1) { + $QueryString=""; + for (0..@ARGV-1) { + if ($ARGV[$_] =~ /^(-|)migrate=/) { $MigrateStats=$ARGV[$_]; next; } if ($_ > 0) { $QueryString .= "&"; } my $NewLinkParams=$ARGV[$_]; $NewLinkParams =~ s/^-+//; $NewLinkParams =~ s/\s/%20/g; $QueryString .= "$NewLinkParams"; @@ -3488,6 +3503,23 @@ if ($Debug) { debug("QUERY_STRING=$QueryString",2); } +#------------------------------------------ +# MIGRATE PROCESS +#------------------------------------------ +if ($MigrateStats) { + if ($Debug) { debug("MigrateStats is $MigrateStats",2); } + $MigrateStats=~s/^(-|)migrate=//; + $MigrateStats=~/(.*)$PROG(\d{0,2})(\d\d)(\d\d\d\d)\./; + $DirData=$1; + $DayRequired=$2; + $YearRequired=$3; + $MonthRequired=$4; + print "Start migration for file '$MigrateStats'.\n"; + &Read_History_With_Update($MonthRequired,$YearRequired,1,1,"all"); + print "Migration for file '$MigrateStats' done.\n"; + exit 0; +} + # Force SiteConfig if AWSTATS_CONFIG is defined if ($ENV{"AWSTATS_CONFIG"}) { if ($Debug) { debug("AWSTATS_CONFIG parameter is defined '".$ENV{"AWSTATS_CONFIG"}."'. $PROG will use it as config value."); } @@ -3703,7 +3735,7 @@ if ($AllowAccessFromWebToFollowingIPAddresses && $ENV{"GATEWAY_INTERFACE"}) { error("Error: Access to statistics is not allowed from your IP Address ".$ENV{"REMOTE_ADDR"}); } } -if ($UpdateStats && (! $AllowToUpdateStatsFromBrowser) && $ENV{"GATEWAY_INTERFACE"}) { +if (($UpdateStats || $MigrateStats) && (! $AllowToUpdateStatsFromBrowser) && $ENV{"GATEWAY_INTERFACE"}) { error("Error: Update of statistics is not allowed from a browser."); }