Server IP : 195.201.23.43 / Your IP : 18.226.166.141 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/kdecoratie/cgi-bin/plugins/ |
Upload File : |
#!/usr/bin/perl #----------------------------------------------------------------------------- # HashFiles AWStats plugin # Allows AWStats to read/save its data file as native hash files. # This increase read andwrite files operations. #----------------------------------------------------------------------------- # Perl Required Modules: Storable #----------------------------------------------------------------------------- # <----- # ENTER HERE THE USE COMMAND FOR ALL REQUIRED PERL MODULES if (!eval ('require "Storable.pm";')) { return $@?"Error: $@":"Error: Need Perl module Storable"; } # -----> use strict;no strict "refs"; #----------------------------------------------------------------------------- # PLUGIN VARIABLES #----------------------------------------------------------------------------- # <----- # ENTER HERE THE MINIMUM AWSTATS VERSION REQUIRED BY YOUR PLUGIN # AND THE NAME OF ALL FUNCTIONS THE PLUGIN MANAGE. my $PluginNeedAWStatsVersion="5.1"; my $PluginHooksFunctions="SearchFile LoadCache SaveHash"; # -----> # <----- # IF YOUR PLUGIN NEED GLOBAL VARIABLES, THEY MUST BE DECLARED HERE. use vars qw/ $PluginHashfilesUpToDate /; # -----> #----------------------------------------------------------------------------- # PLUGIN FUNCTION: Init_pluginname #----------------------------------------------------------------------------- sub Init_hashfiles { my $InitParams=shift; # <----- # ENTER HERE CODE TO DO INIT PLUGIN ACTIONS $PluginHashfilesUpToDate=1; # -----> my $checkversion=&Check_Plugin_Version($PluginNeedAWStatsVersion); return ($checkversion?$checkversion:"$PluginHooksFunctions"); } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SearchFile_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) #----------------------------------------------------------------------------- sub SearchFile_hashfiles { my ($searchdir,$dnscachefile,$filesuffix,$dnscacheext,$filetoload)=@_; # Get params sent by ref if (-f "${searchdir}$dnscachefile$filesuffix.hash") { my ($tmp1a,$tmp2a,$tmp3a,$tmp4a,$tmp5a,$tmp6a,$tmp7a,$tmp8a,$tmp9a,$datesource,$tmp10a,$tmp11a,$tmp12a) = stat("${searchdir}$dnscachefile$filesuffix$dnscacheext"); my ($tmp1b,$tmp2b,$tmp3b,$tmp4b,$tmp5b,$tmp6b,$tmp7b,$tmp8b,$tmp9b,$datehash,$tmp10b,$tmp11b,$tmp12b) = stat("${searchdir}$dnscachefile$filesuffix.hash"); if ($datesource && $datehash < $datesource) { $PluginHashfilesUpToDate=0; debug(" Plugin hashfiles: Hash file not up to date. Will use source file $filetoload instead."); } else { # There is no source file or there is and hash file is up to date. We can just load hash file $filetoload="${searchdir}$dnscachefile$filesuffix.hash"; } } elsif ($filetoload) { $PluginHashfilesUpToDate=0; debug(" Plugin hashfiles: Hash file not found. Will use source file $filetoload instead."); } # Change calling params $_[4]=$filetoload; } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: LoadCache_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) #----------------------------------------------------------------------------- sub LoadCache_hashfiles { my ($filetoload,$hashtoload)=@_; if ($filetoload =~ /\.hash$/) { # There is no source file or there is and hash file is up to date. We can just load hash file eval('%$hashtoload = %{ Storable::retrieve("$filetoload") };') || warning("Warning: Error while retrieving hashfile: $@"); } } #----------------------------------------------------------------------------- # PLUGIN FUNCTION: SaveHash_pluginname # UNIQUE: YES (Only one plugin using this function can be loaded) #----------------------------------------------------------------------------- sub SaveHash_hashfiles { my ($filetosave,$hashtosave,$testifuptodate,$nbmaxofelemtosave,$nbofelemsaved)=@_; if (! $testifuptodate || ! $PluginHashfilesUpToDate) { $filetosave =~ s/(\.\w+)$//; $filetosave.=".hash"; debug(" Plugin hashfiles: Save data ".($nbmaxofelemtosave?"($nbmaxofelemtosave records max)":"(all records)")." into hash file $filetosave"); if (! $nbmaxofelemtosave || (scalar keys %$hashtosave <= $nbmaxofelemtosave)) { # Save all hash array unless ( eval('Storable::store(\%$hashtosave, "$filetosave");') ) { $_[4] = 0; warning("Warning: Error while storing hashfile: $@"); return; } $_[4]=scalar keys %$hashtosave; } else { debug(" Plugin hashfiles: We need to resize hash to save from ".(scalar keys %$hashtosave)." to $nbmaxofelemtosave"); # Save part of hash array my $counter=0; my %newhashtosave=(); foreach my $key (keys %$hashtosave) { $newhashtosave{$key}=$hashtosave->{$key}; if (++$counter >= $nbmaxofelemtosave) { last; } } unless ( eval('Storable::store(\%newhashtosave, "$filetosave");') ) { $_[4] = 0; warning("Warning: Error while storing hashfile: $@"); return; } $_[4]=scalar keys %newhashtosave; } $_[0]=$filetosave; } else { $_[4]=0; } } 1; # Do not remove this linePrivate