#!/usr/local/bin/perl # # ログ記録CGI WebACCESS v3.0 is Free. (c)rescue.ne.jp #(SSIが使えないサーバの為の画像でデータを取得するタイプ) # #-------------------------------------------------------------------# # ログ記録ファイルの設定(このCGIから見た位置関係) $log = "./log.csv"; # 最大ログ記録件数 $max = "1000"; #-------------------------------------------------------------------# # 時刻取得 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); if ($hour < 10) { $hour = "0$hour"; } #-------------------------------------------------------------------# # ブラウザ名の取得 # Mozilla/3.0 (Windows 95; I) の場合 -> Mozilla/3 # Mozilla/2.0 (compatible; MSIE 3.01; Windows 95) の場合 -> MSIE/3 (Mozilla/2 compatible) ($hua,$vers) = split('/',$ENV{'HTTP_USER_AGENT'}); if ($vers =~ /MSIE/) { ($hua1,$dummy1) = split(/MSIE /,$vers); ($hua2,$dummy2) = split(/\;/,$dummy1); ($hua3,$dummy3) = split(/\./,$hua2); ($hua4,$dummy4) = split(/\(/,$vers); ($hua5,$dummy5) = split(/\./,$hua4); $hua ="MSIE\/$hua3 (Mozilla/$hua5 compatible)"; } elsif ($hua eq "Mozilla") { ($hua4,$dummy4) = split(/\(/,$vers); ($hua5,$dummy5) = split(/\./,$hua4); $hua ="Mozilla\/$hua5"; } #-------------------------------------------------------------------# # リモートホスト名の判定 $rh = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($rh eq $addr) { $rh = gethostbyaddr(pack('C4',split(/\./,$rh)),2) || $addr; } if ($rh =~ /(.*)\.(\d+)$/) { ; } elsif ($rh =~ /(.*)\.(.*)\.(.*)\.(.*)$/) { $rh = "\*\.$2\.$3\.$4"; } elsif ($rh =~ /(.*)\.(.*)\.(.*)$/) { $rh = "\*\.$2\.$3"; } #-------------------------------------------------------------------# if (!open(DB,"$log")) { &error(1); } @lines = ; close(DB); $ic = 0; foreach $line (@lines) { $ic++; if ($ic == $max) { last; } push(@new,$line); } $value = "$hour\,$rh\,$hua\n"; unshift(@new,$value); if (!open(DB,">$log")) { exit; }; print DB @new; close(DB); @array = ( "47","49","46","38","39","61","01", "00","01","00","80","01","00","00", "00","00","ff","ff","ff","21","f9", "04","01","00","00","01","00","2c", "00","00","00","00","01","00","01", "00","40","02","02","4c","01","00", "3b"); print "Content-type: image/gif\n\n"; foreach (@array) { $data = pack('C*',hex($_)); print $data; } exit;