sunlabs.brazil.handler
Class GenericProxyHandler
public
class
GenericProxyHandler
extends Object
implements Handler
Handler for implementing a virtual web site.
This causes another web site to "appear" inside our document root.
This classes is intended to be sub-classed, so some of the methods
in this implementation don't do too much.
All of the appropriate links in HTML documents on the virtual
site are rewritten, so they appear to be local references.
This can be used on a firewall in conjunction with
{@link AclSwitchHandler}
to provide authenticated access to selected web sites.
Properties:
- prefix
- URL prefix must match
- host
- name of host site to proxy to.
- port
- Host port to proxy to (defaults to 80).
- proxyHost
- Which proxy host to use (if any)
to contact "host".
- proxyPort
- The proxy's port (defaults to 80)
- headers
- A list of white space delimited tokens that refer to
additional HTTP headers that are added onto the polled
request. For each token the server properties
[token].name
and [token].value
define a new http header.
- passHost
- If true, the original browser host string is passed to the
target, otherwise the mapped hostname is used, in which case the
http header "X-Host-Orig" will contain the original host name.
- noErrorReturn
- If true, then if the proxy request fails, the response method
returns "false", and places the reason for failure in the "errorCode"
and "errorMsg" request properties.
Otherwise, and error response is generated. The default is (erroneously)
false for historical reasons.
Version: 2.5, 07/03/21
Author: Stephen Uhler
Method Summary |
MapPage | getMapper()
Return a reference to our page mapper, to allow futzing with the page
maps from the outside |
boolean | init(Server server, String prefix)
Do one-time setup.
get and process the handler properties.
we can contact the server identified by the host parameter. |
boolean | isMine(Request request)
See if this is one of my requests.
|
byte[] | modifyContent(Request request, byte[] content)
Rewrite the links in an html file so they resolve correctly
in proxy mode.
|
boolean | respond(Request request)
If this is one of "our" url's, fetch the document from
the destination server, and return it as if it was local. |
protected boolean | shouldFilter(MimeHeaders headers)
See if the content needs to be filtered.
|
protected String host
public static final String HOST
Handler configuration property host.
The actual host site to appear on our site (required)
protected boolean noErrorReturn
public static final String NL
protected boolean passHost
protected int port
protected String prefix
protected String proxyHost
protected int proxyPort
public static final String PORT
Handler configuration property port.
The actual port on the host site (defaults to 80).
public static final String PREFIX
Handler configuration property prefix.
Only URL's that begin with this string are considered by this handler.
The default is (/).
public static final String PROXY_HOST
Handler configuration property proxyHost.
The name of a proxy to use (if any) to get to the host.
public static final String PROXY_PORT
Handler configuration property proxyPort.
The proxy port to use to get to the host. defaults to 80.
protected String requestPrefix
protected String tokens
protected String urlPrefix
Return a reference to our page mapper, to allow futzing with the page
maps from the outside
public boolean init(
Server server, String prefix)
Do one-time setup.
get and process the handler properties.
we can contact the server identified by the host parameter.
public boolean isMine(
Request request)
See if this is one of my requests.
This method can be overridden to do more sophisticated mappings.
Parameters: request The standard request object
public byte[] modifyContent(
Request request, byte[] content)
Rewrite the links in an html file so they resolve correctly
in proxy mode.
Parameters: request The original request to this "proxy" headers The vector of mime headers for the proxy request
Returns: true if the headers and content should be sent to the client, false otherwise
Modifies "headers" as a side effect
public boolean respond(
Request request)
If this is one of "our" url's, fetch the document from
the destination server, and return it as if it was local.
See if the content needs to be filtered.
Return "true" if "modifyContent" should be called
Parameters: headers Vector of mime headers for data to proxy