home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / tsw / TSW_3.4.0.exe / Apache2 / cgi-bin / hashfiles.pm < prev    next >
Encoding:
Text File  |  2004-05-20  |  4.8 KB  |  131 lines

  1. #!/usr/bin/perl
  2. #-----------------------------------------------------------------------------
  3. # HashFiles AWStats plugin
  4. # Allows AWStats to read/save its data file as native hash files.
  5. # This increase read andwrite files operations.
  6. #-----------------------------------------------------------------------------
  7. # Perl Required Modules: Storable
  8. #-----------------------------------------------------------------------------
  9. # $Revision: 1.4 $ - $Author: joker $ - $Date: 2004/05/20 20:38:42 $
  10.  
  11.  
  12. # <-----
  13. # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES
  14. if (!eval ('require "Storable.pm";')) { return $@?"Error: $@":"Error: Need Perl module Storable"; }
  15. # ----->
  16. use strict;no strict "refs";
  17.  
  18.  
  19.  
  20. #-----------------------------------------------------------------------------
  21. # PLUGIN VARIABLES
  22. #-----------------------------------------------------------------------------
  23. # <-----
  24. # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN
  25. # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE.
  26. my $PluginNeedAWStatsVersion="5.1";
  27. my $PluginHooksFunctions="SearchFile LoadCache SaveHash";
  28. # ----->
  29.  
  30. # <-----
  31. # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE.
  32. use vars qw/
  33. $PluginHashfilesUpToDate
  34. /;
  35. # ----->
  36.  
  37.  
  38.  
  39. #-----------------------------------------------------------------------------
  40. # PLUGIN FUNCTION: Init_pluginname
  41. #-----------------------------------------------------------------------------
  42. sub Init_hashfiles {
  43.     my $InitParams=shift;
  44.  
  45.     # <-----
  46.     # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS
  47.     $PluginHashfilesUpToDate=1;
  48.     # ----->
  49.  
  50.     my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion);
  51.     return ($checkversion?$checkversion:"$PluginHooksFunctions");
  52. }
  53.  
  54.  
  55.  
  56. #-----------------------------------------------------------------------------
  57. # PLUGIN FUNTION: SearchFile_pluginname
  58. # UNIQUE: YES (Only one plugin using this function can be loaded)
  59. #-----------------------------------------------------------------------------
  60. sub SearchFile_hashfiles {
  61.     my ($searchdir,$dnscachefile,$filesuffix,$dnscacheext,$filetoload)=@_;    # Get params sent by ref
  62.     if (-f "${searchdir}$dnscachefile$filesuffix.hash") {
  63.         my ($tmp1a,$tmp2a,$tmp3a,$tmp4a,$tmp5a,$tmp6a,$tmp7a,$tmp8a,$tmp9a,$datesource,$tmp10a,$tmp11a,$tmp12a) = stat("${searchdir}$dnscachefile$filesuffix$dnscacheext");
  64.         my ($tmp1b,$tmp2b,$tmp3b,$tmp4b,$tmp5b,$tmp6b,$tmp7b,$tmp8b,$tmp9b,$datehash,$tmp10b,$tmp11b,$tmp12b) = stat("${searchdir}$dnscachefile$filesuffix.hash");
  65.         if ($datesource && $datehash < $datesource) {
  66.             $PluginHashfilesUpToDate=0;
  67.             debug(" Hash file not up to date. Will use source file $filetoload instead.");
  68.         }
  69.         else {
  70.             # There is no source file or there is and hash file is up to date. We can just load hash file
  71.             $filetoload="${searchdir}$dnscachefile$filesuffix.hash";
  72.         }
  73.     }
  74.     elsif ($filetoload) {
  75.         $PluginHashfilesUpToDate=0;
  76.         debug(" Hash file not found. Will use source file $filetoload instead.");
  77.     }
  78.     # Change calling params
  79.     $_[4]=$filetoload;
  80. }
  81.  
  82.  
  83. #-----------------------------------------------------------------------------
  84. # PLUGIN FUNCTION: LoadCache_pluginname
  85. # UNIQUE: YES (Only one plugin using this function can be loaded)
  86. #-----------------------------------------------------------------------------
  87. sub LoadCache_hashfiles {
  88.     my ($filetoload,$hashtoload)=@_;
  89.     if ($filetoload =~ /\.hash$/) {
  90.         # There is no source file or there is and hash file is up to date. We can just load hash file
  91.         eval('%$hashtoload = %{ retrieve("$filetoload") };');
  92.     }
  93. }
  94.  
  95.  
  96. #-----------------------------------------------------------------------------
  97. # PLUGIN FUNCTION: SaveHash_pluginname
  98. # UNIQUE: YES (Only one plugin using this function can be loaded)
  99. #-----------------------------------------------------------------------------
  100. sub SaveHash_hashfiles {
  101.     my ($filetosave,$hashtosave,$testifuptodate,$nbmaxofelemtosave,$nbofelemsaved)=@_;
  102.     if (! $testifuptodate || ! $PluginHashfilesUpToDate) {
  103.         $filetosave =~ s/(\.\w+)$//; $filetosave.=".hash";
  104.         debug(" Save data ".($nbmaxofelemtosave?"($nbmaxofelemtosave records max)":"(all records)")." into hash file $filetosave");
  105.         if (! $nbmaxofelemtosave || (scalar keys %$hashtosave <= $nbmaxofelemtosave)) {
  106.             # Save all hash array
  107.             eval('store(\%$hashtosave, "$filetosave");');
  108.             $_[4]=scalar keys %$hashtosave;
  109.         }
  110.         else {
  111.             debug(" We need to resize hash to save from ".(scalar keys %$hashtosave)." to $nbmaxofelemtosave");
  112.             # Save part of hash array
  113.             my $counter=0;
  114.             my %newhashtosave=();
  115.             foreach my $key (keys %$hashtosave) {
  116.                 $newhashtosave{$key}=$hashtosave->{$key};
  117.                 if (++$counter >= $nbmaxofelemtosave) { last; }
  118.             }
  119.             eval('store(\%newhashtosave, "$filetosave");');
  120.             $_[4]=scalar keys %newhashtosave;
  121.         }
  122.         $_[0]=$filetosave;
  123.     }
  124.     else {
  125.         $_[4]=0;
  126.     }
  127. }
  128.  
  129.  
  130. 1;    # Do not remove this line
  131.