#!/usr/local/bin/perl # ■Perlのパス,自分のプロバイダのPerlのパスに変更する。 # ----------------------------------------------------------- # MxCounter Version 3.0b2 # Copyright (C) 1998-1999 Masanori Maekawa. # E-MAIL : maekawa@mtj.biglobe.ne.jp # URL : http://www2s.biglobe.ne.jp/~maekawa/ # ----------------------------------------------------------- # { ----------------------------------------------------------- 要設定ここから # ■アクセスログを記録しないときは0にする。 $UseLog="1"; # ■IPアドレスからホストを取得しない:"1" または gethostbyaddrが使えない場合:"1"。 $DontGetHost="1"; # ■カウントデータファイルベース名,この後にはコーナー番号と拡張子(.dat)を自動付加,相対パスで指定 $DataFileName="../log/mxcount"; # ■アクセスログの作成先ファイル名,相対パスで指定 $LogFileName="../log/mxacslog.txt"; # ■カウンタ画像を置いたフォルダを指定,この後に0.gifなどの文字列が付加されて完成する,相対パスで指定 $GraphDir="../pic/"; # ■メーラー機能on/off,ログをメール送付で整理するか?1にするとON,0でOFF。 $LogMailer=1; # ************************************************************************* # ★以下は、ログメール機能を使う場合のみ要設定 # sendmailプログラムが使えない場合は、ログメール機能は使えません。 # ************************************************************************* # ■宛先,自分のメールアドレスを指定する。 $MailAddress='st-momo@hanya-n.net'; # ■SendMailプログラム,プロバイダ指定のSendMailのパスをフルパスで書く。 $SendMailPath='/usr/lib/sendmail'; # ■送付決定サイズ,メールに書き出して整理するときのサイズ。 $LogMaxSize=5000; # } ----------------------------------------------------------- 要設定ここまで @CommandLine=split(//,$ENV{'QUERY_STRING'}); $| = 1; $DataFileName.="@CommandLine[0].dat"; open(FILE,"$DataFileName"); flock(FILE,1); $Count=; $TodayCount=; $OldDay=; $OldDayCount=; close(FILE); $Count+=0; $TodayCount+=0; $OldDay+=0; $OldDayCount+=0; #if($ENV{'REMOTE_ADDR'} eq "210.237.160.9") { #print "Content-type: image/gif\n\n"; #open(FILE,"9.gif"); #flock(FILE,1); #print ; #close(FILE); #open(FILE,">>$LogFileName"); #flock(FILE,2); #print FILE "[210.237.160.9]\n"; #close(FILE); #exit 0; #} ($dmy,$dmy,$dmy,$TodayDay,$dmy,$dmy,$dmy,$dmy,$dmy)=localtime(time); if(@CommandLine[2] eq "U") { $Count++; if($TodayDay ne $OldDay) { $OldDayCount=$TodayCount; $TodayCount=1; } else { $TodayCount++; } # open(FILE,"+<$DataFileName"); open(FILE,">$DataFileName"); flock(FILE,2); # truncate(FILE,0); print FILE $Count."\n"; print FILE $TodayCount."\n"; print FILE $TodayDay."\n"; print FILE $OldDayCount."\n"; close(FILE); } if(@CommandLine[2] eq "Y") { $Count=$OldDayCount; } if(@CommandLine[2] eq "T") { $Count=$TodayCount; } if($CommandLine[1] gt length($Count)) { $GifFileName=$GraphDir."0"; } else { $GifFileName=$GraphDir.substr($Count,$CommandLine[1]*-1,1); } print "Content-type: image/gif\n\n"; open(FILE,"$GifFileName.gif"); flock(FILE,1); print ; close(FILE); if(@CommandLine[2] eq "U") { if($UseLog eq "1") { $RemoteAddress=$ENV{'REMOTE_ADDR'}; if($DontGetHost eq "1") { $Host=$RemoteAddress; } else { ($a,$b,$c,$d)=split(/\./,$RemoteAddress); $IPAddress=pack("C4",$a,$b,$c,$d); $Host=gethostbyaddr("$IPAddress",2); if($Host eq "") { $Host=$RemoteAddress; } } $Browser=$ENV{'HTTP_USER_AGENT'}; ($sec,$min,$hour,$day,$mon,$year)=localtime(time); $mon++; $line=sprintf("[P%d-%06d-%05d %02d/%02d/%02d %02d:%02d:%02d]",@CommandLine[0],$Count,$TodayCount,$year,$mon,$day,$hour,$min,$sec); $line.="< $Host > $Browser\n"; open(FILE,">>$LogFileName"); flock(FILE,2); print FILE $line; close(FILE); if($LogMailer) { $FileSize = -s $LogFileName; if($FileSize >= $LogMaxSize) { open(LOG,"$LogFileName"); flock(LOG,1); open(MAIL,"|$SendMailPath ".$MailAddress) || die "Fail:SendMail"; print MAIL "From: $MailAddress\r\n"; print MAIL "Reply-to: $MailAddress\r\n"; print MAIL "Subject: MxCounter Report ($year/$mon/$day $hour) : $Count\r\n\r\n"; while() { print MAIL $_; } close(MAIL); close(LOG); truncate($LogFileName,0); } } } } exit 0; # End of file.