Index: [Article Count Order] [Thread]

Date: Tue, 04 Feb 2003 10:09:31 +0900 (JST)
From: GOTOU Yuuzou <gotoyuzo@notwork.org>
Subject: [webrickja:73] Re: webrick-1.3.0?
To: webrickja@notwork.org
Message-Id: <20030204.100931.68549203.gotoyuzo@kotetsu.priv.tokyo.netlab.jp>
In-Reply-To: <20030204070005M.seki@mr.nasu.toshiba.co.jp>
References: <20030204070005M.seki@mr.nasu.toshiba.co.jp>
X-Mail-Count: 00073

In message <20030204070005M.seki@mr.nasu.toshiba.co.jp>,
 `m_seki@mva.biglobe.ne.jp' wrote:
> 某所(?)でwebrick-1.3.0の噂をききました。
> RAAやwww.webrick.orgだと1.2.3のようですが
> 1.3.0ってもうリリースされているのでしょうか?

いえ、今の所 CVS 上でそうなってるだけです。

multipart/form-data に対応してときに、フォームの要素として 
HTTPUtils::FormData を導入した時にバージョンを上げました。

他にも 1.2.3 からの大きな変更点には次のようなものがあります。

  * keita さんの CLF ([webrickja:67])のマージ。(webrick/accesslog.rb)

  * webrick/httpauth.rb に htpasswd 形式のパスワードファイルを
    扱うための Htpasswd クラスの追加。(RWikiにあるダイジェスト
    認証も取り込みたいかも)

  * GenericServer の accept_hoot、start_hook、stop_hook の廃止。
    代わりに config に Proc オブジェクトを設定すると、それぞれ
    次のタイミングで起動されます。

      :StartCallback     サーバを起動した直後
      :StopCallback      サーバを終了する直前
      :AcceptCallback    TCPServer#acceptした時

    次のプログラムは、:AcceptCallback と TCPWrapper を合わせてアク
    セス制御を行う例です。

require 'webrick'
require 'tcpwrap'

logger = WEBrick::Log::new($stderr, WEBrick::Log::DEBUG)
TCPWrapper::hosts_allow = File::expand_path("~/etc/hosts.allow")
TCPWrapper::hosts_deny = File::expand_path("~/etc/hosts.deny")

accept_callback = Proc.new{|sock|
  begin
    addr = sock.peeraddr
    TCPWrapper::hosts_ctl("httpd",  addr[2], addr[3], nil)
  rescue TCPWrapError => ex
    message = format("access denied:%s,%s", addr[2], addr[3])
    raise WEBrick::ServerError, message
  rescue => ex
    raise WEBrick::ServerError, ex.message
  end
}

s=WEBrick::HTTPServer.new(
  :ServerName     => "raa.ruby-lang.org",
  :Port           => 8808,
  :DocumentRoot   => File::expand_path("~/public_html"),
  :Logger         => logger,
  :AcceptCallback => accept_callback
)
trap("INT"){ s.shutdown }
s.start

-- 
ごとうゆうぞう