Package: webalizer
Version: 2.23.08-1+b1
Severity: wishlist
Tags: patch

The webalizer daily cron job can be easily modified to remove any
generated "usage" files older than MAX_DAY_AGE in order to prevent
perpetual growth without other intervention of the output directory.

If MAX_DAY_AGE is not set or is set to 0, then no files are deleted.

I also suggest using the linked variable name OUTPUT_DIR rather
than OUTDIR to match the parameer name in the configuration file,
and also to use sed with an exact match, rather than the heavier awk
pattern matching, to extract the value from the configuration file.


------------------<snip><start of patch><snip>--------------------------------
--- webalizer.ORIG      2014-03-01 16:47:08.000000000 +0100
+++ webalizer           2014-03-01 16:47:08.000000000 +0100
@@ -9,6 +9,8 @@
 WEBALIZER=/usr/bin/webalizer
 WEBALIZER_CONFDIR=/etc/webalizer

+MAX_DAY_AGE=32
+
 [ -x ${WEBALIZER} ] || exit 0;
 [ -d ${WEBALIZER_CONFDIR} ] || exit 0;

@@ -25,13 +27,15 @@
   [ -r "${LOGFILE}" ] || continue;

   # there was a output ?
-  OUTDIR=`awk '$1 ~ /^OutputDir$/ {print $2}' $i`;
+
+  OUTPUT_DIR=$(sed -ne 's|OutputDir[[:space:]]*||p' "${i}")
+
   #  exists something ?
-  [ "${OUTDIR}" != "" ] || continue;
+  [ "${OUTPUT_DIR}" != "" ] || continue;
   # its a directory ?
-  [ -d ${OUTDIR} ] || continue;
+  [ -d ${OUTPUT_DIR} ] || continue;
   # its writable ?
-  [ -w ${OUTDIR} ] || continue;
+  [ -w ${OUTPUT_DIR} ] || continue;

   # Run Really quietly, exit with status code if !0
   ${WEBALIZER} -c ${i} -Q || continue;
@@ -50,6 +54,14 @@
     ${WEBALIZER} -c ${i} -Q ${NLOGFILE};
     RET=$?;
   fi;
+
+  if [ -n "${MAX_DAY_AGE}" ]
+  then
+       test ${MAX_DAY_AGE} -gt 0 &&                                    \
+       find "${OUTPUT_DIR}" -maxdepth 1 -type f -mtime +${MAX_DAY_AGE} \
+                            -name \*usage_\* -exec rm -f {} \;
+  fi
+
 done;

 # exit with webalizer's exit code
---------------------------<snip><End of patch><snip>---------------------

Reply via email to