Class: WEBrick::HTTPProxyServer
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
HTTPServer,
GenericServer
|
|
|
Instance Chain:
self,
HTTPServer,
GenericServer
|
|
| Inherits: |
WEBrick::HTTPServer
|
| Defined in: | lib/webrick/httpproxy.rb |
Overview
An HTTP Proxy server which proxies GET, HEAD and POST requests.
To create a simple proxy server:
require 'webrick'
require 'webrick/httpproxy'
proxy = WEBrick::HTTPProxyServer.new Port: 8000
trap 'INT' do proxy.shutdown end
trap 'TERM' do proxy.shutdown end
proxy.start
See .new for proxy-specific configuration items.
Modifying proxied responses
To modify content the proxy server returns use the :ProxyContentHandler option:
handler = proc do |req, res|
if res['content-type'] == 'text/plain' then
res.body << "\nThis content was proxied!\n"
end
end
proxy =
WEBrick::HTTPProxyServer.new Port: 8000, ProxyContentHandler: handler
Class Method Summary
-
.new(config = {}, default = Config::HTTP) ⇒ HTTPProxyServer
constructor
Proxy server configurations.
HTTPServer - Inherited
| .new | Creates a new HTTP server according to |
GenericServer - Inherited
| .new | Creates a new generic server from |
Instance Attribute Summary
GenericServer - Inherited
| #config | The server configuration. |
| #listeners | Sockets listening for connections. |
| #logger | The server logger. |
| #status | The server status. |
| #tokens | Tokens control the number of outstanding clients. |
Instance Method Summary
HTTPServer - Inherited
| #access_log | Logs |
| #do_OPTIONS | The default OPTIONS request handler says GET, HEAD, POST and OPTIONS requests are allowed. |
| #lookup_server | Finds the appropriate virtual host to handle |
| #mount | Mounts |
| #mount_proc | Mounts |
| #run | Processes requests on |
| #search_servlet | Finds a servlet for |
| #service | Services |
| #umount | Alias for HTTPServer#unmount. |
| #unmount | Unmounts |
| #virtual_host | Adds |
GenericServer - Inherited
| #[] | Retrieves |
| #run | You must subclass GenericServer and implement #run which accepts a TCP client socket. |
| #shutdown | Shuts down the server and all listening sockets. |
| #start | Starts the server and runs the |
| #stop | Stops the server from accepting new connections. |
Constructor Details
.new(config = {}, default = Config::HTTP) ⇒ HTTPProxyServer
Proxy server configurations. The proxy server handles the following configuration items in addition to those supported by HTTPServer:
- :ProxyAuthProc
-
Called with a request and response to authorize a request
- :ProxyVia
-
Appended to the via header
- :ProxyURI
-
The proxy server's URI
- :ProxyContentHandler
-
Called with a request and response and allows modification of the response
- :ProxyTimeout
-
Sets the proxy timeouts to 30 seconds for open and 60 seconds for read operations
# File 'lib/webrick/httpproxy.rb', line 84
def initialize(config={}, default=Config::HTTP) super(config, default) c = @config @via = "#{c[:HTTPVersion]} #{c[:ServerName]}:#{c[:Port]}" end