#!/usr/local/bin/perl # # WebACCESS Type 2 for SSIを使わない特殊なバージョン (c)rescue.ne.jp # (アクセスカンタ付き) # # 設置の例(biglobeの場合) # # public_html # | # |-- index.html # フレームを利用してindex.cgiへアクセスする為のファイル. # |-- index.dat # 実際のホームページ用HTMLはindex.datに記録します. # |-- index.cgi (755) # 処理CGI # | # |-- log/ (777) # | # |-- bar.gif # グラフ用画像 # |-- count.dat (666) # 累計カウント数 # |-- count_day.dat (666) # 本日のカウント数 # |-- count_dmy.dat (666) # 日付 # |-- count_reg.dat (666) # 昨日のカウント数 # |-- webaxs2.cgi (755) # 解析結果表示CGI # 上記の構成で設置する場合は、★印の部分だけ自分用に設定するだけです. # ★あなたのホームページURL $reload = 'http://www.host.jp/~user/'; # ホームページHTML(index.dat)のパス $index = './index.dat'; # ★index.datが読み込めない場合に表示するページのURL $backup = 'http://www.host.jp/~user/backup.html'; # 作業ファイル # logというディレクトリ(パーミッション777)を作成し、 # count.dat count_day.dat count_dmy.dat count_reg.dat を置く. # count_dmy.datには設置する日(15日なら15)を、その他のファイルには0を入れておく. $file = "./log/count.dat"; $file_day = "./log/count_day.dat"; $file_dmy = "./log/count_dmy.dat"; $file_reg = "./log/count_reg.dat"; $base_dir = "./log/"; # ロックファイル(このファイルは用意する必要はありません) $lockfile = "./log/count.lock"; # ロック機構を使うかどうかの設定 # 正常に設置できているとして、「カウント数」の場所に常にBUSYと表示される場合は # $lock_key = 0; と設定してください. $lock_key = 1; # 集計に含めないURLを指定(この文字列を含むデータを記録しない) # .の前には\を書く @mine = ( "http://www\.host\.jp/~user/", "", "", "", ); # アクセスを拒否するリモートホスト名を指定 # .の前には\を書く @deny_host = ( "xxx\.or\.jp", "", "", "", ); #------------------------------------------------------------------------------------ #時刻関係は、外国サーバを利用の方は当サイトのFAQを読んで時差調整してください. #2日前のログを削除 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time - 48*60*60); $del_log = sprintf("%02d%02d%02d",$year,$mon +1,$mday); $del_log = $base_dir . "$del_log\.csv"; unlink("$del_log"); #本日の時刻取得 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $log = sprintf("%02d%02d%02d",$year,$mon +1,$mday); $log = $base_dir . "$log\.csv"; #ホスト名取得 $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($host eq '') { $host = $addr; } if ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; } $ref = $ENV{'HTTP_REFERER'}; $ref =~ s/\%7E/\~/ig; ($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg) = gmtime(time + 24*60*60); $y0="Sunday"; $y1="Monday"; $y2="Tuesday"; $y3="Wednesday"; $y4="Thursday"; $y5="Friday"; $y6="Saturday"; $m0="Jan"; $m1="Feb"; $m2="Mar"; $m3="Apr"; $m4="May"; $m5="Jun"; $m6="Jul"; $m7="Aug"; $m8="Sep"; $m9="Oct"; $m10="Nov"; $m11="Dec"; @youbi = ($y0,$y1,$y2,$y3,$y4,$y5,$y6); @monthg = ($m0,$m1,$m2,$m3,$m4,$m5,$m6,$m7,$m8,$m9,$m10,$m11); $date_gmt = sprintf("%s\, %02d\-%s\-%04d %02d:%02d:%02d GMT",$youbi[$wdayg],$mdayg,$monthg[$mong],$yearg +1900,$hourg,$ming,$secg); @pairs = split(/;/,$ENV{'HTTP_COOKIE'}); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $name =~ s/ //g; $COOKIE{$name} = $value; } $CC = $COOKIE{$reload}; if ($CC eq '' || $CC != $mday) { print "Set-Cookie: $reload=$mday; expires=$date_gmt\n"; $CCX = 1; #初回訪問 } else { $CCX = 0; } foreach $i (@deny_host) { if ($i ne '' && $host =~ /$i/i) { $DENY = 1; last; } } if ($DENY) { #アクセス拒否メッセージ print "Content-type: text/html\n\n"; print <<'EOF';