# Blosxom Plugin: counter # Author: Kengo Ichiki # Version: $Id: counter,v 1.7 2004/01/07 02:05:56 ichiki Exp $ package counter; use Time::Local; $counter; # --- Configurable variables --- $log = "counter.log"; $cnt = "counter.cnt"; #$linkurl = ""; $linkurl = "http://kichiki.hp.infoseek.co.jp/BLOSXOM/index.html#counter"; # images should be at URL $imgdir/$imgname/[0-9]$imgname.gif $imgdir = "/images/digits"; $imgname = "kichiki"; $imgbracket = 1; #$imgname = "katt077"; #$imgbracket = 0; # hosts to ignore $ip_list = '192.168.1.1|192.168.1.2'; $agent_list = 'Mediapartners-Google'; # ------------------------------ sub cntimg { my $n = shift; my $result = ''; my @digits; my $x = 10; my $i = 0; my $j, $k; unless ($linkurl eq "") { $result .= ""; } if ($imgbracket) { $result .= "\"[\""; } 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]\""; } if ($imgbracket) { $result .= "\"]\""; } unless ($linkurl eq "") { $result .= ""; } return $result; } # ------------------------------ sub start { 1; } # ------------------------------ sub filter { my $n; my ($year, $month, $day); my ($hour, $min, $sec); my @now = localtime(); $year = $now[5] + 1900; $month = $now[4] + 1; $day = $now[3] + 0; $hour = $now[2] + 0; $min = $now[1] + 0; $sec = $now[0] + 0; 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)/) { if (-e $log) { open (LOG, ">> $log"); } else { open (LOG, "> $log") or die "cannot write to file: $!."; } flock(LOG, 2); if ($ENV{'HTTP_USER_AGENT'} !~ /($agent_list)/) { $n ++; open (CNT, "> $cnt") or die "cannot open file to write : $!."; flock(CNT, 2); print CNT "$n"; close (CNT); print LOG "$n "; } else { print LOG "- "; } printf (LOG "%4d/%d/%d %02d:%02d:%02d ", $year, $month, $day, $hour, $min, $sec); print LOG "$ENV{'REQUEST_URI'} $ENV{'REMOTE_HOST'} $ENV{'REMOTE_ADDR'} $ENV{'REMOTE_USER'} $ENV{'HTTP_REFERER'} $ENV{'HTTP_USER_AGENT'}\n"; close(LOG); } # generate counter $counter = cntimg($n); } 1;