calamaris (2.99.4.0-11) calamaris-cron-script

Summary

 calamaris-cron-script |  252 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 252 insertions(+)

    
download this patch

Patch contents

--- calamaris-2.99.4.0.orig/calamaris-cron-script
+++ calamaris-2.99.4.0/calamaris-cron-script
@@ -0,0 +1,252 @@
+#! /bin/sh
+
+set -e
+
+# calamaris: daily cron script.
+# This script should be run before the one for squid or oops. According to the
+# man page of run-parts this is okay: squid and oops come after calamaris in
+# the alphabet.
+
+# Date: 1998-10-07
+
+# DEBUG=1
+
+CONFFILE=/etc/calamaris/cron.conf
+CALAMARIS=/usr/bin/calamaris
+CALAMARIS_CONF_FILE=/etc/calamaris/calamaris.conf
+
+if [ ! -x /usr/bin/calamaris ]; then
+    exit 0
+fi
+
+CALAMARISOPTIONS="-a -f auto --config-file ${CALAMARIS_CONF_FILE}"
+HTMLOPTIONS="-F html"
+ME=/etc/cron.daily/calamaris
+WEEKFILES=forweekly.1:forweekly.2:forweekly.3:forweekly.4:forweekly.5:forweekly.6:forweekly.0
+
+# today
+DAYOFWEEK=`date +"%w"`
+DAYOFMONTH=`date +"%d" | bc -l`
+# WEEKOFYEAR=`date +"%W"`
+# MONTH=`date +"%B"`
+
+# read configuration file: /etc/calamaris/cron.conf
+# daily
+eval `awk -F: \
+'(!/¨#/) && ($1 == "daily") {
+        print "DAYMAIL=" $2; print "DAYWEB=" $3;
+        print "DAYDO=" $4; print "DAYTITLE=" $5;
+}' $CONFFILE`
+DAYWEBPATH=`dirname $DAYWEB`
+DAYWEBFILE=`basename $DAYWEB`
+
+# weekly
+eval `awk -F: \
+'(!/¨#/) && ($1 == "weekly") {
+        print "WEEKMAIL=" $2; print "WEEKWEB=" $3;
+        print "WEEKDO=" $4; print "WEEKTITLE=" $5;
+}' $CONFFILE`
+WEEKWEBPATH=`dirname $WEEKWEB`
+WEEKWEBFILE=`basename $WEEKWEB`
+
+# monthly
+eval `awk -F: \
+'(!/¨#/) && ($1 == "monthly") {
+        print "MONTHMAIL=" $2; print "MONTHWEB=" $3;
+        print "MONTHDO=" $4; print "MONTHTITLE=" $5;
+}' $CONFFILE`
+MONTHWEBPATH=`dirname $MONTHWEB`
+MONTHWEBFILE=`basename $MONTHWEB`
+
+# squid or oops?
+CACHE=auto
+eval `awk -F= \
+'(!/¨#/) && ($1 == "cache") {
+        print "CACHE=" $2;
+}' $CONFFILE`
+
+# look for cache log files
+if [ "$CACHE" = "auto" ]; then
+    if [ -r /var/log/squid/access.log ]; then
+	CACHE=squid
+	CACHELOGDIR=/var/log/squid
+    fi
+    if [ -r /var/log/oops/access.log ]; then
+	CACHE=oops
+	CACHELOGDIR=/var/log/oops
+    fi
+    if [ "$CACHE" = "auto" ]; then
+	echo "/etc/cron.daily/calamaris: no cache log files found, exiting cleanly"
+	exit 0
+    fi
+else
+    CACHELOGDIR=/var/log/$CACHE
+    if [ ! -r $CACHELOGDIR/access.log ]; then
+	echo "/etc/cron.daily/calamaris: no cache log files found in $CACHELOGDIR, exiting cleanly"
+	exit 0
+    fi
+fi
+
+# change to working dir
+LOGDIR=/var/log/calamaris
+cd $LOGDIR || exit 1
+
+# if we need monthly or weekly reports save a summary
+if [ "$WEEKDO" != "nothing" ]; then
+    CALAMARISOPTIONSOLD="$CALAMARISOPTIONS"
+    CALAMARISOPTIONS="$CALAMARISOPTIONS -o forweekly.$DAYOFWEEK"
+    # Ensure that this file exists and is empty; if there are no entries in the
+    # squid access.log, calamaris won't create the summary file, which causes
+    # problems with the weekly and monthly summaries.
+    :> forweekly.$DAYOFWEEK
+else
+    if [ "$MONTHDO" != "nothing" ]; then
+	CALAMARISOPTIONSOLD="$CALAMARISOPTIONS"
+	CALAMARISOPTIONS="$CALAMARISOPTIONS -o formonthly.$DAYOFMONTH"
+    fi
+fi
+
+# do the daily report
+case "$DAYDO" in
+    nothing) if [ "$WEEKDO" != "nothing" ]; then
+	cat $CACHELOGDIR/access.log | \
+	    nice -39 $CALAMARIS $CALAMARISOPTIONS > /dev/null
+	fi
+    ;;
+    mail) if [ -x /usr/sbin/sendmail ]; then (
+	    echo "To: $DAYMAIL"
+            echo "From: Calamaris <root>"
+	    cat $CACHELOGDIR/access.log | \
+		nice -39 $CALAMARIS $CALAMARISOPTIONS -F mail -H "$DAYTITLE"
+	) | /usr/sbin/sendmail -t
+	fi
+    ;;
+    web) cat $CACHELOGDIR/access.log | \
+	    nice -39 $CALAMARIS $CALAMARISOPTIONS $HTMLOPTIONS -H "$DAYTITLE" \
+		--output-path $DAYWEBPATH --output-file $DAYWEBFILE
+    ;;
+    both) cat $CACHELOGDIR/access.log | \
+	    nice -39 $CALAMARIS $CALAMARISOPTIONS $HTMLOPTIONS -H "$DAYTITLE" \
+		--output-path $DAYWEBPATH --output-file $DAYWEBFILE
+	if [ -x /usr/sbin/sendmail ]; then (
+	    echo "To: $DAYMAIL"
+            echo "From: Calamaris <root>"
+	    cat $CACHELOGDIR/access.log | \
+		nice -39 $CALAMARIS $CALAMARISOPTIONS -F mail -H "$DAYTITLE"
+	) | /usr/sbin/sendmail -t
+	fi
+    ;;
+    *) echo "the 'todo' for the daily Squid report in $CONFFILE"
+	echo -n "is '$DAYDO' instead of one out of "
+	echo "(nothing, mail, web, both)." >&2
+	exit 1
+    ;;
+esac
+
+if [ "$MONTHDO" != "nothing" -a "$WEEKDO" != "nothing" ]; then
+    cp forweekly.$DAYOFWEEK formonthly.$DAYOFMONTH
+fi
+
+# do the weekly report on Sunday <=> $DAYOFWEEK==0
+if [ -n "$CALAMARISOPTIONSOLD" ]; then
+    CALAMARISOPTIONS="$CALAMARISOPTIONSOLD"
+fi
+
+if [ "$DAYOFWEEK" = "0" ]; then
+    # make sure, all forweekly files exist, ie. touch them
+    touch `echo $WEEKFILES | sed "s/:/ /g"`
+    case "$WEEKDO" in
+	nothing) 
+	;;
+	mail) if [ -x /usr/sbin/sendmail ]; then (
+		echo "To: $WEEKMAIL"
+                echo "From: Calamaris <root>"
+		nice -39 $CALAMARIS $CALAMARISOPTIONS -i $WEEKFILES \
+		    -z -F mail -H "$WEEKTITLE"
+	    ) | /usr/sbin/sendmail -t
+            fi
+	;;
+	web) nice -39 $CALAMARIS $CALAMARISOPTIONS -i $WEEKFILES \
+		-z $HTMLOPTIONS -H "$WEEKTITLE" \
+		--output-path $WEEKWEBPATH --output-file $WEEKWEBFILE
+	;;
+	both) if [ "$DEBUG" = "1" ]; then
+		echo "Weekly stats."
+		echo "Doing web stats: nice -39 $CALAMARIS $CALAMARISOPTIONS -i $WEEKFILES -zwH \"$WEEKTITLE\" into $WEEKWEB"
+	    fi
+	    nice -39 $CALAMARIS $CALAMARISOPTIONS -i $WEEKFILES \
+		-z $HTMLOPTIONS -H "$WEEKTITLE" \
+		--output-path $WEEKWEBPATH --output-file $WEEKWEBFILE
+	    if [ "$DEBUG" = "1" ]; then
+		echo "Doing mail stats: nice -39 $CALAMARIS $CALAMARISOPTIONS -i $WEEKFILES -zmH \"$WEEKTITLE\""
+	    fi
+	    if [ -x /usr/sbin/sendmail ]; then (
+		echo "To: $WEEKMAIL"
+                echo "From: Calamaris <root>"
+		nice -39 $CALAMARIS $CALAMARISOPTIONS -i $WEEKFILES \
+		    -z -F mail -H "$WEEKTITLE"
+	    ) | /usr/sbin/sendmail -t
+	    fi
+	    if [ "$DEBUG" = "1" ]; then echo "Finished weekly stats."; fi
+	;;
+	*) echo "the 'todo' for the weekly Squid report in $CONFFILE"
+	    echo -n "is '$WEEKDO' instead of one out of "
+	    echo "(nothing, mail, web, both)." >&2
+	    exit 1
+	;;
+    esac
+    # remove all forweekly files (could disturb next week's statistics if
+    # computer is switched of one day)
+    rm -f `echo $WEEKFILES | sed "s/:/ /g"`
+fi
+
+# do the monthly report
+if [ "$DAYOFMONTH" = "1" ]; then
+    i=2
+    MONTHFILES=formonthly.1
+    yesterday=`date +"%d" -d "yesterday"`
+    end=`echo 1+$yesterday | bc -l`
+    while [ "$i" != $end ]; do
+	MONTHFILES=$MONTHFILES:formonthly.$i
+	i=`echo 1+$i | bc -l`
+    done
+    # make sure, all formonthly files exist, ie. touch them
+    touch `echo $MONTHFILES | sed "s/:/ /g"`
+    case "$MONTHDO" in
+	nothing)
+	;;
+	mail) if [ -x /usr/sbin/sendmail ]; then (
+		echo "To: $MONTHMAIL"
+                echo "From: Calamaris <root>"
+		nice -39 $CALAMARIS $CALAMARISOPTIONS -i $MONTHFILES \
+		    -z -F mail -H "$MONTHTITLE"
+	      ) | /usr/sbin/sendmail -t
+              fi
+        ;;
+	web) nice -39 $CALAMARIS $CALAMARISOPTIONS -i $MONTHFILES \
+	        -z $HTMLOPTIONS -H "$MONTHTITLE" \
+		--output-path $MONTHWEBPATH --output-file $MONTHWEBFILE
+        ;;
+	both) nice -39 $CALAMARIS $CALAMARISOPTIONS -i $MONTHFILES \
+	        -z $HTMLOPTIONS -H "$MONTHTITLE" \
+		--output-path $MONTHWEBPATH --output-file $MONTHWEBFILE
+	      if [ -x /usr/sbin/sendmail ]; then (
+		echo "To: $MONTHMAIL"
+                echo "From: Calamaris <root>"
+		nice -39 $CALAMARIS $CALAMARISOPTIONS -i $MONTHFILES \
+		    -z -F mail -H "$MONTHTITLE"
+	      ) | /usr/sbin/sendmail -t
+	      fi
+	;;
+	*) echo "the 'todo' for the weekly Squid report in $CONFFILE"
+	    echo -n "is '$MONTHDO' instead of one out of "
+	    echo "(nothing, mail, web, both)." >&2
+	    exit 1
+	;;
+    esac
+    # remove all formonthly files (could disturb next month's statistics if
+    # computer is switched of one day)
+    rm -f formonthly.*
+fi
+
+exit 0