作成日:2003年02月23日、更新日:2004年01月10日 作成:鷹の巣

Meta-WhoisのフリーCGIのimWHOISの設置方法を主体に説明します。Windows 2000/XPの自宅サーバーにて設置を確認しました。


imWHOISの設置方法(インターネット用CGI)

ここで紹介する方法は、問合せ先を指定しなくてもIPアドレスやドメイン名から所属組織を調べることができるMeta-Whois(統合型Whois)検索用CGIのimWHOISの設置方法について述べます。そして、自サイトのWebページにMeta-Whois(統合型Whois)検索窓を設置する方法について説明します。

Windowsサーバーには、whoisコマンドがないのですが、Active Perlには、socketモジュールがあるので、その内にMeta-WhoisのCGIを設置しようと考えていました。CGIの改造覚悟で、既存のUNIX用Meta-WhoisのフリーCGIをインターネットで物色していると、いとのページさんのAN HTTPDゲストブック/コメント集 全文検索のWebページでimWHOIS(CGI倶楽部)が利用されていました。 基本的には、このCGIがWindows 2000やWindows XPのサーバーでも、そのまま設置できましたので、その設置方法を中心に説明します。(Windows 95/98/Meでは、未確認ですが、Winsockのバージョンが最新であれば、設置できると考えています。)

目次

  1. ダウンロードと解凍
  2. CGI実行パス下への設置
  3. 設置検査用CGIの起動と確認
  4. im_whois.cgi用設定ファイルの設定
  5. im_whois.cgiファイルの改造
  6. 途中動作確認試験
  7. 設定ファイル名の変更とライブラリディレクトリ(フォルダ)の移動
  8. im_whois.cgiファイルの変更
  9. im_whois.cgi用設定ファイル(im_whois.conf.cgi)の設定変更
  10. 最終動作確認試験
  11. Webページへの検索窓の設置例
  12. あとがき
  13. この頁の更新履歴
  14. 謝辞

CGI倶楽部さんのimWHOISのCGI設置方法(インターネット用)を説明します。

1. ダウンロードと解凍

既にWebサーバー(AN HTTPDやApacheなど)とPerl5(Active Perl)と掲示板などのCGIが稼動しているものとします。 imWHOISの説明ページ上部のダウンロードアイコンをクリックし、WHOIS_XXX.lzh(XXXは、バージョン番号)をダウンロードし、解凍します。設置例は、imWHOISサンプルにある通りです。

2. CGI実行パス下への設置

解凍して出来た「cgi-bin」というディレクトリ(フォルダ)名を「whois」に名前を変更し、WebサーバーのCGI実行パス下のディレクトリ(フォルダ)に移動させます。以下のディレクトリ(フォルダ)例は、WebサーバーのCGI実行パスを「cgi」とし、それに対応するディレクトリ(フォルダ)名を「D:\www\cgi-bin」として、説明しています。

□解凍して出来たディレクトリ(フォルダ)の配置例□
D:\www\cgi-bin\whois\imWHOIS\im_whois.cgi
                    |       \im_whois.conf
                    |       \im_whois_check.cgi
                    \lib    \pwhosi.pl
                            \rirs.list
                            \tld.list

□WWWサーバーのURL□
http://www.example.com/cgi/whois/imWHOIS/im_whois.cgi
http://www.example.com/cgi/whois/imWHOIS/im_whois_check.cgi

3. 設置検査用CGIの起動と確認

ブラウザを起動し、URL欄に「http://www.example.com/cgi/whois/imWHOIS/im_whois_check.cgi」と入力して、設置検査を行ないます。Windows 2000やWindows XPでは、下記の様な表示が出ても正常に設置ができています。

./im_whois.cgi
        上記ファイルの実行権(x)が与えられていません <--- Windowsサーバーの場合は、これが出ても正常。

設置検査の結果、以上の問題点が見つかりました
各ファイルのレイアウト、パーミッション、ユーザ変数を確認し
問題点を修正した後に再びこのスクリプトで検査して下さい

4. im_whois.cgi用設定ファイルの設定

im_whois.cgi用設定ファイル(im_whois.conf)をメモ帳などで$allow_referer = '';の部分だけを編集します。
LAN内で利用する場合は、$allow_referer = 'http://*';とし、
インターネットWWWサーバーに公開する場合は、$allow_referer = 'http://www.example.com/*';とします。

# =================
# ユーザ変数
# =================

# pwhois.plの相対パス(im_whois.cgi基準)
        $pwhois_pl = '../lib/pwhois.pl';

# tld.listの相対パス(im_whois.cgi基準)
        $tld_list = '../lib/tld.list';

# rirs.listの相対パス(im_whois.cgi基準)
        $rirs_list = '../lib/rirs.list';

# whoisコマンドの絶対パス(Socket利用の場合は '')
        $whois = '';  # <--- Windowsサーバーの場合は、Socketを利用するので、そのまま。

