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
--
ごとうゆうぞう