2000/03/08 (水) 02:17:52      [mirai]
#! /usr/local/bin/perl
#
#
#1997.9.14製作
#すくりぷと ばい ゆいちゃっと 
#         Since  1996
#

&html;
exit 0;

sub html{
print "Content-type: text/html\n\n";
print <<"_HTML_";
<HTML><HEAD><TITLE>環境変数のひ・み・つ♪</TITLE></HEAD>
<BODY BGCOLOR="#A1FE9F" TEXT="#000000" LINK="#ff0000" VLINK="#ff0000" ALINK="#FF0000">
環境変数のひ・み・つ♪<BR><HR>
以下が環境変数です。<BR>
HTTP_VIAや、HTTP_X_FORWARDED_FORが大切です。<BR>
HTTP_USER_AGENTにviaがつけばそれは....。<BR><HR>
_HTML_
	foreach (sort keys %ENV){
		print "$_=$ENV{$_} <BR>\n";
	}
$host=&gethost;
print <<"_HTML_";
<HR><FONT size=4>Your HOST is ($host) ..OK?</FONT><BR><HR>
_HTML_
print "<HR><H5 ALIGN=right><A HREF=\"http://www.cup.com/yui/\">ゆい'CGI</A></H5></BODY></HTML>\n";
}#html END

sub gethost{
$host=$ENV{'REMOTE_HOST'};
$host=$ENV{'HTTP_VIA'} if( $ENV{'HTTP_VIA'}=~s/.*\s(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/);
$host=$ENV{'HTTP_X_FORWARDED_FOR'} if( 
$ENV{'HTTP_X_FORWARDED_FOR'}=~s/^(\d+)\.(\d+)\.(\d+)\.(\d+)(\D*).*/$1.$2.$3.$4/ );
$host=$ENV{'HTTP_FORWARDED'} if( 
$ENV{'HTTP_FORWARDED'}=~s/.*\s(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/g);
#次の一行をどこにいれるか気をつけること。(場所によっては、サーバが負荷のせいでダウンします。)
$host=&nslook($host) if( ($host=~/^(\d+)\.(\d+)\.(\d+)\.(\d+)/) );
return $host;
}#host END

sub nslook{
	local($x)=@_;
	local($ip,$addr);
	if($x=~/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/){
		$ip="$1.$2.$3.$4";
		$addr=(gethostbyaddr(pack('C4',$1,$2,$3,$4),2))[0];
		if($addr ne ""){return $addr;}else{return $ip;}
	}
	return $x;
}#nslook

__END__
 
 なあ、このスクリプトのログ残すとき、どうすりゃいい?
 だれかコードかいてくり