#!/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