# Blosxom Plugin: counter # Author: Kengo Ichiki # Version: $Id: counter,v 1.2 2003/12/22 17:12:07 ichiki Exp $ package counter; $counter; # --- Configurable variables --- $log = "counter.log"; $cnt = "counter.cnt"; # images should be at URL $imgdir/$imgname/[0-9]$imgname.gif $imgdir = "/images/digits"; $imgname = "katt077"; # hosts to ignore $ip_list = '192.168.1.1|192.168.1.2'; # ------------------------------ sub cntimg { my $n = shift; my $result = ''; my @digits; my $x = 10; my $i = 0; my $j, $k; while ($n > 0) { $digits[$i] = ($n % 10); $n = int($n / 10); $i ++; } for ($j = 0; $j < $i; $j ++) { $k = $i - $j - 1; $result .= "\"$digits[$k]\"\n"; } return $result; } # ------------------------------ sub start { 1; } # ------------------------------ sub filter { my $n; if (-e "$cnt") { open (CNT, "< $cnt"); $n = ; close (CNT); } else { $n = 0; } if ($ENV{'REMOTE_ADDR'} !~ /($ip_list)/ && $ENV{'REQUEST_URI'} !~ /(1&PIXEL&SPACER&TRACKING&THING)/) { $n ++; open (CNT, "> $cnt") or die "cannot open file to write : $!."; flock(CNT, 2); print CNT "$n"; close (CNT); if (-e "$log") { open (LOG, ">> $log"); } else { open (LOG, "> $log") or die "cannot write to file: $!."; } flock(LOG, 2); print LOG "$n $ENV{'REQUEST_URI'} $ENV{'REMOTE_HOST'} $ENV{'REMOTE_ADDR'} $ENV{'REMOTE_USER'} $ENV{'HTTP_REFERER'} $ENV{'HTTP_USER_AGENT'}\n"; close(LOG); } $counter = cntimg($n); } 1;