WEBrick で簡易Webサーバ

ANHTTPDを使ってhikiを動かしていましたが
どうしてか、なかなか接続出来ない事がしばしば。
何回もリロードしたり新しいページで開き直してようやく表示されるのはざら。


CPU負荷が高いときに接続しにくいのだろうとは思ったのですが
タイムアウト時間より遙かに短い6[s]程度で切れてしまう・・・。
設定を変えてみたりしたけど効果無し。
他にローカルで簡単に立てられるWebサーバソフトは無いものかと探したけど見つからない。


そこで思い出した。
ruby でできるじゃないか!」と。


そう、WEBrick を使えば良いんですよ。
しかも、数行プログラムを書くだけでいい。ステキ。

require 'webrick'
# アクセスを許されるIPアドレスの一覧
ACCEPTED_IP_ADDRESS = {"127.0.0.1" => ""}

# リクエストを受け取ったときに実行される
check_proc = Proc.new {|req, res|
  # IPアドレスをチェックする
  if !ACCEPTED_IP_ADDRESS[req.addr[3]]
    raise Exception.new("許されていないIPです。=> #{req.addr[3]}")
  end
}

# サーバの起動
s = WEBrick::HTTPServer.new(
  :HTTPVersion     => WEBrick::HTTPVersion.new("1.1"),
  :BindAddress     => 'localhost',
  :Port            => '2006',
  :DocumentRoot    => 'd:/www_root',
  :CGIInterpreter  => 'd:/ruby/bin/ruby.exe' , 
  :Logger          => nil,
  :CGIPathEnv      => nil,
  :RequestCallback => check_proc
)
trap("INT"){ s.shutdown }
s.start


自分なりにIPアドレスチェックを入れてみた。
接続も良好で問題なし!


一つ問題なのは ruby を実行した DOS 画面が起動しっぱなしってことかな・・・。