#!/bin/sh 

DEBUG=1

counterDir=/tmp`echo ${SCRIPT_FILENAME}|sed 's:\(.*/\).*:\1:'`
counterFile=${counterDir}.`echo $DOCUMENT_NAME|sed 's:.*/::'`.ctr

countertime=`date +%T`

REMOTE_HOST=${REMOTE_HOST-unknown}
REMOTE_ADDR=${REMOTE_ADDR-unknown}
REMOTE_IDENT=${REMOTE_IDENT-unknown}

if [ -n "$DEBUG" ]; then
    echo $REMOTE_HOST $REMOTE_ADDR $REMOTE_IDENT $countertime >/tmp/count.dbg
    echo SCRIPT_FILENAME=${SCRIPT_FILENAME} counterFile=$counterFile \
							       >>/tmp/count.dbg
fi

if [ ! -w $counterFile -o ! -s $counterFile ]; then
	if [ -n "$DEBUG" ]; then
	    echo file not writable or zero length. creating new one. \
							       >>/tmp/count.dbg
	fi
	rm -f $counterFile >/dev/null 2>&1
	mkdir -p $counterDir >/dev/null 2>&1
	echo 1 $REMOTE_HOST $REMOTE_ADDR $REMOTE_IDENT $countertime \
								  >$counterFile
	echo `date "+%D %T"` $REMOTE_HOST $REMOTE_ADDR $REMOTE_IDENT \
					                  >>/apache/logs/hitlog
        echo $DOCUMENT_URI >>/apache/logs/hitlog
	echo 1
        exit 0
fi

read count lasthost lastaddr lastident lasttime <$counterFile 

lasthost=${lasthost-unknown}
lastaddr=${lastaddr-unknown}
lastident=${lastident-unknown}
lasttime=${lasttime-00:00:00}

case $REMOTE_HOST in
fourever* | kenalt* | bdcdyn* | rn* | acidpig*)

    if [ -n "$DEBUG" ]; then
	echo hit from myself. ignoring. >>/tmp/count.dbg
    fi
    echo $count from $REMOTE_HOST
    exit 0
    ;;
esac

if [ "$REMOTE_HOST" = "$lasthost" -a "$REMOTE_ADDR" = "$lastaddr" \
     -a "$REMOTE_IDENT" = "$lastident" ]; then

    last=`echo $lasttime      |awk -F: '{l=$1*3600+$2*60+$3}END{print l}'`
    current=`echo $countertime|awk -F: '{c=$1*3600+$2*60+$3}END{print c}'`

    diff=`expr $current - $last`

    # if last access was by this user and less than 5 minutes ago, skip it
    if [ $diff -gt 0 -a $diff -lt 300 ]; then

	if [ -n "$DEBUG" ]; then
	    echo hit from same user in \< 5 minutes. ignoring. >>/tmp/count.dbg
	fi

	echo $count from $REMOTE_HOST
	echo $count $REMOTE_HOST $REMOTE_ADDR $REMOTE_IDENT $countertime \
								  >$counterFile
	exit 0
    fi
fi

if [ -n "$DEBUG" ]; then
    echo bumping counter. >>/tmp/count.dbg
fi

echo `date "+%D %T"` $REMOTE_HOST $REMOTE_ADDR $REMOTE_IDENT \
					                  >>/apache/logs/hitlog
echo $DOCUMENT_URI >>/apache/logs/hitlog

count=`expr $count + 1`
echo $count $REMOTE_HOST $REMOTE_ADDR $REMOTE_IDENT $countertime >$counterFile

echo $count from $REMOTE_HOST
exit 0
