From b39f7388e9970b6acebd0c0edc422554c318de76 Mon Sep 17 00:00:00 2001 From: timriker Date: Wed, 26 Feb 2014 21:27:10 +0000 Subject: [PATCH] log scripts git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk@1933 c11ca15a-4712-0410-83d8-924469b57eb5 --- scripts/htmlcalidx.sh | 143 +++++++++++++++++++++++++++++++++++++ scripts/processlog.example | 54 ++++++++++++++ 2 files changed, 197 insertions(+) create mode 100755 scripts/htmlcalidx.sh create mode 100755 scripts/processlog.example diff --git a/scripts/htmlcalidx.sh b/scripts/htmlcalidx.sh new file mode 100755 index 0000000..12c75d7 --- /dev/null +++ b/scripts/htmlcalidx.sh @@ -0,0 +1,143 @@ +#!/bin/bash + +TODOM=${TODOM:-`date +%d`} +TOMONTH=${TOMONTH:-`date +%m`} +YEAR=${YEAR:-`date +%Y`} +MONTH=${MONTH:-1} +MONTHABV=([1]=Jan [2]=Feb [3]=Mar [4]=Apr [5]=May [6]=Jun \ + [7]=Jul [8]=Aug [9]=Sep [10]=Oct [11]=Nov [12]=Dec) + +echo '' +echo '' +echo '' +echo " apt/ibot/infobot/purl logs for $YEAR" +echo ' ' +echo '' +echo '' + +today=`date -d "yesterday" +%Y%m%d` +subdirs=`find \#* -maxdepth 0 -type d 2>/dev/null` +if [ -n "$subdirs" ] ; then + echo '

Channels (l for latest)

' + #echo "" + echo '

' + for subdir in $subdirs ; do + if [ "$subdir" != "stats" ] ; then + subdirhtml=`echo \$subdir | sed -e 's/#/%23/'`; + latest=`(cd $subdir ; ls [0-9]* 2>/dev/null| tail -n 1 | sed -e 's/.html.gz//')` + if [ "$latest" = "$today" ] ; then + #echo "

" + echo "$subdir(l)" + fi + fi + done + echo '

' + #echo "
$subdir$latest
" +fi +#if [ -n "$subdirs" ] ; then +# echo "

Channels

" +# echo "" +#fi + +echo "

$YEAR

" +echo '' +echo ' ' +echo ' ' + +while [ $MONTH -le $TOMONTH ]; do + + STARTDAY=`date -d "1 ${MONTHABV[$MONTH]} $YEAR" +%w` + case $MONTH in + 2) + ENDDOM=28 + ;; + 9|4|6|11) + ENDDOM=30 + ;; + *) + ENDDOM=31 + ;; + esac + + echo ' ' + + if [ $MONTH -lt $TOMONTH ]; then + if [ $(($MONTH % 4)) -eq 0 ]; then + echo " " + echo " " + fi + fi + + MONTH=$(($MONTH + 1)) +done + +echo ' ' +echo ' ' +echo '
' + + echo ' ' + echo ' ' + echo " " + echo ' ' + + DOM=${DOM:-1} + DAY=0 + INCDOM=no + SHOWDOM=no + until [ $DAY -eq 0 -a "$INCDOM" = "done" ]; do + if [ $DAY -eq 0 ]; then + echo -n " " + fi + + if [ "$INCDOM" = "no" -a $DAY -eq $STARTDAY ]; then + INCDOM=yes + SHOWDOM=yes + fi + + echo -n "" + + if [ "$INCDOM" = "yes" ]; then + if [ $DOM -eq $ENDDOM ]; then + INCDOM="done" + SHOWDOM=no + else + DOM=$(($DOM + 1)) + if [ $MONTH -eq $TOMONTH -a $DOM -gt $TODOM ]; then + SHOWDOM=no + fi + fi + fi + + DAY=$(($DAY + 1)) + if [ $DAY -eq 7 ]; then + echo "" + DAY=0 + fi + done + DOM=1 + + echo ' ' + echo '
${MONTHABV[$MONTH]}
SunMonTueWedThuFriSat
" + if [ "$SHOWDOM" = "yes" ]; then + FILE=`date -d "$DOM ${MONTHABV[$MONTH]} $YEAR" +%Y%m%d`.html.gz + if [ -f "$FILE" ]; then + echo -n ""$DOM"" + else + echo $DOM + fi + else + echo -n " " + fi + echo -n "
' + + echo '
' + +#echo '' +#echo '' diff --git a/scripts/processlog.example b/scripts/processlog.example new file mode 100755 index 0000000..fadee64 --- /dev/null +++ b/scripts/processlog.example @@ -0,0 +1,54 @@ +#!/bin/sh + +# copy or link this to processlog to make it run when logs are rotated + +if [ -z "$1" ] ; then + echo "Syntax: $0 " + exit -1 +elif [ ! -r $file ] ; then + echo $file does not exist + exit -1 +fi + +file="`readlink -fm "$1"`" +irclog2html=`readlink -fm scripts/irclog2html.pl` +htmlcalidx=`readlink -fm scripts/htmlcalidx.sh` +# pull date out of path +date=`echo "${file}"|sed -e 's~.*\([0-9]\{4\}\)/\([0-9]\{4\}\)$~\1\2~'` +web=$HOME/web + +# delete old web pages if present (to allow re-running) +rm -f $web/$date.html $web/*/$date.html $web/$date.html.gz $web/*/$date.html.gz +# create new ones +(cd $web;${irclog2html} ${date} < $file) +# set the date to the log date +touch -r $file $web/$date.html $web/*/$date.html +# compress them +gzip -f -9 $web/$date.html $web/*/$date.html + +#don't run stats if not yesterdays log +if [ "$date" != "`date -u -d '1 day ago' +'%Y%m%d'`" ] ; then + NOSTATS=1 + NOIDX=1 +fi + +# only do stats if NOSTATS not set +if [ -z "$NOSTATS" ] ; then + cd $web/stats + [ -r .log ] && rm .log + ln -s $file .log + nice -n 20 pisg + rm .log *gz + gzip -9 *html +fi + +if [ -z "$NOSTATS" ] ; then + for a in `find $web -type d|sort` ; do + (cd $a ; ${htmlcalidx} > HEADER.html) + done + rm $web/stats/HEADER.html +fi + +if [ -z "$NOCOMPRESS" ] ; then + bzip2 -9 $file +fi -- 2.39.2