From: eldy <>
Date: Thu, 25 May 2006 00:22:01 +0000 (+0000)
Subject: Allow to exclude several conf files
X-Git-Tag: AWSTATS_6_6_BETA~36
X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e279bb03c09b1983daa67d6a6807555161c407ed;p=thirdparty%2FAWStats.git
Allow to exclude several conf files
---
diff --git a/tools/awstats_updateall.pl b/tools/awstats_updateall.pl
index a1e63c2c..49ac841e 100644
--- a/tools/awstats_updateall.pl
+++ b/tools/awstats_updateall.pl
@@ -1,154 +1,162 @@
-#!/usr/bin/perl
-#------------------------------------------------------------------------------
-# Launch update process for all config files found in a particular directory.
-# See COPYING.TXT file about AWStats GNU General Public License.
-#------------------------------------------------------------------------------
-# $Revision$ - $Author$ - $Date$
-
-
-#------------------------------------------------------------------------------
-# Defines
-#------------------------------------------------------------------------------
-my $REVISION='$Revision$'; $REVISION =~ /\s(.*)\s/; $REVISION=$1;
-my $VERSION="1.0 (build $REVISION)";
-
-# Default value of DIRCONFIG
-my $DIRCONFIG = "/etc/awstats";
-
-my $Debug=0;
-
-my $Awstats='awstats.pl';
-
-my $AwstatsDir='';
-my $AwstatsProg='';
-
-
-
-#------------------------------------------------------------------------------
-# Functions
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# Function: Write error message and exit
-# Parameters: $message
-# Input: None
-# Output: None
-# Return: None
-#------------------------------------------------------------------------------
-sub error {
- print "Error: $_[0].\n";
- exit 1;
-}
-
-
-#------------------------------------------------------------------------------
-# Function: Write debug message and exit
-# Parameters: $string $level
-# Input: %HTMLOutput $Debug=required level $DEBUGFORCED=required level forced
-# Output: None
-# Return: None
-#------------------------------------------------------------------------------
-sub debug {
- my $level = $_[1] || 1;
- if ($Debug >= $level) {
- my $debugstring = $_[0];
- if ($ENV{"GATEWAY_INTERFACE"}) { $debugstring =~ s/^ /   /; $debugstring .= "
"; }
- print localtime(time)." - DEBUG $level - $debugstring\n";
- }
-}
-
-
-#------------------------------------------------------------------------------
-# MAIN
-#------------------------------------------------------------------------------
-
-# Change default value if options are used
-my $helpfound=0;my $nowfound=0;
-my %confexcluded=();
-for (0..@ARGV-1) {
- if ($ARGV[$_] =~ /^-*h/i) { $helpfound=1; last; }
- if ($ARGV[$_] =~ /^-*awstatsprog=(.*)/i) { $Awstats="$1"; next; }
- if ($ARGV[$_] =~ /^-*configdir=(.*)/i) { $DIRCONFIG="$1"; next; }
- if ($ARGV[$_] =~ /^-*excludeconf=(.*)/i) { $confexcluded{"$1"}=1; next; }
- if ($ARGV[$_] =~ /^-*debug=(\d+)/i) { $Debug=$1; next; }
- if ($ARGV[$_] =~ /^now/i) { $nowfound=1; next; }
-}
-
-# Show usage help
-my $DIR; my $PROG; my $Extension;
-($DIR=$0) =~ s/([^\/\\]*)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1;
-if (!$nowfound || $helpfound || ! @ARGV) {
- print "----- $PROG $VERSION (c) Laurent Destailleur -----\n";
- print "awstats_updateall launches update process for all AWStats config files (except\n";
- print "awstats.model.conf) found in a particular directory, so you can easily setup a\n";
- print "cron/scheduler job. The scanned directory is by default $DIRCONFIG.\n";
- print "\n";
- print "Usage: $PROG.$Extension now [options]\n";
- print "\n";
- print "Where options are:\n";
- print " -awstatsprog=pathtoawstatspl\n";
- print " -configdir=directorytoscan\n";
- print " -excludeconf=conftoexclude (Note: awstats.model.conf is always excluded)\n";
- print "\n";
- exit 0;
-}
-
-debug("Scan directory $DIRCONFIG");
-
-# Scan directory $DIRCONFIG
-opendir(DIR, $DIRCONFIG) || error("Can't scan directory $DIRCONFIG");
-my @filesindir = grep { /^awstats\.(.*)conf$/ } sort readdir(DIR);
-closedir(DIR);
-
-debug("List of files found :".join(",",@filesindir));
-
-# Build file list
-my @files=();
-foreach my $file (@filesindir) {
- if ($confexcluded{$file}) { next; } # Should be useless
- if ($file =~ /^awstats\.(.*)conf$/) {
- my $conf=$1; $conf =~ s/\.$//;
- if ($conf eq 'model') { next; }
- if ($confexcluded{$conf}) { next; }
- }
- push @files, $file;
-}
-
-debug("List of files qualified :".join(",",@files));
-
-# Run update process for each config file found
-if (@files) {
- # Check if AWSTATS prog is found
- my $AwstatsFound=0;
- if (-s "$Awstats") { $AwstatsFound=1; }
- elsif (-s "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl") {
- $Awstats="/usr/local/awstats/wwwroot/cgi-bin/awstats.pl";
- $AwstatsFound=1;
- }
- if (! $AwstatsFound) {
- error("Can't find AWStats program ('$Awstats').\nUse -awstatsprog option to solve this");
- exit 1;
- }
- # Define AwstatsDir and AwstatsProg
- ($AwstatsDir=$Awstats) =~ s/([^\/\\]+)$//; $AwstatsProg=$1;
- $AwstatsDir||='.'; $AwstatsDir =~ s/([^\/\\])[\\\/]+$/$1/;
- debug("AwstatsDir=$AwstatsDir");
- debug("AwstatsProg=$AwstatsProg");
-
- foreach (@files) {
- if ($_ =~ /^awstats\.(.*)conf$/) {
- my $domain = $1||"default"; $domain =~ s/\.$//;
- # Define command line
- my $command="\"$AwstatsDir/$AwstatsProg\" -update -config=$domain";
- $command.=" -configdir=\"$DIRCONFIG\"";
- # Run command line
- print "Running '$command' to update config $domain\n";
- my $output = `$command 2>&1`;
- print "$output\n";
- }
- }
-} else {
- print "No AWStats config file found in $DIRCONFIG\n";
-}
-
-0; # Do not remove this line
+#!/usr/bin/perl
+#------------------------------------------------------------------------------
+# Launch update process for all config files found in a particular directory.
+# See COPYING.TXT file about AWStats GNU General Public License.
+#------------------------------------------------------------------------------
+# $Revision$ - $Author$ - $Date$
+
+
+#------------------------------------------------------------------------------
+# Defines
+#------------------------------------------------------------------------------
+my $REVISION='$Revision$'; $REVISION =~ /\s(.*)\s/; $REVISION=$1;
+my $VERSION="1.0 (build $REVISION)";
+
+# Default value of DIRCONFIG
+my $DIRCONFIG = "/etc/awstats";
+
+my $Debug=0;
+
+my $Awstats='awstats.pl';
+
+my $AwstatsDir='';
+my $AwstatsProg='';
+
+
+
+#------------------------------------------------------------------------------
+# Functions
+#------------------------------------------------------------------------------
+
+#------------------------------------------------------------------------------
+# Function: Write error message and exit
+# Parameters: $message
+# Input: None
+# Output: None
+# Return: None
+#------------------------------------------------------------------------------
+sub error {
+ print "Error: $_[0].\n";
+ exit 1;
+}
+
+
+#------------------------------------------------------------------------------
+# Function: Write debug message and exit
+# Parameters: $string $level
+# Input: %HTMLOutput $Debug=required level $DEBUGFORCED=required level forced
+# Output: None
+# Return: None
+#------------------------------------------------------------------------------
+sub debug {
+ my $level = $_[1] || 1;
+ if ($Debug >= $level) {
+ my $debugstring = $_[0];
+ if ($ENV{"GATEWAY_INTERFACE"}) { $debugstring =~ s/^ /   /; $debugstring .= "
"; }
+ print localtime(time)." - DEBUG $level - $debugstring\n";
+ }
+}
+
+
+#------------------------------------------------------------------------------
+# MAIN
+#------------------------------------------------------------------------------
+
+# Change default value if options are used
+my $helpfound=0;my $nowfound=0;
+my %confexcluded=();
+for (0..@ARGV-1) {
+ if ($ARGV[$_] =~ /^-*h/i) { $helpfound=1; last; }
+ if ($ARGV[$_] =~ /^-*awstatsprog=(.*)/i) { $Awstats="$1"; next; }
+ if ($ARGV[$_] =~ /^-*configdir=(.*)/i) { $DIRCONFIG="$1"; next; }
+ if ($ARGV[$_] =~ /^-*excludeconf=(.*)/i) {
+ #try to get the different files to exclude
+ @conftoexclude = split(/,/, $1);
+ foreach (@conftoexclude) {
+ $confexcluded{"$_"}=1;
+ }
+ next;
+ }
+ if ($ARGV[$_] =~ /^-*debug=(\d+)/i) { $Debug=$1; next; }
+ if ($ARGV[$_] =~ /^now/i) { $nowfound=1; next; }
+}
+
+# Show usage help
+my $DIR; my $PROG; my $Extension;
+($DIR=$0) =~ s/([^\/\\]*)$//; ($PROG=$1) =~ s/\.([^\.]*)$//; $Extension=$1;
+if (!$nowfound || $helpfound || ! @ARGV) {
+ print "----- $PROG $VERSION (c) Laurent Destailleur -----\n";
+ print "awstats_updateall launches update process for all AWStats config files (except\n";
+ print "awstats.model.conf) found in a particular directory, so you can easily setup a\n";
+ print "cron/scheduler job. The scanned directory is by default $DIRCONFIG.\n";
+ print "\n";
+ print "Usage: $PROG.$Extension now [options]\n";
+ print "\n";
+ print "Where options are:\n";
+ print " -awstatsprog=pathtoawstatspl\n";
+ print " -configdir=directorytoscan\n";
+ print " -excludeconf=conftoexclude[,conftoexclude2,...] (Note: awstats.model.conf is always excluded)\n";
+ print "\n";
+ exit 0;
+}
+
+debug("Scan directory $DIRCONFIG");
+
+# Scan directory $DIRCONFIG
+opendir(DIR, $DIRCONFIG) || error("Can't scan directory $DIRCONFIG");
+my @filesindir = grep { /^awstats\.(.*)conf$/ } sort readdir(DIR);
+closedir(DIR);
+
+debug("List of files found :".join(",",@filesindir));
+
+# Build file list
+my @files=();
+foreach my $file (@filesindir) {
+ if ($confexcluded{$file}) { next; } # Should be useless
+ if ($file =~ /^awstats\.(.*)conf$/) {
+ my $conf=$1; $conf =~ s/\.$//;
+ if ($conf eq 'model') { next; }
+ if ($confexcluded{$conf}) { next; }
+ }
+ push @files, $file;
+}
+
+debug("List of files qualified :".join(",",@files));
+
+# Run update process for each config file found
+if (@files) {
+ # Check if AWSTATS prog is found
+ my $AwstatsFound=0;
+ if (-s "$Awstats") { $AwstatsFound=1; }
+ elsif (-s "/usr/local/awstats/wwwroot/cgi-bin/awstats.pl") {
+ $Awstats="/usr/local/awstats/wwwroot/cgi-bin/awstats.pl";
+ $AwstatsFound=1;
+ }
+ if (! $AwstatsFound) {
+ error("Can't find AWStats program ('$Awstats').\nUse -awstatsprog option to solve this");
+ exit 1;
+ }
+ # Define AwstatsDir and AwstatsProg
+ ($AwstatsDir=$Awstats) =~ s/([^\/\\]+)$//; $AwstatsProg=$1;
+ $AwstatsDir||='.'; $AwstatsDir =~ s/([^\/\\])[\\\/]+$/$1/;
+ debug("AwstatsDir=$AwstatsDir");
+ debug("AwstatsProg=$AwstatsProg");
+
+ foreach (@files) {
+ if ($_ =~ /^awstats\.(.*)conf$/) {
+ my $domain = $1||"default"; $domain =~ s/\.$//;
+ # Define command line
+ my $command="\"$AwstatsDir/$AwstatsProg\" -update -config=$domain";
+ $command.=" -configdir=\"$DIRCONFIG\"";
+ # Run command line
+ print "Running '$command' to update config $domain\n";
+ my $output = `$command 2>&1`;
+ print "$output\n";
+ }
+ }
+} else {
+ print "No AWStats config file found in $DIRCONFIG\n";
+}
+
+0; # Do not remove this line
+