# whoisコマンドのフォーマット(whoisコマンド使用時のみ有効)
# 0で whois -h whoisserver domain (UNIX)形式
# 1で whois domain@whoisserver (Linux)形式
        $wformat = 0; # <--- Windowsサーバーの場合は、Socketを利用するので、そのまま。

# 時間表示オフセット値(秒数で指定)
        $tm_offset = 0;

# リンク元制限(設定したURL下のリンクでないと利用できなくなる)
# 注) ''とした場合は設置サーバからのリンクを受け入れる.
# 注) *は正規表現の.*と同じである.
# 注) わからない場合は 'http://*'とし、第三者にpwhoisの存在を教えないこと.
# 例) $allow_referer = 'http://servername/~myid/*';  # 自サイトから受入
#     $allow_referer = 'http://*';                   # 全リンク受け入れ
#     $allow_referer = '';                           <--- このままでは利用出来ない。
      $allow_referer = 'http://*'; #         <--- とりあえず、設置確認を優先にして、LAN内で利用する様に設定。

・・・後略・・・

5. im_whois.cgiファイルの改造必須ではありません。)

im_whois.cgiファイルをメモ帳などで開き、99行目にリンクを追加します。(メモ帳で99行目に行くには、「Ctrl」と「G」のキーを同時に押して99と入力します。)

・・・前略・・・

sub out{
        local($ipd,$nic,$out) = ($_[0],$_[1],$_[2]);
        if($ipd && $nic){
                &printWhois($ipd,$nic);
                print "\n$out\n</pre>\n";
        } elsif($nic){ # TLD LIST
        print $out;
        } else{
                &printHelp;
        print "\n$out\n</pre>\n";
        }
        print "\n<p style=\"text-align:right\"><a href=\"http://www.cgi-club.com/\">CGI倶楽部 imWHOIS</a></p>";
        print "\n</body>\n</html>\n";
}

・・・後略・・・

6. 途中動作確認試験

ブラウザを起動し、URL欄に「http://www.example.com/cgi/whois/imWHOIS/im_whois.cgi」と入力して、動作試験を行ないます。起動すると、imWHOISサンプルのWebページと同じ画面が出れば、正常に起動されています。「IP or Domain」欄に自サイトのIPアドレスかドメイン名を入力して、期待通りの表示が出れば、とりあえずは設置が完了しました。しかし、今までの設定は、動作確認を行なうためのLAN(イントラネット)用の設定でした。このままインターネットに公開するのは、危険ですから、次項以降の簡単なセキュリティ対策を実施します。

7. 設定ファイル名の変更とライブラリディレクトリ(フォルダ)の移動

まず、設定ファイル名をim_whois.confよりim_whois.conf.cgiに変更して、WWWサーバーを通して設定ファイルが見えないようにします。また、下図のようにライブラリファイルが入ったディレクトリ(フォルダ)をWebサーバーのCGIの実行パスの「cgi-bin」というディレクトリ(フォルダ)の外に移動させます。(外といっても、Webサーバーのドキュメントルート下には、設置しないで下さい。)

□解凍して出来たディレクトリ(フォルダ)の配置例(変更前)□
D:\www\cgi-bin\whois\imWHOIS\im_whois.cgi
                    |       \im_whois.conf
                    |       \im_whois_check.cgi
                    \lib    \pwhosi.pl
                            \rirs.list
                            \tld.list

□解凍して出来たディレクトリ(フォルダ)の配置例(変更後)□
D:\www\cgi-bin\whois\im_whois.cgi
      |             \im_whois.conf.cgi <--- WWWサーバーを通じて設定ファイルが見れないようにファイル名を変更する。※1
      |             \im_whois_check.cgi<--- このファイルは不要なので、削除するかファイル名を変更する。
      \cgi-lib\whois\pwhosi.pl         <--- ライブラリのディレクトリをWWWサーバーの実行パスの外に移動する。※2
                    \rirs.list
                    \tld.list

□WWWサーバーのURL□
http://www.example.com/cgi/whois/im_whois.cgi
http://www.example.com/cgi/whois/im_whois_check.cgi <--- これは、WWWサーバーから実行できなくする。

8. im_whois.cgiファイルの変更

im_whois.cgi用設定ファイル名をim_whois.conf.cgiに変更したので、$im_whois_conf = './im_whois.conf.cgi';と変更します。

#!/usr/local/bin/perl
# ===========================================================================
# im_whois.cgi ver1.05
#   Copyright (C) 2000-2001 pika@cgi-club.com
#   IPv4アドレス・ドメイン名から所属組織を調査するスクリプト
# ===========================================================================
#local $SIG{__WARN__}=sub{&printMime;print "<pre>$_[0]</pre>\n";};
# =================
# 設置方法・使用方法
# =================

# im_whois.confを参照のこと.

# =================
# ユーザ変数
# =================

