From: eldy <> Date: Mon, 24 May 2004 00:22:23 +0000 (+0000) Subject: Some change to support plugin that can add new update sections. X-Git-Tag: AWSTATS_6_2_BETA~38 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=03219f9473e71df485bbfd1276ac6463b06fe124;p=thirdparty%2FAWStats.git Some change to support plugin that can add new update sections. Fix bad html generated with buildpdf option. --- diff --git a/wwwroot/cgi-bin/awstats.pl b/wwwroot/cgi-bin/awstats.pl index fbc84f9a..e693a13b 100644 --- a/wwwroot/cgi-bin/awstats.pl +++ b/wwwroot/cgi-bin/awstats.pl @@ -22,7 +22,7 @@ use Socket; #------------------------------------------------------------------------------ use vars qw/ $REVISION $VERSION /; $REVISION='$Revision$'; $REVISION =~ /\s(.*)\s/; $REVISION=$1; -$VERSION="6.1 (build $REVISION)"; +$VERSION="6.2 (build $REVISION)"; # ----- Constants ----- use vars qw/ @@ -82,9 +82,10 @@ $pos_vh = $pos_host = $pos_logname = $pos_date = $pos_tz = $pos_method = $pos_ur $pos_referer = $pos_agent = $pos_query = $pos_gzipin = $pos_gzipout = $pos_compratio = -1; $pos_cluster = $pos_emails = $pos_emailr = $pos_hostr = -1; # ----- Plugins variable ----- -use vars qw/ %PluginsLoaded $PluginDir /; +use vars qw/ %PluginsLoaded $PluginDir $AtLeastOneSectionPlugin /; %PluginsLoaded=(); $PluginDir=''; +$AtLeastOneSectionPlugin=0; # ----- Time vars ----- use vars qw/ $starttime @@ -788,7 +789,7 @@ sub error { print "$LogFormat\n"; print (scalar keys %HTMLOutput?"$tagunfont${tagbr}${tagbr}\n":""); } - print "And this is a sample of records AWStats found in your log file (the record number $NbOfLinesForCorruptedLog in your log):\n"; + print "And this is an example of records AWStats found in your log file (the record number $NbOfLinesForCorruptedLog in your log):\n"; print (scalar keys %HTMLOutput?"
$tagfontgrey":""); print "$secondmessage"; print (scalar keys %HTMLOutput?"$tagunfont${tagbr}${tagbr}":""); @@ -1808,7 +1809,7 @@ sub Read_Plugins { foreach my $plugininfo (@PluginsToLoad) { my @loadplugin=split(/\s+/,$plugininfo,2); my $pluginfile=$loadplugin[0]; $pluginfile =~ s/\.pm$//i; - # Check if we plugin is not disabled + # Check if plugin is not disabled if ($NoLoadPlugin{$pluginfile} && $NoLoadPlugin{$pluginfile} > 0) { if ($Debug) { debug(" Plugin load for '$pluginfile' has been disabled from parameters"); } next; @@ -1859,9 +1860,9 @@ sub Read_Plugins { # Plugin load and init successfull foreach my $elem (split(/\s+/,$initret)) { # Some functions can only be plugged once - my @UniquePluginsFunctions=('GetCountryCodeByName','GetCountryCodeByAddr','ChangeTime','GetTimeZoneTitle','GetTime','SearchFile','LoadCache','SaveHash','ShowMenu'); + my @uniquefunc=('GetCountryCodeByName','GetCountryCodeByAddr','ChangeTime','GetTimeZoneTitle','GetTime','SearchFile','LoadCache','SaveHash','ShowMenu'); my $isuniquefunc=0; - foreach my $function (@UniquePluginsFunctions) { + foreach my $function (@uniquefunc) { if ("$elem" eq "$function") { # We try to load a 'unique' function, so we check and stop if already loaded foreach my $otherpluginname (keys %{$PluginsLoaded{"$elem"}}) { @@ -1876,6 +1877,7 @@ sub Read_Plugins { $PluginsLoaded{"$elem"}{"$pluginname"}=1; } else { $PluginsLoaded{"$elem"}{"$pluginname"}=1; } + if ("$elem" =~ /SectionInitHashArray/) { $AtLeastOneSectionPlugin=1; } } $PluginsLoaded{'init'}{"$pluginname"}=1; if ($Debug) { debug(" Plugin '$pluginname' now hooks functions '$initret'",1); } @@ -1894,7 +1896,7 @@ sub Read_Plugins { error("Plugin \"$pluginfile\" is not a valid plugin name."); } } - # In output, geo ip plugins were not loaded, so message changes can't be done in plugin init function + # In output mode, geo ip plugins are not loaded, so message changes are done here (can't be done in plugin init function) if ($PluginsLoaded{'init'}{'geoip'} || $PluginsLoaded{'init'}{'geoipfree'}) { $Message[17]=$Message[25]=$Message[148]; } } @@ -1930,6 +1932,7 @@ sub Read_History_With_TmpUpdate { my $order=(scalar keys %allsections)+1; foreach (keys %TrapInfosForHTTPErrorCodes) { $allsections{"sider_$_"}=$order++; } foreach (1..@ExtraName-1) { $allsections{"extra_$_"}=$order++; } + foreach (keys %{$PluginsLoaded{'SectionInitHashArray'}}) { $allsections{"plugin_$_"}=$order++; } my $withread=0; # Variable used to read old format history files @@ -1980,6 +1983,9 @@ sub Read_History_With_TmpUpdate { foreach (1..@ExtraName-1) { if ($UpdateStats || $MigrateStats || ($HTMLOutput{'main'} && $ExtraStatTypes[$_]) || $HTMLOutput{"extra$_"}) { $SectionsToLoad{"extra_$_"}=$order++; } } + foreach (keys %{$PluginsLoaded{'SectionInitHashArray'}}) { + if ($UpdateStats || $MigrateStats || $HTMLOutput{"plugin_$_"}) { $SectionsToLoad{"plugin_$_"}=$order++; } + } } else { # Load only required sections my $order=1; @@ -3202,9 +3208,45 @@ sub Read_History_With_TmpUpdate { } } + # BEGIN_PLUGINS + if ($AtLeastOneSectionPlugin && $field[0] =~ /^BEGIN_PLUGIN_(\w)$/i) { + my $pluginname=$1; + my $found=0; + foreach (keys %{$PluginsLoaded{'SectionInitHashArray'}}) { + if ($pluginname eq $_) { + # The plugin for this section was loaded + $found=1; + my $issectiontoload=$SectionsToLoad{"plugin_$pluginname"}; + my $function="SectionReadHistory_$pluginname(\$issectiontoload,\$xmlold,\$xmleb,\\\@field)"; + eval("$function"); + + delete $SectionsToLoad{"plugin_$pluginname"}; + if ($SectionsToSave{"plugin_$pluginname"}) { + Save_History("plugin_$pluginname",$year,$month); delete $SectionsToSave{"plugin_$pluginname"}; + if ($withpurge) { + my $function="SectionInitHashArray_$pluginname()"; + eval("$function"); + } + } + last; + } + } + if (! scalar %SectionsToLoad) { debug(" Stop reading history file. Got all we need."); last; } + # The plugin for this section was not loaded + if (! $found) { + do { + $_=; + chomp $_; s/\r//; + @field=split(/\s+/,($xmlold?CleanFromTags($_):$_)); $countlines++; + } + until ($field[0] eq "END_PLUGIN_$pluginname" || $field[0] eq "${xmleb}END_PLUGIN_$pluginname" || ! $_); + } + next; + } + # For backward compatibility (ORIGIN section was "HitFromx" in old history files) if ($SectionsToLoad{'origin'}) { - if ($field[0] eq 'HitFrom0' ) { $_from_p[0]+=0; $_from_h[0]+=$field[1]; next; } + if ($field[0] eq 'HitFrom0') { $_from_p[0]+=0; $_from_h[0]+=$field[1]; next; } if ($field[0] eq 'HitFrom1') { $_from_p[1]+=0; $_from_h[1]+=$field[1]; next; } if ($field[0] eq 'HitFrom2') { $_from_p[2]+=0; $_from_h[2]+=$field[1]; next; } if ($field[0] eq 'HitFrom3') { $_from_p[3]+=0; $_from_h[3]+=$field[1]; next; } @@ -3328,7 +3370,7 @@ sub Save_History { print HISTORYTMP "# direct I/O access. If you made changes somewhere in this file, you should\n"; print HISTORYTMP "# also remove completely the MAP section (AWStats will rewrite it at next\n"; print HISTORYTMP "# update).\n"; - print HISTORYTMP "${xmlbb}BEGIN_MAP${xmlbs}".(26+(scalar keys %TrapInfosForHTTPErrorCodes)+(scalar @ExtraName?scalar @ExtraName-1:0))."${xmlbe}\n"; + print HISTORYTMP "${xmlbb}BEGIN_MAP${xmlbs}".(26+(scalar keys %TrapInfosForHTTPErrorCodes)+(scalar @ExtraName?scalar @ExtraName-1:0)+(scalar keys %{$PluginsLoaded{'SectionInitHashArray'}}))."${xmlbe}\n"; print HISTORYTMP "${xmlrb}POS_GENERAL${xmlrs}";$PosInFile{"general"}=tell HISTORYTMP;print HISTORYTMP "$spacebar${xmlre}\n"; # When print HISTORYTMP "${xmlrb}POS_TIME${xmlrs}";$PosInFile{"time"}=tell HISTORYTMP;print HISTORYTMP "$spacebar${xmlre}\n"; @@ -3366,6 +3408,9 @@ sub Save_History { foreach (1..@ExtraName-1) { print HISTORYTMP "${xmlrb}POS_EXTRA_$_${xmlrs}";$PosInFile{"extra_$_"}=tell HISTORYTMP;print HISTORYTMP "$spacebar${xmlre}\n"; } + foreach (keys %{$PluginsLoaded{'SectionInitHashArray'}}) { + print HISTORYTMP "${xmlrb}POS_PLUGIN_$_${xmlrs}";$PosInFile{"plugin_$_"}=tell HISTORYTMP;print HISTORYTMP "$spacebar${xmlre}\n"; + } print HISTORYTMP "${xmleb}END_MAP${xmlee}\n"; } @@ -3889,6 +3934,9 @@ sub Save_History { } } + # TODO Save + + %keysinkeylist=(); } @@ -4108,6 +4156,10 @@ sub Init_HashArray { %{'_section_' . $ix . '_h'} = %{'_section_' . $ix . '_o'} = %{'_section_' . $ix . '_k'} = %{'_section_' . $ix . '_l'} = %{'_section_' . $ix . '_p'} = (); } + foreach my $pluginname (keys %{$PluginsLoaded{'SectionInitHashArray'}}) { + my $function="SectionInitHashArray_$pluginname()"; + eval("$function"); + } } #------------------------------------------------------------------------------ @@ -7177,7 +7229,7 @@ if (scalar keys %HTMLOutput) { } print "\n"; } - if ($QueryString !~ /buidpdf/i) { + if ($QueryString !~ /buildpdf/i) { print "\n"; print "\n"; }