#!/usr/local/bin/perl
#######################################################
#BooClickAndViewCounter v1.05 / this program is free. #
#bcview.cgi (C) BooBooClub 2001-2010 #
#######################################################
#set data
$dat = './bcvc.dat';
$html = './counter.html';
#lock
&lock;
#time
$ENV{'TZ'}='JST-9';
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year = ($year + 1900);
$mon++;
if ($sec < 10) { $sec = "0$sec";}
if ($min < 10) { $min = "0$min";}
if ($hour < 10){ $hour = "0$hour";}
if ($mon < 10) { $mon = "0$mon";}
if ($mday < 10){ $mday = "0$mday";}
$time = "$year/$mon/$mday $hour:$min:$sec";
#read
if ($ENV{'REQUEST_METHOD'} eq "POST"){
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}
else{
$buffer = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/\cM\n//g;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/\,//g;
$value =~ s/</ig;
$value =~ s/>/>/ig;
$value =~ s/\r\n|[\r\n]/
/ig;
$FORM{$name} = $value;
}
#branch
if($FORM{'view'}){
&view;
}
unlink("$lockfile");
exit 0;
sub view{
open (DAT,"$dat");
@dat = ;
close (DAT);
$pc = 0;
foreach $data(@dat){
@data = split(/,/,$data);
if($FORM{'id'} eq $data[0] && $FORM{'pass'} eq $data[1]){
$id = $data[0];
$img = $data[2];
$url = $data[3];
$way = $data[4];
$cntdat = $data[5];
$pc++;
last;
}
}
if($pc == 0){
print "Content-type: text/html\n\n";
print "\n";
print ''."\n";
print "Error!\n";
print "\n";
print "
Error!
\n";
print "IDかパスワードに誤りがあります。\n";
print "
\n";
unlink("$lockfile");
exit 0;
}
open (HTML,"$html");
@html = ;
close (HTML);
$html = join('',@html);
$html =~ s//$cntdat/g;
print "Content-type: text/html\n\n";
print $html;
unlink("$lockfile");
exit 0;
}
sub lock{
$lockfile = './lock/lockfile';
$retry = 1;
until (symlink("$dat", "$lockfile")){
if (++$retry >= 30){
&lockerror;
exit 0;
}
sleep(1);
}
}
sub lockerror{
print "Content-type: text/html\n\n";
print "Busy!\n";
print "\n";
print "
現在サーバが混雑しています。
\n";
print "恐れ入りますがもうしばらくして再度操作を行ってください。\n";
print "
\n";
unlink("$lockfile");
exit 0;
}