# im_whois.confの相対パス
	$im_whois_conf = './im_whois.conf.cgi'; # <--- 設定ファイル名を変更したのに伴う変更。※1


・・・後略・・・

9. im_whois.cgi用設定ファイル(im_whois.conf.cgi)の設定変更

ライブラリのディレクトリを移動したので、pwhois.plとtld.listとrirs.listのim_whois.cgiからの相対パスを変更します。 また、$allow_referer = 'http://www.example.com/*';として、インターネットWWWサーバーに公開する場合の設定(自サイトから受け入れ)とします。

# =================
# ユーザ変数
# =================

# pwhois.plの相対パス(im_whois.cgi基準)
        $pwhois_pl = '../../cgi-lib/whois/pwhois.pl'; # <--- ライブラリのディレクトリを移動したのに伴う変更※2

# tld.listの相対パス(im_whois.cgi基準)
        $tld_list = '../../cgi-lib/whois/tld.list';   # <--- ライブラリのディレクトリを移動したのに伴う変更※2

# rirs.listの相対パス(im_whois.cgi基準)
        $rirs_list = '../../cgi-lib/whois/rirs.list'; # <--- ライブラリのディレクトリを移動したのに伴う変更※2

# whoisコマンドの絶対パス(Socket利用の場合は '')
        $whois = '';

# whoisコマンドのフォーマット(whoisコマンド使用時のみ有効)
# 0で whois -h whoisserver domain (UNIX)形式
# 1で whois domain@whoisserver (Linux)形式
        $wformat = 0;

# 時間表示オフセット値(秒数で指定)
        $tm_offset = 0;

# リンク元制限(設定したURL下のリンクでないと利用できなくなる)
# 注) ''とした場合は設置サーバからのリンクを受け入れる.
# 注) *は正規表現の.*と同じである.
# 注) わからない場合は 'http://*'とし、第三者にpwhoisの存在を教えないこと.
# 例) $allow_referer = 'http://servername/~myid/*';  # 自サイトから受入
#     $allow_referer = 'http://*';                   # 全リンク受け入れ
#     $allow_referer = '';                            <--- このままでは利用出来ない。
      $allow_referer = 'http://www.example.com/*';  # <--- インターネットWWWサーバーに公開する場合に自サイトから受け入れとする。

・・・後略・・・

10. 最終動作確認試験

ブラウザを起動し、URL欄に「http://www.example.com/cgi/whois/im_whois.cgi」と入力して、動作試験を行ないます。起動すると、imWHOISサンプルのWebページと同じ画面が出れば、正常に起動されています。「IP or Domain」欄に自サイトのIPアドレスかドメイン名を入力して、期待通りの表示が出れば、これで設置が完了しました。これでインターネットに公開できます

11. Webページへの検索窓の設置例

自サイトのWebページへの検索窓を設置する場合の表示例とhtmlタグの例を以下に示します。基本的には、ブラウザのURL欄に
「http://www.example.com/cgi/whois/im_whois.cgi」と入力して表示される画面のHTMLソースを基準に作成します。表示例では、データのリセットボタンを削除し、選択情報をhidden属性にして表示しないようにしています。

検索窓の表示例

CGI倶楽部 imWHOIS  IPアドレスかドメイン名を入力→

検索窓の設置htmlタグの例(html文法は、XHTML 1.0 strictです。HTML 4.01 strictの場合は、「 />」を「>」に置換して下さい。)

<!-- imWHOIS -->
<form method="post" action="http://www.example.com/cgi/whois/im_whois.cgi">
<p>
<a href="http://www.cgi-club.com/"><strong>CGI倶楽部 imWHOIS</strong></a>
  <small>IPアドレスかドメイン名を入力→</small>
<input type="text" name="ipd" size="30" value="" tabindex="30" accesskey="T" />
<input type="hidden" name="nic" value="" />
<input type="submit" name="x" value="検索" tabindex="31" accesskey="S" />
</p>
</form>

注)SSIが使用できるhtmlファイルやshtmlファイルでは、
  <input type="text" name="ipd" size="30" value="" tabindex="30" accesskey="T" />
  を
  <input type="text" name="ipd" size="30" value='<!--#echo var="REMOTE_ADDR"-->' tabindex="30" accesskey="T" />
  に変更すると、アクセス元のIPアドレスを検索窓に初期設定できます。

12. あとがき

Meta-Whoisの便利さをご理解して頂けましたか。CGIのスクリプトを読まれるとわかりますが、Perlのモジュールを使用すると、そんなに難しい処理ではありません。(最初に作った方は、大変だったと考えますが。)ここまでで、一応Meta-WhoisのCGIの設置が終了しましたが、このままでは、正確なサービスを提供できません。imWHOIS(高性能Meta-Whois)で使用されているデータは、月単位で変更されています。必ず、次節のデータの自動更新を行なって下さい。

13.この頁の更新履歴

14.謝辞

▲頁先頭