From 846a6c9606c180815f40e5b91fdb7135ae3f81fe Mon Sep 17 00:00:00 2001 From: Ken Neighbors Date: Thu, 29 Apr 2010 14:12:49 -0700 Subject: Add patch to report error when config file exists but cannot be read. Closes: #572353, thanks to Ken Neighbors. --- debian/patches/1015_config_read_error.patch | 26 ++++++++++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 27 insertions(+), 0 deletions(-) create mode 100644 debian/patches/1015_config_read_error.patch diff --git a/debian/patches/1015_config_read_error.patch b/debian/patches/1015_config_read_error.patch new file mode 100644 index 0000000..be08c20 --- /dev/null +++ b/debian/patches/1015_config_read_error.patch @@ -0,0 +1,26 @@ +Description: Report error when config file exists but cannot be read. +Author: Ken Neighbors +Bug-Debian: http://bugs.debian.org/572353 + +Index: awstats/wwwroot/cgi-bin/awstats.pl +=================================================================== +--- awstats.orig/wwwroot/cgi-bin/awstats.pl 2007-07-07 11:00:06.000000000 +0000 ++++ awstats/wwwroot/cgi-bin/awstats.pl 2010-04-29 20:34:08.000000000 +0000 +@@ -1742,11 +1742,17 @@ + $FileSuffix = ".$SiteConfig"; + last; + } ++ elsif ( -e "$searchdir$PROG.$SiteConfig.conf" ) { ++ error("Couldn't open config file \"$searchdir$PROG.$SiteConfig.conf\": $!" ); ++ } + if ( open( CONFIG, "$searchdir$PROG.conf" ) ) { + $FileConfig = "$searchdir$PROG.conf"; + $FileSuffix = ''; + last; + } ++ elsif ( -e "$searchdir$PROG.conf" ) { ++ error("Couldn't open config file \"$searchdir$PROG.conf\": $!" ); ++ } + } + if ( !$FileConfig ) { + error( diff --git a/debian/patches/series b/debian/patches/series index 88bb06f..ec29f1c 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -10,4 +10,5 @@ 1012_ipv6_strip_trailing_dot.patch 1013_yahoo_search.patch 1014_websec_robot.patch +1015_config_read_error.patch 2001_awstatsprog_path.patch -- 1.5.6.5 From 641feeb2ac32ef72c4faf4546154b96e3af488b8 Mon Sep 17 00:00:00 2001 From: Ken Neighbors Date: Thu, 29 Apr 2010 14:01:39 -0700 Subject: Add patch to fix truncated nested included config files. Closes: #575545, thanks to Ken Neighbors. --- debian/patches/1016_nested_includes.patch | 28 ++++++++++++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 29 insertions(+), 0 deletions(-) create mode 100644 debian/patches/1016_nested_includes.patch diff --git a/debian/patches/1016_nested_includes.patch b/debian/patches/1016_nested_includes.patch new file mode 100644 index 0000000..80449f9 --- /dev/null +++ b/debian/patches/1016_nested_includes.patch @@ -0,0 +1,28 @@ +Description: Fix bug with truncated nested included config files. +Author: Ken Neighbors +Bug-Debian: http://bugs.debian.org/575545 + +Index: awstats/wwwroot/cgi-bin/awstats.pl +=================================================================== +--- awstats.orig/wwwroot/cgi-bin/awstats.pl 2007-07-07 11:00:06.000000000 +0000 ++++ awstats/wwwroot/cgi-bin/awstats.pl 2010-03-26 16:54:32.000000000 +0000 +@@ -1220,6 +1220,7 @@ + ); + next; + } ++ local( *CONFIG_INCLUDE ); + if ( open( CONFIG_INCLUDE, $includeFile ) ) { + &Parse_Config( *CONFIG_INCLUDE, $level + 1, $includeFile ); + close(CONFIG_INCLUDE); +Index: awstats/tools/awstats_buildstaticpages.pl +=================================================================== +--- awstats.orig/tools/awstats_buildstaticpages.pl 2007-07-07 10:57:20.000000000 +0000 ++++ awstats/tools/awstats_buildstaticpages.pl 2010-03-26 19:11:57.000000000 +0000 +@@ -189,6 +189,7 @@ + warning("Warning: Perl versions before 5.6 cannot handle nested includes"); + next; + } ++ local( *CONFIG_INCLUDE ); + if ( open( CONFIG_INCLUDE, $includeFile ) ) { + &Parse_Config( *CONFIG_INCLUDE , $level+1, $includeFile); + close( CONFIG_INCLUDE ); diff --git a/debian/patches/series b/debian/patches/series index 88bb06f..00ddf4e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -10,4 +10,5 @@ 1012_ipv6_strip_trailing_dot.patch 1013_yahoo_search.patch 1014_websec_robot.patch +1016_nested_includes.patch 2001_awstatsprog_path.patch -- 1.5.6.5 From cf0fa60b4d7279d6dc3deae071a0ff9555823e40 Mon Sep 17 00:00:00 2001 From: Ken Neighbors Date: Wed, 28 Apr 2010 09:54:58 -0700 Subject: Show error messages from cron jobs (update.sh and buildstatic.sh). --- debian/buildstatic.sh | 12 +++++++++--- debian/update.sh | 9 +++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/debian/buildstatic.sh b/debian/buildstatic.sh index 91dd4d9..9f41cbc 100755 --- a/debian/buildstatic.sh +++ b/debian/buildstatic.sh @@ -16,6 +16,7 @@ BUILDSTATICPAGES=/usr/share/awstats/tools/awstats_buildstaticpages.pl cd /etc/awstats +TMPFILE=`mktemp /tmp/awstats.XXXXXXXXXX` for c in awstats \ `/bin/ls -1 awstats.*.conf 2>/dev/null | \ /bin/sed 's/^awstats\.\(.*\)\.conf/\1/'` @@ -24,11 +25,16 @@ do m=`date +%m` mkdir -p /var/cache/awstats/$c/$Y/$m/ AL=${AWSTATS_LANG:-en} - $BUILDSTATICPAGES \ + if ! $BUILDSTATICPAGES \ -config=$c \ -year=$Y \ -month=$m \ -lang=$AL \ -staticlinksext=${AL}.html \ - -dir=/var/cache/awstats/$c/$Y/$m/ -done >/dev/null + -dir=/var/cache/awstats/$c/$Y/$m/ >$TMPFILE 2>&1 + then + # an error occurred + cat $TMPFILE >&2 + fi +done +rm -f $TMPFILE diff --git a/debian/update.sh b/debian/update.sh index bd49d5d..11a8e03 100755 --- a/debian/update.sh +++ b/debian/update.sh @@ -14,9 +14,14 @@ AWSTATS=/usr/lib/cgi-bin/awstats.pl cd /etc/awstats +TMPFILE=`mktemp /tmp/awstats.XXXXXXXXXX` for c in awstats \ `/bin/ls -1 awstats.*.conf 2>/dev/null | \ /bin/sed 's/^awstats\.\(.*\)\.conf/\1/'` do - $AWSTATS -config=$c -update -done >/dev/null + if ! $AWSTATS -config=$c -update >$TMPFILE 2>&1; then + # an error occurred + cat $TMPFILE >&2 + fi +done +rm -f $TMPFILE -- 1.5.6.5 From 3492ee4e32a1dd2cafa982c6603b7f8afe14564d Mon Sep 17 00:00:00 2001 From: Ken Neighbors Date: Wed, 28 Apr 2010 22:31:40 -0700 Subject: Add option to disable nightly generation of static html reports. --- debian/README.Debian | 1 + debian/buildstatic.sh | 5 +++++ debian/default/awstats | 4 ++++ 3 files changed, 10 insertions(+), 0 deletions(-) diff --git a/debian/README.Debian b/debian/README.Debian index d5a9a1e..ed8b69f 100644 --- a/debian/README.Debian +++ b/debian/README.Debian @@ -8,6 +8,7 @@ Do the following for a simple setup of a single website with Apache 2.x: * Edit /etc/logrotate.d/apache2 to permit www-data access to logfiles * copy /usr/share/doc/awstats/examples/apache.conf to /etc/apache2/conf.d/ + * edit /etc/default/awstats to enable nightly build of static html reports The above is _NOT_ supported or recommended! Please read the rest of this document instead... diff --git a/debian/buildstatic.sh b/debian/buildstatic.sh index 9f41cbc..ca09cc7 100755 --- a/debian/buildstatic.sh +++ b/debian/buildstatic.sh @@ -14,6 +14,11 @@ BUILDSTATICPAGES=/usr/share/awstats/tools/awstats_buildstaticpages.pl [ -f $AWSTATS -a -f $BUILDSTATICPAGES ] || exit 1 [ -r "$DEFAULT" ] && . "$DEFAULT" +ENABLE=${AWSTATS_ENABLE_BUILDSTATICPAGES:-no} +if [ "$ENABLE" != "yes" ]; then + exit 0 +fi + cd /etc/awstats TMPFILE=`mktemp /tmp/awstats.XXXXXXXXXX` diff --git a/debian/default/awstats b/debian/default/awstats index 3785ea3..d8830cc 100644 --- a/debian/default/awstats +++ b/debian/default/awstats @@ -1,5 +1,9 @@ # AWStats configuration options +# This variable controls whether to create static html reports every +# night in /var/cache/awstats/. Set to "yes" or "no". +AWSTATS_ENABLE_BUILDSTATICPAGES="no" + # This variable control the language of all static html reports. Set # one to appropriate two-letter language code (default to en). #AWSTATS_LANG=ru -- 1.5.6.5 From 31217b14bb2ca6b06797ee26adf6957e55b445dd Mon Sep 17 00:00:00 2001 From: Ken Neighbors Date: Wed, 28 Apr 2010 22:34:27 -0700 Subject: Use "nice" to lower the priority of the AWStats processes when updating databases and generating static html reports from cron. --- debian/buildstatic.sh | 3 ++- debian/default/awstats | 5 +++++ debian/update.sh | 4 +++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/debian/buildstatic.sh b/debian/buildstatic.sh index ca09cc7..8af4c83 100755 --- a/debian/buildstatic.sh +++ b/debian/buildstatic.sh @@ -14,6 +14,7 @@ BUILDSTATICPAGES=/usr/share/awstats/tools/awstats_buildstaticpages.pl [ -f $AWSTATS -a -f $BUILDSTATICPAGES ] || exit 1 [ -r "$DEFAULT" ] && . "$DEFAULT" +NICE=${AWSTATS_NICE:-10} ENABLE=${AWSTATS_ENABLE_BUILDSTATICPAGES:-no} if [ "$ENABLE" != "yes" ]; then exit 0 @@ -30,7 +31,7 @@ do m=`date +%m` mkdir -p /var/cache/awstats/$c/$Y/$m/ AL=${AWSTATS_LANG:-en} - if ! $BUILDSTATICPAGES \ + if ! nice -n $NICE $BUILDSTATICPAGES \ -config=$c \ -year=$Y \ -month=$m \ diff --git a/debian/default/awstats b/debian/default/awstats index d8830cc..ac8c320 100644 --- a/debian/default/awstats +++ b/debian/default/awstats @@ -1,5 +1,10 @@ # AWStats configuration options +# This variable controls the scheduling priority for updating AWStats +# datafiles and for generating static html reports. Normal priority +# is 0 and a lower priority is 10. See "man nice" for more info. +AWSTATS_NICE=10 + # This variable controls whether to create static html reports every # night in /var/cache/awstats/. Set to "yes" or "no". AWSTATS_ENABLE_BUILDSTATICPAGES="no" diff --git a/debian/update.sh b/debian/update.sh index 11a8e03..2dcf647 100755 --- a/debian/update.sh +++ b/debian/update.sh @@ -11,6 +11,8 @@ DEFAULT=/etc/default/awstats AWSTATS=/usr/lib/cgi-bin/awstats.pl [ -f $AWSTATS ] || exit 1 +[ -r "$DEFAULT" ] && . "$DEFAULT" +NICE=${AWSTATS_NICE:-10} cd /etc/awstats @@ -19,7 +21,7 @@ for c in awstats \ `/bin/ls -1 awstats.*.conf 2>/dev/null | \ /bin/sed 's/^awstats\.\(.*\)\.conf/\1/'` do - if ! $AWSTATS -config=$c -update >$TMPFILE 2>&1; then + if ! nice -n $NICE $AWSTATS -config=$c -update >$TMPFILE 2>&1; then # an error occurred cat $TMPFILE >&2 fi -- 1.5.6.5 From 3889a9f7a8dd63ff6c17d169d388c8c131a6a805 Mon Sep 17 00:00:00 2001 From: Ken Neighbors Date: Tue, 27 Apr 2010 14:48:25 -0700 Subject: Do not use implied default config file /etc/awstats/awstats.conf but instead require sysadmin to install one or more explicit config file(s) so that update.sh and buildstatic.sh will work for either single-site or multi-site installations. This fixes the problem where awstats.pl complains about undefined SiteDomain when using separate config files as described in README.Debian for multiple stats. --- debian/README.Debian | 66 +++++++++++++-------------------- debian/buildstatic.sh | 3 +- debian/examples/awstats.default.conf | 35 ++++++++++++++++++ debian/rules | 2 +- debian/update.sh | 3 +- 5 files changed, 64 insertions(+), 45 deletions(-) create mode 100644 debian/examples/awstats.default.conf diff --git a/debian/README.Debian b/debian/README.Debian index ed8b69f..b3ea45b 100644 --- a/debian/README.Debian +++ b/debian/README.Debian @@ -8,6 +8,7 @@ Do the following for a simple setup of a single website with Apache 2.x: * Edit /etc/logrotate.d/apache2 to permit www-data access to logfiles * copy /usr/share/doc/awstats/examples/apache.conf to /etc/apache2/conf.d/ + * copy /usr/share/doc/awstats/examples/awstats.default.conf to /etc/awstats/ * edit /etc/default/awstats to enable nightly build of static html reports The above is _NOT_ supported or recommended! Please read the rest of this @@ -68,52 +69,37 @@ symlink from /var/www/awstats-icon to /usr/share/awstats/icon/. Multiple stats -------------- -To handle multiple stats (eg. using VirtualHosts in Apache) you -should... - - 1) Place all configs in /etc/awstats. - - 2) Name the configs "awstats." + whatever you want - ".conf" (eg. - awstats.example.com.conf"). But avoid "awstats.awstats.conf. - - To retain use of a common config file containing defaults for all - of your sites, consider a scheme such as the following: - - Make a bunch of awstats.[site_name_here].conf files, and have - the first line include the parent awstats.conf file (which by - default also includes awstats.conf.local). The remainder of the - file should have your site-specific configuration settings, which - override the defaults specified in awstats.conf and - awstats.conf.local. - - Here is an example of an awstats.example.com.conf file (of course, - tailor the file for your own configuration): - - Include "/etc/awstats/awstats.conf" +To handle multiple stats (for example, using VirtualHosts in Apache) +you should place all your configuration files under /etc/awstats/. +Name the files "awstats." + whatever you want + ".conf" (for example, +"awstats.example.com.conf"). But avoid "awstats.awstats.conf". + +To retain use of a common config file containing defaults for all of +your sites, consider a scheme such as the following: + + Make a bunch of awstats.[site_name_here].conf files, and have the + first line include the parent awstats.conf file (which by default + also includes awstats.conf.local). The remainder of the file should + have your site-specific configuration settings, which override the + defaults specified in awstats.conf and awstats.conf.local. + + Here is an example of an awstats.example.com.conf file (of course, + tailor the file for your own configuration): + + Include "awstats.conf" SiteDomain="example.com" HostAliases="example.com www.example.com" DirData="/var/lib/awstats/example.com" LogFile="/var/log/apache2/example.com_access_log" - This way you can leave awstats.conf alone, and put your - server-specific settings into awstats.conf.local, and your - site-specific settings into each awstats.[site_name_here].conf - file. - - Note, that awstats package cannot safely handle upgrades to - locally added config files -- if config options change then the - main file is updated (with warnings if edited locally) but extra - config files are silently ignored and possibly broken. - - 3) Run awstats.pl with each config one by one (have a look at the - scripts awstats-update and awstats_updateall.pl in - /usr/share/doc/awstats/examples/). - - 4) Edit /etc/cron.d/awstats for each site. Possibly a line like this - for each site: + This way you can leave awstats.conf alone, and put your + server-specific settings into awstats.conf.local, and your + site-specific settings into each awstats.[site_name_here].conf file. - 20 2 * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl ] && \ - /usr/lib/cgi-bin/awstats.pl -config=example.com -update >/dev/null +Note that the awstats package cannot safely handle upgrades to locally +added config files -- if config options change then the main file is +updated (with warnings if edited locally), but extra config files are +silently ignored and possibly broken. Browser and referer stats are missing diff --git a/debian/buildstatic.sh b/debian/buildstatic.sh index 8af4c83..a0ec26a 100755 --- a/debian/buildstatic.sh +++ b/debian/buildstatic.sh @@ -23,8 +23,7 @@ fi cd /etc/awstats TMPFILE=`mktemp /tmp/awstats.XXXXXXXXXX` -for c in awstats \ - `/bin/ls -1 awstats.*.conf 2>/dev/null | \ +for c in `/bin/ls -1 awstats.*.conf 2>/dev/null | \ /bin/sed 's/^awstats\.\(.*\)\.conf/\1/'` do Y=`date +%Y` diff --git a/debian/examples/awstats.default.conf b/debian/examples/awstats.default.conf new file mode 100644 index 0000000..d63661d --- /dev/null +++ b/debian/examples/awstats.default.conf @@ -0,0 +1,35 @@ +# This is a sample site-specific configuration file for AWStats. You +# can copy it into /etc/awstats/ and rename it according to your site +# name. Also change the SiteDomain parameter below to your site name +# and add any additional configuration parameters that you wish to +# override (see /etc/awstats/awstats.conf for a list of parameters). + +# You may create several copies of this file with different names for +# multiple virtual hosts. To set defaults for all of your sites, it +# is recommended that you place your changes in +# /etc/awstats/awstats.conf.local and leave awstats.conf as it is. + +# Note that when a variable is defined both in a config file and in an +# included file, AWStats will use the last value read for parameters that +# contains one value and AWStats will concat all values from both files for +# parameters that are lists of values. +# +Include "/etc/awstats/awstats.conf" + +# "SiteDomain" must contain the main domain name, or the main intranet web +# server name, used to reach the web site. +# If you share the same log file for several virtual web servers, this +# parameter is used to tell AWStats to filter record that contains records for +# this virtual host name only (So check that this virtual hostname can be +# found in your log file and use a personalized log format that include the +# %virtualname tag). +# But for multi hosting a better solution is to have one log file for each +# virtual web server. In this case, this parameter is only used to generate +# full URL's links when ShowLinksOnUrl option is set to 1. +# If analyzing mail log, enter here the domain name of mail server. +# Example: "myintranetserver" +# Example: "www.domain.com" +# Example: "ftp.domain.com" +# Example: "domain.com" +# +SiteDomain="localhost" diff --git a/debian/rules b/debian/rules index a21daa3..b691154 100755 --- a/debian/rules +++ b/debian/rules @@ -34,7 +34,7 @@ DEB_INSTALL_DOCS_ALL = README.TXT awstats_example_scripts = $(filter-out %/awstats_buildstaticpages.pl,$(wildcard tools/*.pl)) $(wildcard debian/examples/*.sh) -DEB_INSTALL_EXAMPLES_awstats = $(awstats_example_scripts) debian/examples/apache.conf wwwroot/cgi-bin/awstats.model.conf wwwroot/cgi-bin/plugins/example/* wwwroot/css wwwroot/js tools/xslt +DEB_INSTALL_EXAMPLES_awstats = $(awstats_example_scripts) debian/examples/awstats.default.conf debian/examples/apache.conf wwwroot/cgi-bin/awstats.model.conf wwwroot/cgi-bin/plugins/example/* wwwroot/css wwwroot/js tools/xslt DEB_COMPRESS_EXCLUDE = $(notdir $(awstats_example_scripts)) awstats.ico JAVA_HOME = /usr/lib/jvm/default-java diff --git a/debian/update.sh b/debian/update.sh index 2dcf647..904f59b 100755 --- a/debian/update.sh +++ b/debian/update.sh @@ -17,8 +17,7 @@ NICE=${AWSTATS_NICE:-10} cd /etc/awstats TMPFILE=`mktemp /tmp/awstats.XXXXXXXXXX` -for c in awstats \ - `/bin/ls -1 awstats.*.conf 2>/dev/null | \ +for c in `/bin/ls -1 awstats.*.conf 2>/dev/null | \ /bin/sed 's/^awstats\.\(.*\)\.conf/\1/'` do if ! nice -n $NICE $AWSTATS -config=$c -update >$TMPFILE 2>&1; then -- 1.5.6.5 From 9ec6cd3775c74ec57ab2474b6a347b05fbe88f98 Mon Sep 17 00:00:00 2001 From: Ken Neighbors Date: Tue, 27 Apr 2010 15:05:12 -0700 Subject: Improve documentation of logfile permissions and suggest EnableLockForUpdate=1. --- debian/README.Debian | 31 ++++++++++++++++++++++--------- 1 files changed, 22 insertions(+), 9 deletions(-) diff --git a/debian/README.Debian b/debian/README.Debian index b3ea45b..94fff06 100644 --- a/debian/README.Debian +++ b/debian/README.Debian @@ -7,16 +7,16 @@ Quick'n'dirty setup Do the following for a simple setup of a single website with Apache 2.x: * Edit /etc/logrotate.d/apache2 to permit www-data access to logfiles - * copy /usr/share/doc/awstats/examples/apache.conf to /etc/apache2/conf.d/ - * copy /usr/share/doc/awstats/examples/awstats.default.conf to /etc/awstats/ - * edit /etc/default/awstats to enable nightly build of static html reports + * Copy /usr/share/doc/awstats/examples/apache.conf to /etc/apache2/conf.d/ + * Copy /usr/share/doc/awstats/examples/awstats.default.conf to /etc/awstats/ + * Edit /etc/default/awstats to enable nightly build of static html reports The above is _NOT_ supported or recommended! Please read the rest of this document instead... -No stats are generated ----------------------- +No stats are generated due to logfile permissions +------------------------------------------------- As AWStats is used both as a CGI-script and offline, it is by default run as uid=www-data in cron jobs so that generated files are accessible from CGI as @@ -24,8 +24,10 @@ well. By default Apache stores (since version 1.3.22-1) logfiles with uid=root and gid=adm, so you need to either... - 1) Change the rights of the logfiles in /etc/logrotate.d/apache2 so that - www-data has at least read access. + 1) Change the rights of the logfiles so that www-data has at least read + access. For example: + change line in /etc/logrotate.d/apache2 to: "create 644 root adm" + change permissions of existing files: chmod 644 /var/log/apache2/*.log 2) As 1) but change to a specific user, and use the suEXEC feature of Apache to run as same user (and either change the right of /var/lib/awstats as @@ -47,8 +49,19 @@ By default AWStats scans logfiles each 10 minutes. When Apache (and other webservers) rotate their logfiles, the last entries in the old logfile may not have been read by AWStats. -Make sure to run AWStats right _before_ web logs are rotated (add a -"prerotate" in /etc/logrotate.d/apache2 for Apache). +Make sure to run AWStats right _before_ web logs are rotated. For +example, insert the following lines in /etc/logrotate.d/apache2: + + prerotate + if [ -x /usr/share/awstats/tools/update.sh ]; then + su - -c /usr/share/awstats/tools/update.sh www-data + fi + endscript + +Also consider enabling lock files in /etc/awstats/awstats.conf.local +with EnableLockForUpdate=1 so that only one AWStats update process is +running at a time. This will reduce system resources especially if +the AWStats update process takes longer than 10 minutes to complete. The icons are missing -- 1.5.6.5 From cf333f189d573132288370e4e9d0b5fdb66eb3ff Mon Sep 17 00:00:00 2001 From: Ken Neighbors Date: Tue, 27 Apr 2010 15:28:21 -0700 Subject: Cosmetic improvements to cron scripts (update.sh and buildstatic.sh). --- debian/buildstatic.sh | 32 ++++++++++++++++++-------------- debian/update.sh | 14 ++++++++------ 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/debian/buildstatic.sh b/debian/buildstatic.sh index a0ec26a..0e41700 100755 --- a/debian/buildstatic.sh +++ b/debian/buildstatic.sh @@ -1,6 +1,6 @@ #!/bin/sh ## -## buildstatic.sh, written by Sergey B Kirpichev +## buildstatic.sh, written by Sergey B Kirpichev ## ## Build all static html reports from AWStats data (Debian specific) ## @@ -11,31 +11,35 @@ DEFAULT=/etc/default/awstats AWSTATS=/usr/lib/cgi-bin/awstats.pl BUILDSTATICPAGES=/usr/share/awstats/tools/awstats_buildstaticpages.pl +# Set defaults. +AWSTATS_NICE=10 +AWSTATS_ENABLE_BUILDSTATICPAGES="no" +AWSTATS_LANG="en" + [ -f $AWSTATS -a -f $BUILDSTATICPAGES ] || exit 1 [ -r "$DEFAULT" ] && . "$DEFAULT" -NICE=${AWSTATS_NICE:-10} -ENABLE=${AWSTATS_ENABLE_BUILDSTATICPAGES:-no} -if [ "$ENABLE" != "yes" ]; then +if [ "$AWSTATS_ENABLE_BUILDSTATICPAGES" != "yes" ]; then exit 0 fi +Y=`date +%Y` +m=`date +%m` + cd /etc/awstats TMPFILE=`mktemp /tmp/awstats.XXXXXXXXXX` -for c in `/bin/ls -1 awstats.*.conf 2>/dev/null | \ - /bin/sed 's/^awstats\.\(.*\)\.conf/\1/'` -do - Y=`date +%Y` - m=`date +%m` +for c in awstats.*.conf; do + c=${c#awstats.} # remove prefix + c=${c%.conf} # remove suffix mkdir -p /var/cache/awstats/$c/$Y/$m/ - AL=${AWSTATS_LANG:-en} - if ! nice -n $NICE $BUILDSTATICPAGES \ - -config=$c \ + if ! nice -n $AWSTATS_NICE $BUILDSTATICPAGES \ + -config=$c \ -year=$Y \ -month=$m \ - -lang=$AL \ - -staticlinksext=${AL}.html \ + -lang=$AWSTATS_LANG \ + -staticlinksext=${AWSTATS_LANG}.html \ + -awstatsprog=$AWSTATS \ -dir=/var/cache/awstats/$c/$Y/$m/ >$TMPFILE 2>&1 then # an error occurred diff --git a/debian/update.sh b/debian/update.sh index 904f59b..fff3ab6 100755 --- a/debian/update.sh +++ b/debian/update.sh @@ -1,6 +1,6 @@ #!/bin/sh ## -## update.sh, written by Sergey B Kirpchev +## update.sh, written by Sergey B Kirpichev ## ## Update AWStats data for all configs, awstats.*.conf (Debian specific) ## @@ -10,17 +10,19 @@ set -e DEFAULT=/etc/default/awstats AWSTATS=/usr/lib/cgi-bin/awstats.pl +# Set defaults. +AWSTATS_NICE=10 + [ -f $AWSTATS ] || exit 1 [ -r "$DEFAULT" ] && . "$DEFAULT" -NICE=${AWSTATS_NICE:-10} cd /etc/awstats TMPFILE=`mktemp /tmp/awstats.XXXXXXXXXX` -for c in `/bin/ls -1 awstats.*.conf 2>/dev/null | \ - /bin/sed 's/^awstats\.\(.*\)\.conf/\1/'` -do - if ! nice -n $NICE $AWSTATS -config=$c -update >$TMPFILE 2>&1; then +for c in awstats.*.conf; do + c=${c#awstats.} # remove prefix + c=${c%.conf} # remove suffix + if ! nice -n $AWSTATS_NICE $AWSTATS -config=$c -update >$TMPFILE 2>&1; then # an error occurred cat $TMPFILE >&2 fi -- 1.5.6.5