#!/usr/local/bin/perl ################################################### # LOG Recorder v1.06 for UNIX (c)www.rescue.ne.jp # ################################################### # SSIを記述するHTMLファイルから見たログフォルダの場所 $log_dir = './analyze/log/'; #------------------------------------------------------ ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time - 48*60*60); $delete_log = $log_dir . sprintf("%04d%02d%02d",$year +1900,$mon +1,$mday); if (-e $delete_log) { unlink($delete_log); } ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $log = $log_dir . sprintf("%04d%02d%02d",$year +1900,$mon +1,$mday); $HOUR = sprintf("%02d",$hour); #------------------------------------------------------ $HTTP_REFERER = $ENV{'HTTP_REFERER'}; $HTTP_REFERER =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; if ($HTTP_REFERER =~ /^file:/i || $HTTP_REFERER =~ /^bookmark/i) { $HTTP_REFERER = ""; } #------------------------------------------------------ $REMOTE_HOST = $ENV{'REMOTE_HOST'}; $REMOTE_ADDR = $ENV{'REMOTE_ADDR'}; if ($REMOTE_HOST eq '') { $REMOTE_HOST = $REMOTE_ADDR; } if ($REMOTE_HOST eq $REMOTE_ADDR) { $REMOTE_HOST = gethostbyaddr(pack('C4',split(/\./,$REMOTE_HOST)),2) || $REMOTE_ADDR; } if ($REMOTE_HOST =~ /(.*)\.(\d+)$/) { ; } elsif ($REMOTE_HOST =~ /(.*)\.(.*)\.(.*)\.(.*)$/) { $REMOTE_HOST = "\*\.$2\.$3\.$4"; } elsif ($REMOTE_HOST =~ /(.*)\.(.*)\.(.*)$/) { $REMOTE_HOST = "\*\.$2\.$3"; } #------------------------------------------------------ $HTTP_USER_AGENT = $ENV{'HTTP_USER_AGENT'}; $HTTP_USER_AGENT =~ s//>/g; if ($HTTP_USER_AGENT =~ /Win(.*)(95|98|NT)/i) { $OS = $2; $OS =~ y/a-z/A-Z/; $OS = "Windows $OS"; } elsif ($HTTP_USER_AGENT =~ /Macintosh/i) { $OS = "Macintosh"; } elsif ($HTTP_USER_AGENT =~ /Mac_PowerPC/i) { $OS = "Mac_PowerPC"; } elsif ($HTTP_USER_AGENT =~ /X11/i) { $OS = "X11"; } elsif ($HTTP_USER_AGENT =~ /Linux/i) { $OS = "Linux"; } elsif ($HTTP_USER_AGENT =~ /SunOS/i) { $OS = "SunOS"; } elsif ($HTTP_USER_AGENT =~ /FreeBSD/i) { $OS = "FreeBSD"; } elsif ($HTTP_USER_AGENT =~ /WebTV/i) { $OS = "WebTV"; } elsif ($HTTP_USER_AGENT =~ /AIX/i) { $OS = "AIX"; } elsif ($HTTP_USER_AGENT =~ /OSF1/i) { $OS = "OSF1"; } elsif ($HTTP_USER_AGENT =~ /NEWS-OS/i) { $OS = "NEWS-OS"; } elsif ($HTTP_USER_AGENT =~ /IRIX/i) { $OS = "IRIX"; } elsif ($HTTP_USER_AGENT =~ /HP-UX/i) { $OS = "HP-UX"; } elsif ($HTTP_USER_AGENT =~ /BSD\/OS/i) { $OS = "BSD/OS"; } else {$OS = "Etc."; } if ($HTTP_USER_AGENT =~ /(.+)\/(\d)\..*compatible\; MSIE (\d)\./) { $HTTP_USER_AGENT ="MSIE/$3 of $1/$2 compatible"; } elsif ($HTTP_USER_AGENT =~ /Mozilla\/(\d)\./) { $HTTP_USER_AGENT ="Mozilla/$1"; } #------------------------------------------------------ if (open(LOG,">> $log")) { print LOG "$HOUR\t$HTTP_REFERER\t$REMOTE_HOST\t$HTTP_USER_AGENT\t$OS\n"; close(LOG); chmod 0666,$log; } exit;