#!/usr/bin/perl

#=====================================================================
# 作成
#=====================================================================
#   名    称: Counter Type2 Ver100
#   作成者: CANDY CGI
#   作成者サイト: http://www.candy-cgi.com/

#=====================================================================
#　設定の変更【ここから】
#=====================================================================
#■このファイルの先頭の１行のperlのパスを指定してください。（「#!/usr/local/bin/perl」や『#!/usr/bin/perl』など）
#「#!」の前には、空文字や空行や他の文字がはいらないようにしてください。

#■ログファイル名
$file = 'log.cgi';

#■カウンター画像の入っているディレクトリ
$img_dir = 'img';

#■カウンターの桁数　'5'のように指定　指定しない場合は '0'
$keta = '8';

#■同一IPの連続カウント　カウントする場合は '0'　カウントしない場合は '1'
$ip_check = '1';

#■ランダムで上乗せする数字　("10","30","20")のように設定　使用しない場合は空白()
@random=();
#=====================================================================
#　設定の変更【ここまで】
#=====================================================================

require 'gifcat.pl';

$env = $ENV{'QUERY_STRING'};
$ip = $ENV{'REMOTE_ADDR'};

if ($env =~ /[^a-z]/) {&print;}

($sec,$min,$hour,$mday,$mon,$year,$wno) = localtime(time);

if ($env eq "") {$req = "r_all";}
if ($env eq "to") {$req = "r_to";}
if ($env eq "yes") {$req = "r_yes";}

&main;


sub main{
open(IN,"<$file");
@log = <IN>;
close IN;

foreach $data (@log) {($count,$ip_x,$mday_x,$to,$yes) = split(/<>/, $data);}

chomp($yes);

if ($mday_x ne $mday) {
$yes = $to;
$to = 0;}

if ($ip_check eq "1" && $ip_x eq $ip) {&print;}

else{
$count++;
$to++;

my $count_ran = int (rand(@random));
   $count = $count+$random[$count_ran];
   $to = $to+$random[$count_ran];

shift(@log);
unshift @log, "$count<>$ip<>$mday<>$to<>$yes";

open(OUT,"+< $file");
eval{flock(OUT, 2);};
eval{truncate(OUT, 0);};
seek(OUT, 0, 0);
print OUT @log;
eval{flock(OUT, 8);};
close(OUT);

&print;} 
}


sub print{
my $ppp = 0;

if ($req eq "r_to") {$ppp = $to;}
if ($req eq "r_yes") {$ppp = $yes;}
if ($req eq "r_all") {$ppp = $count;}

if ($keta ne "0") {
my $keta_plas = 10 ** $keta;
   $ppp = $ppp+$keta_plas;
   $ppp = substr($ppp, 1, $keta);}

my $ppp_max = length($ppp);

for($i = 0;$i < $ppp_max; $i++){
my $img_name = substr($ppp,$i,1);
my $ppp_name = "$img_dir/$img_name.gif";
   push(@ppp_img,$ppp_name);} 

print "Content-type: image/gif\n\n";

binmode(STDOUT);
print gifcat::gifcat(@ppp_img);
exit;}
