summaryrefslogtreecommitdiff
path: root/localwebstats
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2002-01-14 12:57:20 +0000
committerJonas Smedegaard <dr@jones.dk>2002-01-14 12:57:20 +0000
commitd4ef4d39f3ee20b402e9958824d06e67cd2af6f5 (patch)
treeff2874008d0e38b9b7f47ae00a5c9a42054ed66f /localwebstats
parent9c6f5b5728ae9e33ae1cb57ad4edc1e5bc4b61cb (diff)
Several changes to localwebstats:
- Exit on error. - Have all functions equally expect options LOGROOT, WEBROOT and WEBSITE (in that order). - Don't exit on empty LOGDATARESOLVED. - Add hooks for functions pre_init, pre_update, post_init and post_update. - Remove last traces of logfiles, logfilesgz, logfilesresolved and logfilesresolvedgz functions. - Corrections to webdirs function.
Diffstat (limited to 'localwebstats')
-rwxr-xr-xlocalwebstats72
1 files changed, 42 insertions, 30 deletions
diff --git a/localwebstats b/localwebstats
index 85dd17b..fae1e35 100755
--- a/localwebstats
+++ b/localwebstats
@@ -2,8 +2,8 @@
# /etc/cron.daily/localstats: Webstats maintenance script
# Written by Jonas Smedegaard <dr@jones.dk>
-# halt on errors
-#set -e
+# halt on errors (NB! this is a bashism...)
+set -e
function usage() {
echo "Usage: $(basename $0) init|update|prelogrotate|postlogrotate|ignore <website> [<website>...]"
@@ -53,21 +53,21 @@ fi
WEBROOT=/var/www
LOGROOT=/var/log/apache
-function statsdir() { echo $1/VIRTUAL/stats.$(dnsdomainname)/www/$2; }
-function webdirs() { find $LOGROOT -type d -mindepth 1 -maxdepth 1 | grep '\.*\.' | sed 's!$LOGROOT!!'; }
-#function logdir() { echo $LOGROOT/$WEBSITE; }
+# $1=LOGROOT, $2=WEBROOT and $3 is WEBSITE
+function statsdir() { echo $2/VIRTUAL/stats.$(dnsdomainname)/www/$3; }
+function webdirs() { find $1 -type d -mindepth 1 -maxdepth 1 | grep '\.*\.' | sed 's!$1!!'; }
#function logfiles() { $(ls -r $LOGDIR/*-access*.gz) $(ls -r $LOGDIR/access*.??.gz) $(ls -r $LOGDIR/access*.?.gz) $(ls -r $LOGDIR/access*.?); }
-function logfilesresolvedgz() { ls $1/$2/????.??.00.gz; }
-function logfilesresolved() { ls $1/$2/????.??.00; }
-function logfilesgz() { ls $1/$2/????.??.??.gz | grep -v '\.00\.gz$'; }
-function logfiles() { ls $1/$2/????.??.?? | grep -v '\.00$'; }
-function logcontentresolved() { for file in `logfilesresolvedgz $1 $2`; do zcat $file; done; for file in `logfilesresolved $1 $2`; do cat $file; done; }
-function logcontent() { for file in `logfilesgz $1 $2`; do zcat $file; done; for file in `logfiles $1 $2`; do cat $file; done; }
-function host() { cat $1/VIRTUAL/$2/hostname || exit1 "Unable to get hostname for virtual host."; }
-function domain() { cat $1/VIRTUAL/$2/domainname || exit1 "Unable to get domainname for virtual host."; }
-function analog_cfg() { echo /etc/analog_$2.conf; }
-function rmagic_cfg() { echo /etc/rmagic/rmagic_$2.conf; }
-function webalizer_cfg() { echo /etc/webalizer_$2.conf; }
+function logcontentresolved() { for file in $(ls $1/$3/????.??.00.gz); do zcat $file; done; for file in $(ls $1/$3/????.??.00); do cat $file; done; }
+function logcontent() { for file in $(ls $1/$3/????.??.??.gz | grep -v '\.00\.gz$'); do zcat $file; done; for file in $(ls $1/$3/????.??.?? | grep -v '\.00$'); do cat $file; done; }
+function host() { cat $2/VIRTUAL/$3/hostname || exit1 "Unable to get hostname for virtual host."; }
+function domain() { cat $2/VIRTUAL/$3/domainname || exit1 "Unable to get domainname for virtual host."; }
+function analog_cfg() { echo /etc/analog_$3.conf; }
+function rmagic_cfg() { echo /etc/rmagic/rmagic_$3.conf; }
+function webalizer_cfg() { echo /etc/webalizer_$3.conf; }
+function pre_init() { true; }
+function post_init() { true; }
+function pre_update() { true; }
+function post_update() { true; }
# The above can be overridden in /etc/local/www
@@ -99,20 +99,26 @@ fi
# Generate stats for websites from stdin or all default sites
WEBSITES=$@
if [ "$WEBSITES" = "" ]; then
- WEBSITES=$(webdirs)
+ WEBSITES=$(webdirs $LOGROOT $WEBROOT $WEBSITE)
fi
for WEBSITE in $WEBSITES; do
- STATSDIR=$(statsdir $WEBROOT $WEBSITE) || exit1 "Unable to resolve STATSDIR."
+ STATSDIR=$(statsdir $LOGROOT $WEBROOT $WEBSITE) || exit1 "Unable to resolve STATSDIR."
# FIXME test -d $STATSDIR/.. || exit1 "Directory above STATSDIR doesn't exist."
- ANALOG_CFG=$(analog_cfg $WEBROOT $WEBSITE) || exit1 "Unable to resolve ANALOG_CFG."
- RMAGIC_CFG=$(rmagic_cfg $WEBROOT $WEBSITE) || exit1 "Unable to resolve RMAGIC_CFG."
- WEBALIZER_CFG=$(webalizer_cfg $WEBROOT $WEBSITE) || exit1 "Unable to resolve WEBALIZER_CFG."
+ ANALOG_CFG=$(analog_cfg $LOGROOT $WEBROOT $WEBSITE) || exit1 "Unable to resolve ANALOG_CFG."
+ RMAGIC_CFG=$(rmagic_cfg $LOGROOT $WEBROOT $WEBSITE) || exit1 "Unable to resolve RMAGIC_CFG."
+ WEBALIZER_CFG=$(webalizer_cfg $LOGROOT $WEBROOT $WEBSITE) || exit1 "Unable to resolve WEBALIZER_CFG."
- HOST=$(host $WEBROOT $WEBSITE) || exit1 "Unable to get hostname for virtual host."
- DOMAIN=$(domain $WEBROOT $WEBSITE) || exit1 "Unable to get domainname for virtual host."
- LOGFILESRESOLVEDGZ=$(logfilesresolvedgz $LOGROOT $WEBSITE)
+ if [ $stamp = "init" ]; then
+ pre_init $LOGROOT $WEBROOT $WEBSITE || exit1 "Error executing PRE_INIT."
+ fi
+ if [ $stamp = "update" ]; then
+ pre_update $LOGROOT $WEBROOT $WEBSITE || exit1 "Error executing PRE_UPDATE."
+ fi
+
+ HOST=$(host $LOGROOT $WEBROOT $WEBSITE) || exit1 "Unable to get hostname for virtual host."
+ DOMAIN=$(domain $LOGROOT $WEBROOT $WEBSITE) || exit1 "Unable to get domainname for virtual host."
ANALOG_OPTIONS="-G +g/etc/analog.conf +g$ANALOG_CFG +A -a"
RMAGIC_OPTIONS=""
@@ -147,7 +153,7 @@ for WEBSITE in $WEBSITES; do
touch $LOGDATARESOLVED $LOGDATA $LOGDATATMP || exit1 "Couldn't touch LOGDATA files."
if [ $stamp = "init" ]; then
- logcontentresolved $LOGROOT $WEBSITE >> $LOGDATARESOLVED
+ logcontentresolved $LOGROOT $WEBROOT $WEBSITE >> $LOGDATARESOLVED
if [ -x $ANALOG_BIN ]; then
[ $DEBUG ] && echo "$WEBSITE: Create/update analog config"
echo "\
@@ -206,7 +212,7 @@ HideReferrer $DOMAIN/
[ -s $WEBALIZER_CFG.local ] && cat $WEBALIZER_CFG.local >> $WEBALIZER_CFG
mkdir $STATSDIR/webalizer
[ $DEBUG ] && echo "$WEBSITE: Create initial Webalizer stats"
- cat $LOGDATARESOLVED | $WEBALIZER_BIN $WEBALIZER_OPTIONS -N 0 -
+ cat $LOGDATARESOLVED | $WEBALIZER_BIN $WEBALIZER_OPTIONS -N 0 - || true
fi
if [ -x $AWSTATS_BIN ]; then
[ $DEBUG ] && echo "$WEBSITE: Create/update AWStats config"
@@ -246,15 +252,15 @@ ShowFlagLinks=0
if [ -x $JDRESOLVE_BIN ]; then
[ $DEBUG ] && echo "$WEBSITE: DNS-resolve new logdata using jdresolve"
# DB access doesn't work currently (no output...)
-# logcontent $LOGROOT $WEBSITE | $JDRESOLVE_BIN $JDRESOLVE_OPTIONS - >> $LOGDATA
+# logcontent $LOGROOT $WEBROOT $WEBSITE | $JDRESOLVE_BIN $JDRESOLVE_OPTIONS - >> $LOGDATA
# jdresolve $JDRESOLVE_MERGE_OPTIONS $LOGDATA
- logcontent $LOGROOT $WEBSITE | $JDRESOLVE_BIN $JDRESOLVE_OPTIONS - >> $LOGDATA
+ logcontent $LOGROOT $WEBROOT $WEBSITE | $JDRESOLVE_BIN $JDRESOLVE_OPTIONS - >> $LOGDATA
elif [ -x $LOGRESOLVE_BIN ]; then
[ $DEBUG ] && echo "$WEBSITE: DNS-resolve new logdata using logresolve"
- logcontent $LOGROOT $WEBSITE | $LOGRESOLVE_BIN >> $LOGDATA
+ logcontent $LOGROOT $WEBROOT $WEBSITE | $LOGRESOLVE_BIN >> $LOGDATA
else
[ $DEBUG ] && echo "$WEBSITE: Merging new logdata without DNS-resolving (no resolver found)"
- logcontent $LOGROOT $WEBSITE >> $LOGDATA
+ logcontent $LOGROOT $WEBROOT $WEBSITE >> $LOGDATA
fi
if [ -s $LOGDATA ]; then
@@ -279,4 +285,10 @@ ShowFlagLinks=0
fi
gzip -f9 $LOGDATA
fi
+ if [ $stamp = "init" ]; then
+ post_init $LOGROOT $WEBROOT $WEBSITE || exit1 "Error executing POST_INIT."
+ fi
+ if [ $stamp = "update" ]; then
+ post_update $LOGROOT $WEBROOT $WEBSITE || exit1 "Error executing POST_UPDATE."
+ fi
done