#!/usr/bin/perl # require 'jcode.pl'; require 'stdio.pl'; use Socket; %STDIN = (); #stdio::getFormData(\%STDIN, 1, "sjis", 1, "-"); #stdio::getFormData(\%STDIN, 1, "euc", 1, "-"); stdio::getFormData(\%STDIN, 1, "euc"); $s_referrer = $STDIN{'ref'}; $s_referrer_len = $STDIN{'reflen'}; $s_screen_width = $STDIN{'scw'}; $s_screen_height= $STDIN{'sch'}; $s_screen_color = $STDIN{'scd'}; $s_cpu = $STDIN{'cpu'}; $s_cookie = $STDIN{'cok'}; $s_file = $STDIN{'file'}; &do_main; &do_image; exit(0); sub get_date { local(@week) = ("日", "月", "火", "水", "木", "金", "土"); local($sec, $min, $hour, $day, $mth, $year, $weekday) = localtime(time); $year += 1900; $mth++; $mth = "0$mth" if ($mth < 10); $day = "0$day" if ($day < 10); $hour= "0$hour" if ($hour< 10); $min = "0$min" if ($min < 10); $sec = "0$sec" if ($sec < 10); $weekstr = $week[$weekday]; $sys_date = $year.$mth.$day; $sys_week = $weekday; $sys_year = $year; $sys_mth = $mth; $sys_day = $day; $sys_time = $hour.$min.$sec; $sys_hour = $hour; $sys_date2= $year.'/'.$mth.'/'.$day; $sys_time2= $hour.':'.$min.':'.$sec; } sub do_main { my($filename,$write_data); local(*FILE); $logdir = './log/'; $logdir2= './log2/'; $logdir3= './log3/'; &get_date; $iaddr = pack('C*', split(/\./, $ENV{'REMOTE_ADDR'})); $s_host = gethostbyaddr($iaddr, AF_INET); $s_ip = $ENV{'REMOTE_ADDR'}; $s_agent = &agent_conv($ENV{'HTTP_USER_AGENT'}); $write_data = "$sys_time2,"; # 1 $write_data .= "$s_file,"; # 2 $write_data .= "$s_screen_width,"; # 3 $write_data .= "$s_screen_height,"; # 4 $write_data .= "$s_screen_color,"; # 5 $write_data .= "$s_cpu,"; # 6 $write_data .= "$s_cookie,"; # 7 $write_data .= "$s_ip,"; # 8 $write_data .= "$s_host,"; # 9 $write_data .= "$s_agent,"; #10 # $write_data .= "$s_referrer,"; #11 # $write_data .= "$s_referrer_len,"; #12 $write_data .= ",,\n"; # $filename = $logdir.$sys_date.".log"; # open(FILE,">>$filename"); # eval("flock(FILE, 2)"); # 2=LOCK_EX # print FILE $write_data; # close(FILE); if ($s_file eq 'index') { $filename = $logdir.$sys_date.".log"; open(FILE,">>$filename"); eval("flock(FILE, 2)"); # 2=LOCK_EX print FILE $write_data; close(FILE); $filename = $logdir.$sys_date.".cnt"; open(FILE,">>$filename"); eval("flock(FILE, 2)"); # 2=LOCK_EX print FILE " "; close(FILE); $filename = $logdir."counter.fil"; open(FILE,">>$filename"); eval("flock(FILE, 2)"); # 2=LOCK_EX print FILE " "; close(FILE); if ($s_referrer ne '' && index($s_referrer,"sonicbrain.co.jp") < 0) { $filename = $logdir2."ref-".$sys_date.".log"; open(FILE,">>$filename"); eval("flock(FILE, 2)"); # 2=LOCK_EX print FILE "$sys_time2,$s_referrer,\n"; close(FILE); } } else { $filename = $logdir3.$sys_date."-".$s_file.".cnt"; open(FILE,">>$filename"); eval("flock(FILE, 2)"); # 2=LOCK_EX print FILE " "; close(FILE); } } sub agent_conv { local($string) = @_; $string =~ s/,/./g; return $string; } sub do_image { #// 準備 $fname = 'space.gif'; $imgtype = 'gif'; #// 画像オープン open(IMG, "$fname") or die; #// イメージ表示 binmode IMG; binmode STDOUT; print "Content-type: image/$imgtype\n\n"; print while (); #// 画像クローズ close(IMG); }