Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > webrick/httpproxyライブラリ > WEBrick::HTTPProxyServerクラス

class WEBrick::HTTPProxyServer

クラスの継承リスト: WEBrick::HTTPProxyServer < WEBrick::HTTPServer < WEBrick::GenericServer < Object < Kernel < BasicObject

Abstract

プロクシの機能を提供するクラスです。CONNECT メソッドにも対応しています。

以下は完全に動作するプロクシサーバの例です。

require 'webrick'
require 'webrick/httpproxy'

config = { :BindAddress => '127.0.0.1', :Port => 8080 }
s = WEBrick::HTTPProxyServer.new( config )
Signal.trap('INT') do
  s.shutdown
end
s.start

特異メソッド

new(config) -> WEBrick::HTTPProxyServer

プロクシオブジェクトを生成して返します。

[PARAM] config:
設定を保存したハッシュを指定します。 設定として有効なハッシュのキーとその値は WEBrick::HTTPServer.new と同じです。 それに加えて以下のキーが有効です。
:ProxyAuthProc

プロクシ認証を行う Proc オブジェクトを指定します。この proc は WEBrick::HTTPResponse オブジェクトと WEBrick::HTTPRequest オブジェクトを引数として proc.call(req, res) のように呼ばれます。 認証に失敗した場合 proc は適切な例外を発生させなければ行けません。nil を指定した場合すべての接続を 受け付けます。デフォルトは nil です。通常は WEBrick::HTTPAuth::ProxyBasicAuthWEBrick::HTTPAuth::ProxyDigestAuth を使用します。

 auth_proc = proc{|req, res|
   unless c = req['proxy-authorization']
     res['Proxy-Authenticate'] = 'Basic realm="WEBrick Proxy"'
     raise WEBrick::HTTPStatus::ProxyAuthenticationRequired
   else
     # 略
   end
 }
 s = WEBrick::HTTPProxyServer.new( {:ProxyAuthProc => auth_proc} )
:ProxyContentHandler

接続先の HTTP サーバからの内容を処理する Proc オブジェクトを指定します。 レスポンスの内容を書き換えたりする事が出来ます。WEBrick::HTTPResponse オブジェクトと WEBrick::HTTPRequest オブジェクトを引数として proc.call(req, res) のように呼ばれます。 nil を指定した場合なにもしません。デフォルトは nil です。

 handler = proc{|req, res|
   res.body.gsub!(/です。/, 'でんがな。')
   res.body.gsub!(/ます。/, 'まんがな。')
 }
 s = WEBrick::HTTPProxyServer.new( { :ProxyContentHandler => handler } )
:ProxyVia

true を指定した場合 接続先の HTTP サーバへのリクエストに Via ヘッダを付けます。デフォルトは true です。

:ProxyTimeout

true を指定した場合 接続先の HTTP サーバへのリクエストにタイムアウトを設定します。 タイムアウトまでの時間は設定できません。

:ProxyURI

HTTP サーバへの接続にさらに別の Proxy サーバを使う場合にその Proxy の URI を URI オブジェクトで指定します。

  require 'uri'
  u = URI.parse('http://localhost:18080/')
  s = WEBrick::HTTPProxyServer.new( { :ProxyURI => u } )

Methods

Classes