|目次|更新履歴|概要|検索窓|LAN用|imWHOISの設置|更新と改造|データ生成|
作成日:2003年02月23日、更新日:2004年01月10日 作成:鷹の巣Meta-WhoisのフリーCGIのimWHOISの設置方法を主体に説明します。Windows 2000/XPの自宅サーバーにて設置を確認しました。
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のバージョンが最新であれば、設置できると考えています。)
目次
CGI倶楽部さんのimWHOISのCGI設置方法(インターネット用)を説明します。
既にWebサーバー(AN HTTPDやApacheなど)とPerl5(Active Perl)と掲示板などのCGIが稼動しているものとします。 imWHOISの説明ページの上部のダウンロードアイコンをクリックし、WHOIS_XXX.lzh(XXXは、バージョン番号)をダウンロードし、解凍します。設置例は、imWHOISサンプルにある通りです。
解凍して出来た「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
ブラウザを起動し、URL欄に「http://www.example.com/cgi/whois/imWHOIS/im_whois_check.cgi」と入力して、設置検査を行ないます。Windows 2000やWindows XPでは、下記の様な表示が出ても正常に設置ができています。
./im_whois.cgi
上記ファイルの実行権(x)が与えられていません <--- Windowsサーバーの場合は、これが出ても正常。
設置検査の結果、以上の問題点が見つかりました
各ファイルのレイアウト、パーミッション、ユーザ変数を確認し
問題点を修正した後に再びこのスクリプトで検査して下さい
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内で利用する様に設定。
・・・後略・・・
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";
}
・・・後略・・・
ブラウザを起動し、URL欄に「http://www.example.com/cgi/whois/imWHOIS/im_whois.cgi」と入力して、動作試験を行ないます。起動すると、imWHOISサンプルのWebページと同じ画面が出れば、正常に起動されています。「IP or Domain」欄に自サイトのIPアドレスかドメイン名を入力して、期待通りの表示が出れば、とりあえずは設置が完了しました。しかし、今までの設定は、動作確認を行なうためのLAN(イントラネット)用の設定でした。このままインターネットに公開するのは、危険ですから、次項以降の簡単なセキュリティ対策を実施します。
まず、設定ファイル名を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サーバーから実行できなくする。
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
・・・後略・・・
ライブラリのディレクトリを移動したので、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サーバーに公開する場合に自サイトから受け入れとする。
・・・後略・・・
ブラウザを起動し、URL欄に「http://www.example.com/cgi/whois/im_whois.cgi」と入力して、動作試験を行ないます。起動すると、imWHOISサンプルのWebページと同じ画面が出れば、正常に起動されています。「IP or Domain」欄に自サイトのIPアドレスかドメイン名を入力して、期待通りの表示が出れば、これで設置が完了しました。これでインターネットに公開できます。
自サイトのWebページへの検索窓を設置する場合の表示例とhtmlタグの例を以下に示します。基本的には、ブラウザのURL欄に
「http://www.example.com/cgi/whois/im_whois.cgi」と入力して表示される画面のHTMLソースを基準に作成します。表示例では、データのリセットボタンを削除し、選択情報をhidden属性にして表示しないようにしています。
検索窓の表示例
検索窓の設置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アドレスを検索窓に初期設定できます。
Meta-Whoisの便利さをご理解して頂けましたか。CGIのスクリプトを読まれるとわかりますが、Perlのモジュールを使用すると、そんなに難しい処理ではありません。(最初に作った方は、大変だったと考えますが。)ここまでで、一応Meta-WhoisのCGIの設置が終了しましたが、このままでは、正確なサービスを提供できません。imWHOIS(高性能Meta-Whois)で使用されているデータは、月単位で変更されています。必ず、次節のデータの自動更新を行なって下さい。
|▲頁先頭|