#!/usr/local/bin/perl

#-----------------------------------------------
$ver="ReverseAccess v6.6"; #(逆アクセスカウンタ)
#-----------------------------------------------
# Copyright(C) りゅういち
# E-Mail:ryu@cj-c.com
# W W W :http://www.cj-c.com/
#-----------------------------------------------

#--- ファイル設定 ------*

require './jcode.pl';	# jcode.plまでのパス(URLは×)
require './set.cgi';	# 設定ファイルまでのパス(URLは×)

#--- ここまで ----------*

if($cour > 0){
	open(IN,"$save");
	@DAY = <IN>;
	close(IN);
}
if(-e "ReAcDeny.cgi"){
	open(DE,"ReAcDeny.cgi");
	@deny = <DE>;
	close(DE);
	push(@murl,@deny);
}
if($ENV{'REQUEST_METHOD'} eq "POST") {
	read(STDIN, $access, $ENV{'CONTENT_LENGTH'});
	$access=~ tr/+/ /;
	$access=~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
	$access=~ s/ALL\=//; $MG=1;
}
else{$access=$ENV{'QUERY_STRING'}; $MG=0;}
if($argv || $MG){
	if($access=~ /\+/){($ARGV[0],$ARGV[1],$ARGV[2],$ARGV[3])=split(/\+/,$access);}
	else{$ARGV[0]=$access;}
}
$time=time;$logs=$log;$B=0;
if($ARGV[0] eq "log" && $ARGV[1] ne ""){
	$N=$ARGV[1];
	$DAY[$N]=~ s/\n//g; $time=$DAY[$N]; $logs="$klog\/$DAY[$N].bak";
	if($ARGV[2] eq "all"){$B=1;}
	&T; &html_;
}
&T;
if($ARGV[0] eq "count"){if($ARGV[2] eq "all"){$B=1;}&html_;}
if($ARGV[0] eq "user"){&u_;}
if($ARGV[0] eq "srch"){&srch_;}
if($JSc){
	$ARGV[0]="j"; $B_S=$b_s; $b_s=$JSr;
	&html_; $Rankh=~ s/\n/ /g; $Rankh=~ s/\"/\\"/g;
	$b_s=$B_S;
	$JavaScript=<<"_J_";
document.open();
document.write("$Rankh");
document.close();
_J_
	unless(-e $JSf){
		open(JM,">$JSf");
		print JM "";
		close(JM);
		chmod(0666,"$JSf");
	}
	open(J,">$JSf");
	print J "$JavaScript";
	close(J);
}
if($SSI){$ARGV[0]="s";$ARGV[1]=$SC;}
if($ARGV[0] eq "s"){if($access){$ARGV[0]="";}else{$access=$ENV{'HTTP_REFERER'};}}
open(DB,"$ulog");
@urls = <DB>;
close(DB);
if($l_k){&lock_("$l_f");}
open(IN,"$log");
@b = <IN>;
close(IN);
$logup = (-M "$tlog");
if($logup > "$days"){
	open(LOG,">$tlog");
	print LOG "$date";
	close(LOG);
	if($cour > 0){
		open(IN,"$save");
		@DAY = <IN>;
		close(IN);
		rename($log,"$klog\/$time\.bak");
		push(@DAY,"$time\n");
		$SIZE=@DAY;
		if($SIZE > $cour){
			$K=$SIZE-$cour-1;
			foreach (0..$K){
				$DAY[$_]=~ s/\n//g;
				unlink("$klog\/$DAY[$_].bak");
				$DAY[$_]="$DAT[$_]\n";
				shift(@DAY);
			}
		}
		open(OUT,">$save");
		print OUT @DAY;
		close(OUT);
	}
	foreach (0..$#b) {
		if($b[$_] eq "" || $b[$_] eq "\n"){next;}
		($count,$url,$Ip) = split(/<>/,$b[$_]);
		if($url eq ""){next;}
		$count{$url} = $count;
		$ip{$url}    = $ip;
	}
	$rank1=0; $rank2=1; $count_tmp=0; @new=();
	foreach (sort { ($count{$b} <=> $count{$a}) || ($a cmp $b)} keys(%count)) {
		($count{$_} == $count_tmp) || ($rank1 = $rank2);
		if($b_s < $rank1){last;}
		push(@new,"0<>$_<>$ip{$no}<>$rank1<>\n");
		$count_tmp=$count{$_}; $rank2++; $cnt3 = '';
	}
	open(OUT,">$log") || &error("$log");
	print OUT @new;
	close(OUT);

	@b=@new;
}
$access=~ tr/+/ /;
$access=~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
&jcode'convert(*access,'sjis');
if($h_q){
	if($access=~ /\?/){
		$qes=index("$access" , "\?");
		$access=substr("$access",0,$qes);
	}
}
if($access !~ /^http/ || length("$access") < 10){$access="";}
foreach $murl (@murl){
	$murl=~ s/\n//g;
	if($access=~ /$murl/){
		if(-e $l_f){rmdir($l_f);}
		if($SSI){$b_s=$ARGV[1]; &html_;}else{&gif_;}
		exit;
	}
}
$flag=0; @new=();
foreach $urls (@urls) {
	$urls =~ s/\n//g;
	($u,$n,$tu) = split(/;/,$urls);
	if($access =~ /$u/){$access="$tu"; last;}
}
foreach $b (@b) {
	($count,$url,$Ip,$r)=split(/<>/, $b);
	$Ip =~ s/\n//g; $r =~ s/\n//;
	$ad = $ENV{'REMOTE_ADDR'};
	if($access eq "$url"){
		if($IPC && $Ip eq $ad){$flag=2;last;}
		$flag=1; $count++; $b="$count<>$access<>$ad<>$r<>\n";
	}
	push(@new,$b);
}
if($flag == 1){
	open(OUT,">$log") || &er_("NOT WRITE $log");
	print OUT @new;
	close(OUT);
	if($k_kyo){&user;}
} elsif ($flag == 0) {
	open(OUT,">>$log");
	print OUT "1<>$access<>$ad<>0<>\n";
	close(OUT);
	if($k_kyo){&user;}
}
if(-e $l_f){rmdir($l_f);}
if($ARGV[0] eq "s" && $ARGV[1]=~ /\d/){$b_s=$ARGV[1]; &html_;}
if($ARGV[0] ne "s"){&gif_;}
exit;

