public class SunProxy extends java.lang.Object implements SocketFactory, UseProxy, Handler
NOTE: The mechanism used by this class has been disabled; it is included here to illustrate how to write a custom proxy.
defaultFactory
Constructor and Description |
---|
SunProxy() |
Modifier and Type | Method and Description |
---|---|
boolean |
init(Server server,
java.lang.String prefix)
Called when the
Server is being initialized to install
this object as the SocketFactory for the
HttpRequest . |
java.net.Socket |
newSocket(java.lang.String host,
int port)
Creates a new
Socket that talks to the specified port
on the named host. |
boolean |
respond(Request request)
Handler http requests - doesn't do anything yet
|
boolean |
useProxy(java.lang.String host,
int port)
Determines if the user should use an HTTP proxy when sending an HTTP
request to the specified host and port.
|
public boolean init(Server server, java.lang.String prefix)
Server
is being initialized to install
this object as the SocketFactory
for the
HttpRequest
.
This procedure is very specific and specialized to the Brazil server. This functionality should probably be moved into a separate "Init" class that:
SunProxy
class.
SocketFactory
.
As it stands now, the first time this method is called, the side
effect is to install itself as the SocketFactory
.
This method will also be called subsequently when instances of the
ProxyHandler
instantiate this object as a
UseProxy
decider, but in that case, no configuration
properties need to be examined.
init
in interface Handler
server
- The http server that owns this object. This object uses
Server.props
to obtain run time configuration
information.prefix
- A prefix to prepend to all of the keys that this object
uses to extract configuration information out of
Server.props
.true
always, indicating success.public boolean respond(Request request)
public boolean useProxy(java.lang.String host, int port)
Whether or not to proxy may depend upon the HTTP proxy the caller is using. Currently, there is no way to capture and use this information.
The decision is different than deciding if the host is local, because
using the itelnet tunnelling trick we can reach some external hosts
from within the firewall. This routine is therefore in cohoots with
the itelnet behavior, and requires that the caller use this object
as the SocketFactory
if this method returns
true
.
Observed behavior:
false
.
false
.
true
.
public java.net.Socket newSocket(java.lang.String host, int port) throws java.io.IOException
SocketFactory
Socket
that talks to the specified port
on the named host.
The implementation may choose any way it wants to provide a
socket-like object (essentially any mechanism that supports
bidirectional communication). The returned Socket
(or
subclass of Socket
) might not be based on TCP/IP, or it
might involve running a TCP/IP stack over some other protocol, or it
might actually redirect all connections via some other proxy machine,
etc.
newSocket
in interface SocketFactory
host
- The host name.port
- The port number.java.io.IOException
- If there is some problem establishing the socket to the
specified port on the named host.