リムネット新サーバー対応REMORT_HOSTの取得

リムネット新サーバー対応REMORT_HOSTの取得

1999/12/05 
なぜか復活、使えるようになった…


1999/12/03 今日以降、この方法でもホスト情報が取得できなくなってしまった…
1999/11/22 掲示板に使用してるホスト情報が表示されなくなる。 リムネットがWWWサーバー(www.yo.rim.or.jp)を2000年問題対策の為、大幅な変更を実施。 その結果今まで使用されていたキャッシュサーバーは廃止され、そのキャッシュサーバーの影響で 一部修正して使用していたREMOTE_HOST取得ルーチンが不用になると思われた…… …が、ダメにょ〜  ζζ゚プ○   がっくし… さて、旧サーバーからどう変わったかと言うと  HTTP_FORWARDED :IPアドレス情報がなくなっている  REMOTE_ADDR   :IPアドレスが返ってくる(例 202.247.130.5)  REMOTE_HOST   :何も入ってません 早い話、コレじゃキャッシュサーバー時と変わんないやん。
ちょっと自分のホスト情報を見てみる。

まぁ単純にHTTP_FORWARDEDをREMOTE_ADDRに変えればよいと考えたわけですが
フォーマットが違うらしくそのまま変えただけではダメでした。
んなわけで下のCGIがちょっと手を加えたものです。
一応前と同様にgethostbyaddrでホスト名を取得しております。
nslookルーチン内でナニをやってるかは他の所を参照してね。Perlは始めたばっかりで詳しくは判らんのよ

【注意】元プログラムは何処から入手したか忘却してしまったのですが結構出回ってるヤツです。

#CGI実行開始付近又はREMOTE_HOST参照直前に入れる。
#ここから
if($ENV{REMOTE_ADDR}){($ENV{REMOTE_HOST})=&nslook($ENV{REMOTE_ADDR});}
#ここまで


#CGIの最後にでも入れてください。
#ここから
sub nslook{
    local($x)=@_;
    local($ip,$addr);
    if ($x =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)/ ){
        $ip="$1.$2.$3.$4";
        $addr=(gethostbyaddr(pack('C4',$1,$2,$3,$4),2))[0];
        if ($addr ne "") {
            return $addr;
        } else {
            return $ip;
        }
    }
    return "";
}
#ここまで