sub html_ { # トップ
if($B && $ARGV[3] ne "$mpass" && $ALLR==0){&er_("全ランクは管理人しか閲覧できません!");}
open(A,"$logs") || &er_("そのファイルは削除されました。");
@b = <A>;
close(A);
$bs=@b;
$total=0;
foreach $b (@b) {
	($count,$url,$ip,$r) = split(/<>/,$b);
	$r =~ s/\n//; $total+=$count;
	if($url){$count{$url}=$count;$url{$url}=$url; if($r){$JN{$url}=$r;}}
	else{$UC="$count";}
}
open(DB,"$ulog");
@urls = <DB>;
close(DB);
open(IN,"$tlog");
$ti = <IN>;
close(IN);

if($logs eq $log){$D="$ti 〜 $date";$D2="";}else{$D="$date";$D2="$days日間の";}
if($ARGV[0] eq "s"){print"Content-type: text/html\n\n";if($SC==0){exit;}}
elsif($ARGV[0] ne "j"){
	&hed_("Ranking");
	print<<"_H_";
<center>$d_m<br><hr size=1>
□<a href="$hp"> HOME</a>　
□<a href="$cgi_f?mode=srch"> SEARCH</a><hr width=90% size=1>
<table><tr><td>
・$Dまでの$D2ランキングです。<br>
・$days日ごとにログがリセットされます。<br>
・過去$cour回分のランキングが過去ログに記録されます。<br>
・アクセス数が $R_IN 以下だとランク対象外です。
</td></tr></table><hr width=90% size=1>
_H_
	if($D2){print"<a href='$cgi_s?count'>現在のランキング</a>\n"}
	else{print"現在のランキング\n";}
	$I=0;
	foreach $time (@DAY) {
		$time=~ s/\n//g;&T;
		if($N eq "$I"){$A="";$A2="";}else{$A="<a href='$cgi_s?log+$I'>";$A2="</a>";}
		print"/$A$date$A2\n";
		$I++;
	}
	print"<br><br>";
}
if($B==0 && ($ARGV[0] ne "s" || $ARGV[0] eq "j")){print"<b>BEST$b_s</b>";}
$Rankh="";
$Rankh.=<<"HTML";
<table border=1 bordercolor="$border" bgcolor="$t_bg">
<tr bgcolor="$table"><th>Rank</th><th>Before</th><th>Site</th><th>Access</th></tr>
HTML
$rank1=0; $rank2=1; $count_tmp=0;
foreach (sort { ($count{$b} <=> $count{$a}) || ($a cmp $b)} keys(%count)) {
	($count{$_} == $count_tmp) || ($rank1 = $rank2);
	$cnt=$count{$_};
	if(($rank1 > $b_s || $cnt < $R_IN) && $B==0){last;}
	$url=$_;
	$url=$url{$_};
	foreach $urls (@urls) {
		$urls =~ s/\n//g;
		($u,$n,$tu) = split(/;/,$urls);
		if($url{$_} =~ /$u/ || $url{$_} eq "$tu"){$url{$_}="$n";$url="$tu";}
	}
	if(length($url{$_}) > $CUT && ($ARGV[0] eq "s" || $ARGV[0] eq "j")){
		$cu=$CUT-3; $url{$_}=substr($url{$_},0,$cu); $url{$_}.="...";
	}
	if($rank1==1){$COL=" bgcolor=\"$R1\"";}
	elsif($rank1==2){$COL=" bgcolor=\"$R2\"";}
	elsif($rank1==3){$COL=" bgcolor=\"$R3\"";}else{$COL="";}
	$Rankh.="<tr$COL><th>$rank1</th><td>";
	if($JN{$_}){
		if($rank1 < $JN{$_})   {$Rankh.="$Yajiu<small>($JN{$_})</small>";}
		elsif($rank1 > $JN{$_}){$Rankh.="$Yajis<small>($JN{$_})</small>";}
		elsif($rank1==$JN{$_}) {$Rankh.="$Yajin<small>($JN{$_})</small>";}
	}else{$Rankh.="$Yajiu<small>(圏外)</small>";}
	$Rankh.="</td><td><a href='$url' target=$TGET>$url{$_}</a></td><th>$cnt</th></tr>\n";
	$count_tmp=$count{$_}; $rank2++; $cnt3='';
}
if($ARGV[0] eq "s" || $ARGV[0] eq "j"){
	# SSI著作権表示削除不可
	$Rankh.="<tr><td colspan=4 align=center><a href=\"http://www.cj-c.com/\" target=_top>";
	$Rankh.="<small>ReverseAccess</small></a></td></tr></table>\n";
	if($ARGV[0] eq "s"){print"$Rankh";}
}else{
	print"$Rankh";
	if($UC){print"<tr><th colspan=3>その他、ブックマーク等</th><th>$UC</th></tr>\n";}
	print"<tr><th colspan=2>計</th><th>$bsサイトよりアクセス\n";
	if($ALLR && $B==0){
		if($ARGV[0] eq "log"){$L="$cgi_s?log+$ARGV[1]+all"}else{$L="$cgi_s?count+0+all"}
		print" /<a href=\"$L\">全ランク表\示</a>";
	}
	print"</th><th>$total</th></tr></table><br><br>\n";
	if($k_kyo && $ARGV[0] ne "log"){
		print"<h4><a href=\"$cgi_s?user\">* 時間/ブラウザ/OS 別アクセス数 *</a></h4><br>\n";
	}
	print<<"_F_";
<table><tr><td>
$fcom
</td></tr></table></center>
<div align=right><form action="$cgi_f" method=POST>
<input type=password size=4 name=pass><input type=submit value="管理用"></form>
_F_
	if($N ne ""){
		print<<"_F_";
<form action="$cgi_f" method=POST>
現在表\示中の過去ログを削除<br>
<input type=hidden name=mode value=k><input type=hidden name=t value="$logs">
Pass/<input type=password size=4 name=pass><input type=submit value="過去ログ削除">
</form>
_F_
	}
	print"</div>";
}
if($ARGV[0] ne "j"){&foot_;}
}
sub hed_ { # ヘッダー
print"Content-type: text/html\n\n";
print<<"HTML";
<html>
<head>
<title>ReverseAccess [$_[0]]</title>
$STYLE
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<!--$ver--></head>
$body
<!--広告挿入位置-->

<!--ここまでヘッダ-->
HTML
}
sub foot_ { # フッター
if($ARGV[0] ne "s"){
	print<<"HTML";
<hr size=1><!--著作権表\示 削除不可--><center>
- <a href="http://www.cj-c.com/" target=_top>ReverseAccess</a> -
<!--広告挿入位置-->

<!--ここまでフッタ-->
</center><br></body></html>
HTML
}
exit;
}
sub er_ { # エラー処理
if (-e $l_f) { rmdir($l_f); }
	&hed_("Error");
	print "<center>ERROR - $_[0]</center>\n";
	&foot_;exit;
}
sub gif_ { #ダミーGIF表示
print "Content-type: image/gif\n";
print "Pragma: no-cache\n";
print "\n";
if($dmy){
	open(GIF,"$dmy");
	binmode(GIF);
	binmode(STDOUT);
	print <GIF>;
	close(GIF);
}else{
	@dmygif=(
	"47","49","46","38","39","61","02","00","02","00","80","00","00","00",
	"00","00","ff","ff","ff","21","f9","04","01","00","00","01","00","2c",
	"00","00","00","00","02","00","02","00","00","02","02","8c","53","00","3b"
	);
	foreach (@dmygif) { 
		$DMY = pack('C*',hex($_));
		binmode(GIF);
		binmode(STDOUT);
		print "$DMY";
	}
}
}
sub user { #環境UP
open(DB,"$u_log");
@user = <DB>;
close(DB);
$agent = $ENV{'HTTP_USER_AGENT'};
$UserOn=1;
if($IPC){
	($Ag,$Hour,$Ip)=split(/<>/, $user[$#user]);
	if($Ip eq $ad){$UserOn=0;}
}
if($UserOn){push(@user,"$agent<>$hour<>$ad<>\n");}
$ULine=@user;
if($ULine > $u_max){$I=$ULine-$u_max-1; foreach(0..$I){shift(@user);}}
open(OUT,">$u_log");
print OUT @user;
close(OUT);
}
sub T { #時間
$ENV{'TZ'} = "JST-9";
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime($time);
$year=$year+1900;
$mon++;
if($mon < 10){$mon="0$mon";}
$date="$year\/$mon\/$mday";
}
sub u_ { #環境
open(DB,"$u_log") || &er_("Can't open $u_log");
@Us = <DB>;
close(DB);
if(-s $u_log){$ls = -s $u_log;}else{$ls=0;}
$HK=@Us;
&hed_("User Agent");
@BR=(0,0,0,0,0,0,0,0,0,0,0,0,0,0);
@OS=(0,0,0,0,0,0,0,0,0,0,0,0,0);
@H =(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
foreach $Us (@Us) {
	($user,$hour)=split(/<>/, $Us);
	if($ARGV[1]){
		if   ($ARGV[1] eq "IE" && $user=~ /MSIE/i && $user !~ /Opera/i){$BR.="<br>$user";}
		elsif($ARGV[1] eq "NN" && $user=~ /Mozilla|Netscape/i && $user!~ /MSIE|DreamPassport|SpeedSurfer/){$BR.="<br>$user";}
		elsif($ARGV[1] eq "DC" && $user=~ /DreamPassport/i){$BR.="<br>$user";}
		elsif($ARGV[1] eq "AUTO" && $user=~ /Ninja|WWWC|SpeedSurfer|WebFetch|BMC|PNW|Blocked/i){$BR.="<br>$user";}
		elsif($ARGV[1] eq "KEITAI" && $user=~ /DoCoMo|J-PHONE|UP.Browser/i){$BR.="<br>$user";}
		elsif($ARGV[1] eq "WIN" && $user=~ /Windows|Win/i){$BR.="<br>$user";}
		elsif($ARGV[1] eq "MAC" && $user=~ /Mac/i){$BR.="<br>$user";}
		elsif($ARGV[1] eq "UNIX" && $user=~ /X|Sun|Linux|HP-UX|BSD/i && $user !~ /Win|DoCoMo|Mac/i){$BR.="<br>$user";}
		elsif($ARGV[1] eq "OPERA" && $user=~ /Opera/i){$BR.="<br>$user";}
		elsif($ARGV[1] eq "H$hour"){$BR.="<br>$user";}
	}else{
		if   ($user=~ /Opera/i){$BR[12]++;}
		elsif($user=~ /MSIE 3/i){$BR[0]++;}
		elsif($user=~ /MSIE 4/i){$BR[1]++;}
		elsif($user=~ /MSIE 5/i){$BR[2]++;}
		elsif($user=~ /MSIE 6/i){$BR[11]++;}
		elsif($user=~ /DreamPassport/i){$BR[3]++;}
		elsif($user=~ /Ninja|WWWC|SpeedSurfer|WebFetch|BMC|PNW|Blocked/i){$BR[8]++;}
		elsif($user=~ /Mozilla\/2/i){$BR[4]++;}
		elsif($user=~ /Mozilla\/3/i){$BR[5]++;}
		elsif($user=~ /Mozilla\/4/i){$BR[6]++;}
		elsif($user=~ /Netscape\/7/i){$BR[13]++;}
		elsif($user=~ /Mozilla\/5|Netscape6/i){$BR[7]++;}
		elsif($user=~ /DoCoMo|J-PHONE|UP.Browser/i){$BR[10]++;}
		else{$BR[9]++; if($user){if(index($BRE,$user) >= 0){$BRE.="";}else{$BRE.="$user<br>";}}}

		if   ($user=~ /Windows 95|Win95/i){$OS[0]++;}
		elsif($user=~ /Windows 9x|Win 9x|Windows ME/i){$OS[1]++;}
		elsif($user=~ /Windows 98|Win98/i){$OS[2]++;}
		elsif($user=~ /Windows NT 5.1|WinNT 5.1/i){$OS[12]++;}
		elsif($user=~ /Windows NT 5|WinNT 5|Windows 2000/i){$OS[3]++;}
		elsif($user=~ /Windows NT|WinNT/i){$OS[4]++;}
		elsif($user=~ /Windows CE|WinCE/i){$OS[5]++;}
		elsif($user=~ /DreamPassport/i){$OS[6]++;}
		elsif($user=~ /Mac/i){$OS[7]++;}
		elsif($user=~ /Ninja|WWWC|SpeedSurfer|WebFetch|BMC|PNW|Blocked/i){$OS[8]++;}
		elsif($user=~ /DoCoMo|J-PHONE|UP.Browser/i){$OS[10]++;}
		elsif($user=~ /X|Sun|Linux|HP-UX|BSD/i){$OS[11]++;}
		else{$OS[9]++; if($user){if(index($OSE,$user) >= 0){next;} $OSE.="$user<br>";}}

		$H[$hour]++;
	}
}
#IE3=0 IE4=1 IE5=2 DP=3 NN2=4 NN3=5 NN4=6 NN6=7 AUTO=8 ETC=9 MINI=10 IE6=11 OPERA=12 NN7=13
#W95=0 WME=1 W98=2 W20=3 WNT=4 WCE=5 DC=6 MAC=7 AUTO=8 ETC=9 MINI=10 UNIX=11 WXP=12
if($ARGV[1]){
	print<<"_HTML_";
<center>$d_m<br>* ブラウザ/OS別ユーザエージェント *
<hr size=1>□<a href="$cgi_s?user"> BACK</a>
<hr width=90% size=1><br><b>$ARGV[1] の全ユーザエージェント表\示</b></center>
<ul>$BR</ul>
_HTML_
}else{
	foreach (0..$#BR) {
		$Gf=""; $G=""; $gf="";
		$Gf=($BR[$_]/$HK)*100;$P[$_]=sprintf("%2.1f",$Gf);
		$gf=int(($BR[$_]/$HK)*$wid);
		$B[$_]="<img src=\"$bar\" width=$gf height=$hei> <small>$P[$_]\%</small>\n";
	}
	foreach (0..$#OS) {
		$Gf=""; $G=""; $gf="";
		$Gf=($OS[$_]/$HK)*100;$P[$_]=sprintf("%2.1f",$Gf);
		$gf=int(($OS[$_]/$HK)*$wid);
		$O[$_]="<img src=\"$bar\" width=$gf height=$hei> <small>$P[$_]\%</small>\n";
	}
	print<<"_HTML_";
<center>$d_m<br>* 時間/ブラウザ/OS 別アクセス数 *
<hr size=1>□<a href="$cgi_s?count"> RANKING</a><hr width=90% size=1>
時間別アクセス数と環境集計です。データ数/$HK件($lsバイト)<br><br>
<table border=1 bordercolor="$border" bgcolor="$t_bg">
<tr bgcolor="$table"><th>ブラウザ</th><th>Ver.</th><th>アクセス</th><th>グラフ</th></tr>
<tr><th rowspan=4 bgcolor="$IE_W"><a href="$cgi_s?user+IE">Internet Explorer</a></th>
<th>3.*</th><th>$BR[0]</th><td>$B[0]</td></tr>
<tr><th>4.*</th><th>$BR[1]</th><td>$B[1]</td></tr>
<tr><th>5.*</th><th>$BR[2]</th><td>$B[2]</td></tr>
<tr><th>6.*</th><th>$BR[11]</th><td>$B[11]</td></tr>
<tr><th rowspan=5 bgcolor="$NN_M"><a href="$cgi_s?user+NN">Netscape Navigator</a></th>
<th>2.*</th><th>$BR[4]</th><td>$B[4]</td></tr>
<tr><th>3.*</th><th>$BR[5]</th><td>$B[5]</td></tr>
<tr><th>4.*</th><th>$BR[6]</th><td>$B[6]</td></tr>
<tr><th>6.*</th><th>$BR[7]</th><td>$B[7]</td></tr>
<tr><th>7.*</th><th>$BR[13]</th><td>$B[13]</td></tr>
<tr><th colspan=2 bgcolor="$UNIX">
<a href="$cgi_s?user+OPERA">Opera</a></th><th>$BR[12]</th><td>$B[12]</td></tr>
<tr><th colspan=2 bgcolor="$DCAST">
<a href="$cgi_s?user+DC">DreamPassport</a></th><th>$BR[3]</th><td>$B[3]</td></tr>
<tr><th colspan=2 bgcolor="$AUTO">
<a href="$cgi_s?user+AUTO">自動巡回系</a></th><th>$BR[8]</th><td>$B[8]</td></tr>
<tr><th colspan=2 bgcolor="$KTAI">
<a href="$cgi_s?user+KEITAI">携帯端末</a></th><th>$BR[10]</th><td>$B[10]</td></tr>
<tr><th colspan=2 rowspan=2 bgcolor="$ETC">その他</th>
<th>$BR[9]</th><td>$B[9]</td></tr>
<tr><td colspan=2><small>$BRE *) 同じものは一つにまとめています。</small></td></tr>
<tr><td colspan=3></td></tr>
<tr bgcolor="$table"><th colspan=2>OS</th><th>アクセス</th><th>グラフ</th>
<tr><th rowspan=7 bgcolor="$IE_W"><a href="$cgi_s?user+WIN">Windows</a></th>
<th>95</th><th>$OS[0]</th><td>$O[0]</td></tr>
<tr><th>98</th><th>$OS[2]</th><td>$O[2]</td></tr>
<tr><th>Me</th><th>$OS[1]</th><td>$O[1]</td></tr>
<tr><th>NT</th><th>$OS[4]</th><td>$O[4]</td></tr>
<tr><th>2000</th><th>$OS[3]</th><td>$O[3]</td></tr>
<tr><th>CE</th><th>$OS[5]</th><td>$O[5]</td></tr>
<tr><th>XP</th><th>$OS[12]</th><td>$O[12]</td></tr>
<tr><th colspan=2 bgcolor="$NN_M">
<a href="$cgi_s?user+MAC">MacOS</a></th><th>$OS[7]</th><td>$O[7]</td></tr>
<tr><th colspan=2 bgcolor="$UNIX">
<a href="$cgi_s?user+UNIX">UNIX系</a></th><th>$OS[11]</th><td>$O[11]</td></tr>
<tr><th colspan=2 bgcolor="$DCAST">
<a href="$cgi_s?user+DC">Dreamcast</a></th><th>$OS[6]</th><td>$O[6]</td></tr>
<tr><th colspan=2 bgcolor="$AUTO">
<a href="$cgi_s?user+AUTO">自動巡回系</a></th><th>$OS[8]</th><td>$O[8]</td></tr>
<tr><th colspan=2 bgcolor="$KTAI">
<a href="$cgi_s?user+KEITAI">携帯端末</a></th><th>$OS[10]</th><td>$O[10]</td></tr>
<tr><th colspan=2 rowspan=2 bgcolor="$ETC">その他</th>
<th>$OS[9]</th><td>$O[9]</td></tr>
<tr><td colspan=2><small>$OSE *) 同じものは一つにまとめています。</small></td></tr>
<tr><td colspan=3></td></tr></table><br>
<table border=1 bordercolor="$border" bgcolor="$t_bg">
<tr><th bgcolor="$table">アクセス</th>
_HTML_
	$K=0;
	foreach (0..23) {
		$Gs="";
		print"<td align=center valign=bottom><small>$H[$_]<br>\n";
		$Gs=int((($H[$_]*2/$HK)*$wid));
		if($Gs==0){$Gs=1;}
		$P[$_]=(($H[$_]/$HK)*100); $P[$_]=sprintf("%2.1f",$P[$_]);
		print"<img src=\"$bar\" width=$hei height=$Gs><br>$P[$_]\%</small>\n";
		print"</td>";
	}
	print"</tr><tr><th bgcolor=\"$table\">時間</th>";
	foreach (0..23){print"<th><a href=\"$cgi_s?user+H$_\">$_</th>";}
	print<<"_F_";
</tr><tr><th bgcolor="$table">合計</th><th colspan=24>$HK</th></tr></table>
<form action="$cgi_f" method=POST>
<input type=hidden name=mode value=k><input type=hidden name=u value="$u_log">
ログを初期化します。<br>
Pass/<input type=password size=4 name=pass><input type=submit value="フォーマット">
</form></center>
_F_
}
&foot_;
}
sub lock_ { #ロックファイル
$lflag = 0;
foreach (1 .. 5) {if(mkdir($_[0], 0755)){$lflag=1; last;}else{sleep(1);}}
if ($lflag == 0) {
	if(-e $_[0]){rmdir($_[0]);}
	&error("LOCK is BUSY (ロック中)","1");
}
}
