%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/rappan/www/cgi_access/
Upload File :
Create Path :
Current File : /home/rappan/www/cgi_access/hana_admin.cgi

#!/usr/bin/perl

#******************************************************************************
#
# hana_admin.cgi - Access Analyzer
#
#Version   	:2.17
#modified  	:2002/01/08
#Copyright 	:The Room
#E-Mail		:dream@lib.net
#URL		:http://dream.lib.net/room/
#
#******************************************************************************
#1行目のperlのディレクトリ指定は、サーバによって異なります。
#詳しくは、管理者にお聞きください。
#******************************************************************************

require './hana_set.cgi';
require $lib_jcode;
$cl = $ENV{"CONTENT_LENGTH"};
if( $cl > 0 ){
	read(STDIN, $qs, $cl );
}else{
	$qs = $ENV{"QUERY_STRING"};
	}

@contents = split(/&/,$qs);
foreach $i (0 .. $#contents) {
	local($key,$text)= split(/=/,$contents[$i],2);
	$text =~ s/\+/ /g;
	$text =~ s/%(..)/pack("c",hex($1))/ge;
	$key =~ s/%(..)/pack("c",hex($1))/ge;
	&jcode::convert(\$text,'sjis');
	if ($key ne 'urlset1'){
		$text =~ s/\r//g;
		$text =~ s/\n//g;
		$text =~ s/</&lt;/g;
		$text =~ s/>/&gt;/g;
		}
	$text =~ s/&/&amp;/g;
	$IN{$key}=$text;
	}

if ($IN{'pw'} ne $adminpass){&enter;}
elsif ($IN{'act'} eq 'set1'){&set1;}
elsif ($IN{'act'} eq 'set2'){&set2;}
elsif ($IN{'act'} eq 'set3'){&set3;}
elsif ($IN{'act'} eq 'set4'){&set4;}
elsif ($IN{'act'} eq 'set5'){&set5;}
elsif ($IN{'act'} eq 'set6'){&set6;}
elsif ($IN{'act'} eq 'set7'){&set7;}
else{&menu;}

