%PDF- %PDF-
Direktori : /home/rappan/www/cgi_access/ |
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/</</g; $text =~ s/>/>/g; } $text =~ s/&/&/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> <img src="$url_cgi/hana_page.cgi?id=$IN{'set2'}&type=main"> EOD if ($oth_ct_indi == 1){ $sys_msg .= <<EOD; (累計カウンタ)<br><img src="$url_cgi/hana_page.cgi?id=$IN{'set2'}&type=today"> (今日のカウンタ)<br><img src="$url_cgi/hana_page.cgi?id=$IN{'set2'}&type=yest"> (昨日のカウンタ)<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> </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> </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> </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> </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> </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> </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; } #*****************************************************************************