#*****************************************************************************
sub set7{
if ($IN{'set1'} eq ""){&error($IN{'set3'}."を行うサイト情報を選択してください。")};
if (($IN{'set2'} eq "") && ($IN{'set3'} eq "変更")){&error("変更後のサイト名を設定してください。");}
open(IO,"+<$file_ref");
eval{flock(IO,2)};
while(<IO>){
	@temp1 = split(/\t/,$_);
	if ($temp1[1] eq $IN{'set1'}."\n"){
		$a1 = 1;
		if ($IN{'set3'} eq "変更"){
			push(@set_ref,"$IN{'set2'}\t$temp1[1]");
			$sys_msg = "<b>「$temp1[0]」を「$IN{'set2'}」に変更しました。</b><br>";
			}else{
			$sys_msg = "<b>「$temp1[0]」を削除しました。</b><br>";
			}
		}else{
		push(@set_ref,$_);
		}
	}
if ($sys_msg eq ""){
	close(IO);
	&error("指定されたサイト情報が見つかりませんでした。");
	}
truncate(IO,0);
seek(IO,0,0);
print IO @set_ref;
close(IO);
$readflag[2] = 1;
&menu;
}
#*****************************************************************************
sub set6{
my @temp1;
if ($IN{'set1'} eq ""){&error("サイト名を入力してください。");}
elsif (($IN{'set2'} eq "") || ($IN{'set2'} eq 'http://')){&error("サイトURLを設定してください。");}
elsif ($IN{'set2'}  !~ /^https?:\/\/[\w|\:\@\-]+\.[\w|\:\!\#\%\=\&\-\|\@\~\+\.\?\/]+$/i){&error("サイトURLの指定が間違っています($_)。");}
open(IO,"+<$file_ref");
eval{flock(IO,2)};
while(<IO>){
	@temp1 = split(/\t/,$_);
	chomp($temp1[1]);
	if ($temp1[1] eq $IN{'set2'}){
		close(IO);
		&error("このURLは既に登録されています。");
		}
	push(@set_ref,$_);
	}
unshift(@set_ref,"$IN{'set1'}\t$IN{'set2'}\n");
truncate(IO,0);
seek(IO,0,0);
print IO @set_ref;
close(IO);
$sys_msg = "<b>「$IN{'set1'}」をリンク元情報に追加しました。</b><br>";
$readflag[2] = 1;
&menu;
}
#*****************************************************************************
sub set5{
my ($a1,$a2,$i,@temp1,@temp2);

if (($IN{'set1'} eq "") || ($IN{'set1'} =~ /[^\d]/) || ($IN{'set1'} < 0)){
	&error("生ログ保存日数の指定が間違っています。");}
elsif (($IN{'set2'} eq "") || ($IN{'set2'} =~ /[^\d]/) || ($IN{'set2'} < 0)){
	&error("時間別アクセス数保存時間の指定が間違っています。");}
elsif (($IN{'set3'} eq "") || ($IN{'set3'} =~ /[^\d]/) || ($IN{'set3'} < 0)){
	&error("日別アクセス数保存日数の指定が間違っています。");}
elsif (($IN{'set4'} eq "") || ($IN{'set4'} =~ /[^\d]/) || ($IN{'set4'} < 1)){
	&error("文字数表\示制限の指定が間違っています。");}
$IN{'set5'} = 1 if $IN{'set5'} ne "1" && $IN{'set5'} ne "0";
$IN{'set6'} = 0 if $IN{'set6'} ne "1" && $IN{'set6'} ne "0";

open(IO,"+<$file_set");
eval{flock(IO,2)};
@set_data1 = split(/<>/,<IO>);
@set_data2 = split(/<>/,<IO>);
$set_data3 = <IO>;
pop(@set_data1);pop(@set_data2);
@back_set_data1 = @set_data1;
$set_data1[0] = $IN{'set1'} if $IN{'set1'} != 0;
$set_data1[1] = $IN{'set2'} if $IN{'set2'} != 0;
$set_data1[2] = $IN{'set3'} if $IN{'set3'} != 0;
$set_data1[3] = $IN{'set4'};
$set_data1[4] = $IN{'set5'};
$set_data1[5] = $IN{'set6'};

truncate(IO,0);
seek(IO,0,0);
foreach(@set_data1){print IO $_."<>";}print IO "\n";
foreach(@set_data2){print IO $_."<>";}print IO "\n";
print IO $set_data3;
close(IO);

if ($IN{'set1'} == 0){
	$sys_msg .="生ログのデータリセットを行いました。<br>";
	opendir(DIR,"$dir_log");
	while($a1 = readdir(DIR)){unlink "$dir_log/$a1" if $a1 =~ /\.dat$/;}
	closedir(DIR);
	@temp1 = gmtime($area_time+time());
	$a1 = sprintf("%04d%02d%02d",$temp1[5]+1900,$temp1[4]+1,$temp1[3]);
	open(OUT,">$dir_log/$a1.dat");
	close(OUT);
	chmod(0666,"$dir_log/$a1.dat");
	}
elsif ($IN{'set1'} < $back_set_data1[0]){
	@temp1 = ();
	opendir(DIR,"$dir_log");
	while($a1 = readdir(DIR)){push(@temp1,$a1)  if $a1 =~ /\.dat$/;}
	closedir(DIR);
	@temp1 = sort(@temp1);
	for(0 .. $#temp1-$IN{'set1'}){
		unlink("$dir_log/$temp1[$_]");
		}
	$sys_msg .="生ログ保存日数を変更しました。設定期間を超えたデータは削除されました。<br>";
	}
elsif($back_set_data1[0] != $IN{'set1'}){
	$sys_msg .="生ログ保存日数を変更しました。<br>";
	}

$a1 = -1;
for(0 .. $#set_data2+1){
	$a1++;
	if ($_ == 0){
		#トップページ処理
		open(IO,"+<$dir_acs/top.dat");
		eval{flock(IO,2)};
		@temp1 = split(/<>/,<IO>);@data1[$a1] = ([@temp1]);
		@temp1 = split(/<>/,<IO>);pop(@temp1);
		@temp2 = split(/<>/,<IO>);pop(@temp2);
		truncate(IO,0);
		seek(IO,0,0);
		print IO "$data1[$a1][0]<>$data1[$a1][1]<>$data1[$a1][2]<>$data1[$a1][3]<>\n";
		if ($IN{'set2'} == 0){for($i=0;$i<=$back_set_data1[1]-1;$i++){print IO "<>";}print IO "\n";}
		else{for($i=0;$i<=$IN{'set2'}-1;$i++){print IO "$temp1[$i]<>"}print IO "\n";}
		if ($IN{'set3'} == 0){for($i=0;$i<=$back_set_data1[2]-1;$i++){print IO "<>";}print IO "\n";}
		else{for($i=0;$i<=$IN{'set3'}-1;$i++){print IO "$temp2[$i]<>"}print IO "\n";}
		close(IO);
		}else{
		#ページ処理
		$a2 = (split(/_/,$set_data2[$_-1]))[0];
		open(IO,"+<$dir_acs/$a2.dat");
		eval{flock(IO,2)};
		@temp1 = split(/<>/,<IO>);@data1[$a1] = ([@temp1]);
		@temp1 = split(/<>/,<IO>);pop(@temp1);
		@temp2 = split(/<>/,<IO>);pop(@temp2);
		truncate(IO,0);
		seek(IO,0,0);
		print IO "$data1[$a1][0]<>$data1[$a1][1]<>$data1[$a1][2]<>$data1[$a1][3]<>\n";
		if ($IN{'set2'} == 0){for($i=0;$i<=$back_set_data1[1]-1;$i++){print IO "<>";}print IO "\n";}
		else{for($i=0;$i<=$IN{'set2'}-1;$i++){print IO "$temp1[$i]<>"}print IO "\n";}
		if ($IN{'set3'} == 0){for($i=0;$i<=$back_set_data1[2]-1;$i++){print IO "<>";}print IO "\n";}
		else{for($i=0;$i<=$IN{'set3'}-1;$i++){print IO "$temp2[$i]<>"}print IO "\n";}
		close(IO);
		}
	}
if ($IN{'set2'} == 0){$sys_msg.="時間別アクセス数保存時間のデータリセットを行いました。<br>";}
elsif ($IN{'set2'} < $back_set_data1[1]){
	$sys_msg.="時間別アクセス数保存時間を変更しました。設定期間を超えたデータは削除されました<br>";
	}
elsif ($IN{'set2'} != $back_set_data1[1]){
	$sys_msg.="時間別アクセス数保存時間を変更しました。<br>";
	}
if ($IN{'set3'} == 0){$sys_msg.="日別アクセス数保存日数のデータリセットを行いました。<br>";}
elsif ($IN{'set3'} < $back_set_data1[2]){
	$sys_msg.="日別アクセス数保存日数を変更しました。設定期間を超えたデータは削除されました<br>";
	}
elsif ($IN{'set3'} != $back_set_data1[2]){
	$sys_msg.="日別アクセス数保存日数を変更しました。<br>";
	}

if ($IN{'set4'} != $back_set_data1[3]){
	$sys_msg.="文字数表\示制限を変更しました。<br>";
	}
$sys_msg.="小文字表\示を".($IN{'set5'}?"有効":"無効")."にしました。<br>";
$sys_msg.="ログ閲覧制限を".($IN{'set6'}?"有効":"無効")."にしました。<br>";

$sys_msg = "<b>$sys_msg</b>";
$set_data3 =~ s/<>/\n/g;
$readflag[0] = $readflag[1] = 1;
&menu;

}
#*****************************************************************************
sub set4{
my ($a1,$b1,@temp1);
$b1 = "";
$a1 = $IN{'urlset1'};
$a1 =~ s/\r//g;$a1 =~ s/\n//g;

if ($a1 ne ""){
	@temp1 = split(/\n/,$IN{'urlset1'});
	foreach(@temp1){
		$_ =~ s/\r//g;$_ =~ s/\n//g;
		next if $_ eq "";
		if ($_ !~ /^https?:\/\/[\w|\:\@\-]+\.[\w|\:\!\#\%\=\&\-\|\@\~\+\.\?\/]+$/i){&error("URL指定が間違っています($_)。");
			}else{
			$b1.=$_."<>";
			}
		}
	}

open(IO,"+<$file_set");
eval{flock(IO,2)};
@temp1 = <IO>;
truncate(IO,0);
seek(IO,0,0);
print IO $temp1[0].$temp1[1].$b1."\n";
close(IO);
$set_data3 = $b1;
@set_data1 = split(/<>/,$temp1[0]);pop(@set_data1);
@set_data2 = split(/<>/,$temp1[1]);pop(@set_data2);
$set_data3 =~ s/<>/\n/g;
$readflag[0] = 1;

$sys_msg = "<b>集計から除外するURLを設定しました。</b><br>";
&menu;

}
#*****************************************************************************
sub set3{
my @temp2;
if (!-e "$dir_acs/$IN{'set1'}.dat"){&error("指定されたページIDは存在しません。");}

open(IO,"+<$file_set");
eval{flock(IO,2)};
@set_data1 = split(/<>/,<IO>);
@set_data2 = split(/<>/,<IO>);
$set_data3 = <IO>;
pop(@set_data1);pop(@set_data2);
for(0 .. $#set_data2){
	@temp2 = split(/_/,$set_data2[$_],2);
	if ($temp2[0] eq $IN{'set1'}){
		if ($IN{'set3'} eq "削除"){
			splice(@set_data2,$_,1);
			unlink("$dir_acs/$IN{'set1'}.dat");
			$sys_msg = "<b>ページ「$temp2[1]」の削除が完了しました。</b>";
			}else{
			$set_data2[$_] = "$temp2[0]_$IN{'set2'}";
			$sys_msg = "<b>ページ「$temp2[1]」を「$IN{'set2'}」に変更しました。</b>";
			}
		last;
		}
	}
truncate(IO,0);
seek(IO,0,0);
foreach(@set_data1){print IO $_."<>";}print IO "\n";
foreach(@set_data2){print IO $_."<>";}print IO "\n";
print IO $set_data3;
close(IO);

$readflag[0] = 1;
$set_data3 =~ s/<>/\n/g;
&menu;

}
#*****************************************************************************
sub set2{
my @temp1;
if ($IN{'set1'} eq ""){&error("ページ名を入力してください。");}
elsif ($IN{'set2'} eq ""){&error("ページIDを設定してください。");}
elsif ($IN{'set2'} =~ /[^0-9a-zA-Z]/){&error("ページIDに半角英数字以外の文字が含まれています。");}
elsif (length($IN{'set2'}) > 8){&error("ページIDは8文字以内で設定してください。");}
elsif (-e "$dir_acs/$IN{'set2'}.dat"){&error("このページIDは既に使用されています。");}

open(IO,"+<$file_set");
eval{flock(IO,2)};
@set_data1 = split(/<>/,<IO>);
@set_data2 = split(/<>/,<IO>);
$set_data3 = <IO>;
pop(@set_data1);pop(@set_data2);
foreach(@set_data2){
	@temp1 = split(/_/,$_);
	if ($temp1[1] eq $IN{'set1'}){close(IO);&error("入力したページ名は既に使用されています。");}
	}

open(OUT,">$dir_acs/$IN{'set2'}.dat") or die &error("ファイル作成に失敗しました。<br>アクセス数保存ディレクトリのパスとパーミッションを確認してください。");
print OUT "0<>0<>0<>".time()."<>\n";
for(1 .. $set_data1[1]){print OUT "<>";}print OUT "\n";
for(1 .. $set_data1[2]){print OUT "<>";}print OUT "\n";
close(OUT);
chmod(0666,"$dir_acs/$IN{'set2'}.dat");

push(@set_data2,"$IN{'set2'}_$IN{'set1'}");
truncate(IO,0);
seek(IO,0,0);
foreach(@set_data1){print IO $_."<>";}print IO "\n";
foreach(@set_data2){print IO $_."<>";}print IO "\n";
print IO $set_data3;
close(IO);
$sys_msg = <<EOD;
<b>ページ「$IN{'set1'}」の追加が完了しました。<br>
以下のタグを、解析するページに貼\り付けてください。</b><br>
<br>
&lt;img src="$url_cgi/hana_page.cgi?id=$IN{'set2'}&type=main"&gt;
EOD
if ($oth_ct_indi == 1){
$sys_msg .= <<EOD;
(累計カウンタ)<br>&lt;img src="$url_cgi/hana_page.cgi?id=$IN{'set2'}&type=today"&gt;
(今日のカウンタ)<br>&lt;img src="$url_cgi/hana_page.cgi?id=$IN{'set2'}&type=yest"&gt;
(昨日のカウンタ)<br>
<br>
累計カウンタだけは、必ず貼\り付けてください。<br>
他の2つは任意です。<br>
EOD
	}
$sys_msg.="<br>";
$readflag[0] = 1;
$set_data3 =~ s/<>/\n/g;
&menu;
}
#*****************************************************************************
sub set1{
&read_setting;

for(0 .. $#set_data2+1){
	if ($_ == 0){$a1 = "トップページ";}else{$a1 = (split(/_/,$set_data2[$_-1]))[1];}
	if (($IN{'set2_0_'.$_} eq "") || ($IN{'set2_0_'.$_} < 0) || ($IN{'set2_0_'.$_} =~ /[^\d]/)){
		&error("set2_0_$_ /$IN{'set2_0_'.$_}/$a1 の累計カウント数が不正です。");}
	if (($IN{'set2_0_'.$_} eq "") || ($IN{'set2_0_'.$_} < 0) || ($IN{'set2_0_'.$_} =~ /[^\d]/)){
		&error("$a1 の今日のカウント数が不正です。");}
	if (($IN{'set2_0_'.$_} eq "") || ($IN{'set2_0_'.$_} < 0) || ($IN{'set2_0_'.$_} =~ /[^\d]/)){
		&error("$a1 の昨日のカウント数が不正です。");}
	}

open(IO,"+<$dir_acs/top.dat");eval{flock(IO,2)};
@temp1 = split(/<>/,<IO>);$a1 = <IO>;$a2 = <IO>;
truncate(IO,0);seek(IO,0,0);
print IO $IN{'set2_0_0'}."<>".$IN{'set2_1_0'}."<>".$IN{'set2_2_0'}."<>".$temp1[3]."<>\n";
print IO $a1;
print IO $a2;
close(IO);

for(1 .. $#set_data2+1){
	$a1 = (split(/_/,$set_data2[$_-1],2))[0];
	open(IO,"+<$dir_acs/$a1.dat");eval{flock(IO,2)};
	@temp1 = split(/<>/,<IO>);$a1 = <IO>;$a2 = <IO>;
	truncate(IO,0);seek(IO,0,0);
	print IO $IN{'set2_0_'.$_}."<>".$IN{'set2_1_'.$_}."<>".$IN{'set2_2_'.$_}."<>".$temp1[3]."<>\n";
	print IO $a1;
	print IO $a2;
	close(IO);
	}

for(0 .. $#set_data2+1){
	$data1[$_][0] = $IN{'set2_0_'.$_};
	$data1[$_][1] = $IN{'set2_1_'.$_};
	$data1[$_][2] = $IN{'set2_2_'.$_};
	}
$sys_msg = "<b>アクセス数の変更を行いました。";
$readflag[0]=$readflag[1] = 1;
&menu;
}
#*****************************************************************************
sub menu{
my ($a1,$a2,$a3,$a4,@temp1);

&read_setting if $readflag[0] != 1;

if ($readflag[1] != 1){
	open(IN,"$dir_acs/top.dat");
	eval{flock(IN,1)};
	@temp1 = split(/<>/,<IN>);
	close(IN);
	$data1[0] = ([@temp1]);

	if ($#set_data2 >= 0){
		for(0 .. $#set_data2){
			$a1 = (split(/_/,$set_data2[$_],2))[0];
			open(IN,"$dir_acs/$a1.dat");
			eval{flock(IN,1)};
			@temp1 = split(/<>/,<IN>);
			close(IN);
			$data1[$_+1] = ([@temp1]);
			}
		}
	}

if ($readflag[2] != 1){
	open(IN,$file_ref);
	eval{flock(IN,1)};
	@set_ref = <IN>;
	close(IN);
	}

$action="メインメニュー";
&head;
if ($sys_msg){
print <<EOD;
<font color=red>$sys_msg</font><br>
<br>
</td></tr>
<tr><td bgcolor=#d0d0e0>&nbsp;</td></tr>
<td><br>
EOD
	}
print <<EOD;
<script language="javascript">
<!--
//-->
</script>
<noscript>
<font color=red><b>JavaScript を有効にしてください。</b></font><br><br>
</noscript>
<b>ログファイル状態</b><br>
<br>
EOD


@temp1 = ();
$a3 = 0;
opendir(DIR,"$dir_log");
while($a1 = readdir(DIR)){
	if ($a1 =~ /^(.*)\.dat/i){
		$a2 = (stat("$dir_log/$a1"))[7];
		$a3+=$a2;
		push(@temp1,"$dir_log/$a1 - ".&set_byte($a2));
		}
	}
closedir(DIR);
foreach(reverse(sort(@temp1))){print $_."<br>";}
print "<br>合計 ".&set_byte($a3)."<br>";
if ($a3 > $alert_log){
	print "<br><font color=red><b>".&set_byte($alert_log)." を超えました。<a href=\"#rawlog\"><font color=red>生ログ保存日数</font></a>を減らす事をお勧めします。</b></font><br>";
	}
print <<EOD;
<br>
</td></tr>
<tr><td bgcolor=#d0d0e0>&nbsp;</td></tr>
<tr>
<form method="post" action="./hana_admin.cgi">
<input type="hidden" name="pw" value="$IN{'pw'}">
<input type="hidden" name="act" value="set1">
<td><br>
<b>アクセス数設定</b><br>
<br>
<table>
EOD
for(0 .. $#set_data2+1){
	print "<tr><td>";
	if ($_ == 0){print "トップページ";}else{
		$a1 = (split(/_/,$set_data2[$_-1],2))[1];
		print $a1;
		}
	for($i=0;$i<=2;$i++){$data1[$_][$i]=0 if $data1[$_][$i] eq "";}
print <<EOD;
</td>
<td>累計 <input type="text" name="set2_0_$_" value="$data1[$_][0]" size=7></td>
<td>今日 <input type="text" name="set2_1_$_" value="$data1[$_][1]" size=5></td>
<td>昨日 <input type="text" name="set2_2_$_" value="$data1[$_][2]" size=5></td>
</tr>
EOD
	}
print <<EOD;
</table>
<input type="submit" value="設定">
<input type="reset" value="やり直し">
</form>
<br>
</td></tr>
<tr><td bgcolor=#d0d0e0>&nbsp;</td></tr>
<tr>
<td><br>
<b>ページカウンタ設定</b><br><br>
<form method="post" action="./hana_admin.cgi">
<input type="hidden" name="pw" value="$IN{'pw'}">
<input type="hidden" name="act" value="set2">
<b>追加</b><br>
ページ名 <input type="text" name="set1" size=16><br>
ページID <input type="text" name="set2" size=8 maxlength=8> (半角英数字 8文字以内)<br>
<input type="submit" value="追加">
</form>
<br><br>
EOD
if ($set_data2[0] ne ""){
print <<EOD;
<script language="javascript">
<!--
function sel1(){
a1 = document.cd.set1.options[document.cd.set1.selectedIndex].value;
a2 = "";
a3 = "";
EOD
$a1 = " selected";
$a2 = $a3 = $a4 = "";
for(0 .. $#set_data2){
	next if $set_data2[$_] eq "";
	@temp1 = split(/_/,$set_data2[$_],2);
	$a2.="<option value=\"$temp1[0]\"$a1>$temp1[1] (ID:$temp1[0])\n";
	if ($a1 ne ""){$a3 = $temp1[1];$a1 = "";}
	$temp1[1] =~ s/"/\\"/g;
	print "if (a1 == \"$temp1[0]\"){a2 = \"$temp1[1]\";}\n";
	}
print <<EOD;
document.cd.set2.value = a2;
}
// -->
</script>
<b>変更・削除</b><br>
<form name="cd" method="post" action="./hana_admin.cgi">
<input type="hidden" name="pw" value="$IN{'pw'}">
<input type="hidden" name="act" value="set3">
ページ選択
<select name="set1" onchange="sel1()">
$a2
</select><br>
ページ名 <input type="text" name="set2" value="$a3" size=12><br>
<input type="submit" name="set3" value="変更">
<input type="submit" name="set3" value="削除">
</form>
EOD
}
print <<EOD;
<tr><td bgcolor=#d0d0e0>&nbsp;</td></tr>
<tr>
<td><br>
<b>リンク元設定</b><br><br>
<form method="post" action="./hana_admin.cgi">
<input type="hidden" name="pw" value="$IN{'pw'}">
<input type="hidden" name="act" value="set4">
集計から除外するリンク元のURLを、改行区切りで入力してください。<br>
(指定されたURLが<b>含まれる</b>リンク元を除外します)<br>
<br>
<textarea name="urlset1" cols=60 rows=5>$set_data3</textarea><br>
<input type="submit" value="設定">
<input type="reset" value="やり直し">
</form>
</td></tr>
<tr><td bgcolor=#d0d0e0>&nbsp;</td></tr>
<tr>
<td><br>
<a name="#rawlog"><b>その他設定</b></a><br><br>
<form method="post" action="./hana_admin.cgi">
<input type="hidden" name="pw" value="$IN{'pw'}">
<input type="hidden" name="act" value="set5">
<table>
<tr><td>生ログ保存日数</td>
<td><input type="text" name="set1" value="$set_data1[0]" size=3>日間</td>
<td rowspan=3 valign=top>
* 0 を設定すると、データリセットが行われます。<br>
*現在より短い期間に設定すると、設定期間を超えたデータは削除されます。</td>
</tr>
<tr><td>時間別アクセス数保存時間</td>
<td><input type="text" name="set2" value="$set_data1[1]" size=3>時間</td></tr>
<tr><td>日別アクセス数保存日数</td>
<td><input type="text" name="set3" value="$set_data1[2]" size=3>日間</td></tr>
<tr><td colspan=3><br><br></td></tr>
<tr><td>文字数表\示制限</td>
<td><input type="text" name="set4" value="$set_data1[3]" size=3>文字</td>
<td>
* 設定文字数を超えたデータは、省略して表\示されるようになります。<br>
* 表\示画面バランスをとるための設定です。<br>
</tr>
<tr><td colspan=3><br><br></td></tr>
<tr><td>小文字表\示</td>
<td><select name="set5">
EOD
print "<option value=\"1\"".($set_data1[4]?" selected":"").">有効\n";
print "<option value=\"0\"".($set_data1[4]?"":" selected").">無効\n";
print <<EOD;
</select></td>
<td>
* 解析データ表\示を小さい文字で行います。<br>
* 表\示画面バランスをとるための設定です。<br>
</tr>
<tr><td colspan=3><br><br></td></tr>
<tr><td>ログ閲覧制限</td>
<td><select name="set6">
EOD
print "<option value=\"1\"".($set_data1[5]?" selected":"").">有効\n";
print "<option value=\"0\"".($set_data1[5]?"":" selected").">無効\n";
print <<EOD;
</select></td>
<td>
* 有効にすると、解析データを見るのにパスワードが必要になります。
</tr>
</table><br>
<input type="submit" value="設定">
<input type="reset" value="やり直し">
</form>
</td></tr>
<tr><td bgcolor=#d0d0e0>&nbsp;</td></tr>
<tr>
<td><br>
<script language="javascript">
<!--
function sel_ref(){

a1 = document.refs.set1.selectedIndex;
a2 = "";
EOD
$a2 = "";
for(0 .. $#set_ref){
	chomp($set_ref[$_]);@temp1 = split(/\t/,$set_ref[$_]);
	$a2 .="<option value=\"$temp1[1]\">$temp1[0] ( $temp1[1] )\n";
	$temp1[0] =~ s/"/\\"/g;
	print "if (a1 == $_){a2 = \"$temp1[0]\";}\n";
	}
print <<EOD;
document.refs.set2.value = a2;
}
// -->
</script>
<b>リンク元名称設定</b></a><br>
<small>*ここで設定した文字列を含むリンク元からのアクセスは、解析時に名称が表\示されるようになります。</small><br><br>
<form name="refs" method="post" action="./hana_admin.cgi">
<input type="hidden" name="pw" value="$IN{'pw'}">
<input type="hidden" name="act" value="set7">
<b>現在の設定</b><br>
<select name="set1" size=10 onchange="sel_ref()">$a2</select>
<br><br>
<b>変更・削除</b><br>
サイト名 <input type="text" name="set2" size=24><br>
<input type="submit" name="set3" value="変更">
<input type="submit" name="set3" value="削除">
</form>

<form method="post" action="./hana_admin.cgi">
<input type="hidden" name="pw" value="$IN{'pw'}">
<input type="hidden" name="act" value="set6">
<b>追加</b><br>
サイト名 <input type="text" name="set1" size=24><br>
サイトURL <input type="text" name="set2" value="http://" size=50><br>
<input type="submit" value="追加">
</form><br>

EOD
&foot;
}
#*****************************************************************************
sub enter{
$action = "認証";
&head;
print <<EOD;
<form method="post" action="./hana_admin.cgi">
パスワード <input type="password" name="pw" size=8>
<input type="submit" value="認証">
</form>
EOD
&foot;

}
#*****************************************************************************
sub error{
$action = "エラー";
&head;
print <<EOD;
<b>エラーです。<br>
<br>
$_[0]<br>
<br><br>
<form method="post" action="./hana_admin.cgi">
<input type="hidden" name="pw" value="$IN{'pw'}">
<input type="submit" value="戻る">
</form>
<br>
EOD
&foot;
}
#*****************************************************************************
sub head{
print "Content-type:text/html; charset=shift_jis\n\n";
print <<EOD;
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
<title>Access Analyzer</title>
<style type="text/css">
<!--
a:hover{color:#808080;}

-->
</style>
</head>
<body bgcolor=#ffffff text=#000000 link=#000000 vlink=#000000 alink=#808080>

<table align=center width=95%>
<tr><td><b>Access Analyzer</b><br><br></td></tr>
<tr><td bgcolor=#d0d0e0><font color=#000000>$action</font></td>
<tr><td><br>
EOD
}
#*****************************************************************************
sub foot{
print <<EOD;
<br>
</td></tr>
<tr><td bgcolor=#d0d0e0 align=right><font color=#000000>$action</font></td>
</table>
<br>
<div align=center>
<a href="http://dream.lib.net/room/" target="_blank">Accese Analyzer by The Room</a>
<!--著作権表\示を削除することを禁じます。-->
</div><br>
<br>
</body></html>
EOD
exit;
}
#*****************************************************************************
sub read_setting{
open(IN,$file_set);
eval{flock(IN,1)};
@set_data1 = split(/<>/,<IN>);
@set_data2 = split(/<>/,<IN>);
$set_data3 = <IN>;
close(IN);
pop(@set_data1);pop(@set_data2);
$set_data3 =~ s/<>/\n/g;
}
#*****************************************************************************
sub set_byte{
my $a1 = shift;
my $a2 = "$a1 byte";
if ($a1 >= 1024 * 1024){$a2 = sprintf("%9.2f"."Mb ( $a2)",$a1/1024/1024);}
elsif ($a1 >= 1024){$a2 = sprintf("%9d"."Kb ( $a2)",$a1/1024);}
return $a2;
}
#*****************************************************************************


Zerion Mini Shell 1.0