net.i2p.i2ptunnel
Class I2PTunnelHTTPClient
java.lang.Object
net.i2p.util.EventDispatcherImpl
net.i2p.i2ptunnel.I2PTunnelTask
net.i2p.i2ptunnel.I2PTunnelClientBase
net.i2p.i2ptunnel.I2PTunnelHTTPClientBase
net.i2p.i2ptunnel.I2PTunnelHTTPClient
- All Implemented Interfaces:
- Runnable, EventDispatcher
- Direct Known Subclasses:
- I2PTunnelHTTPBidirProxy
public class I2PTunnelHTTPClient
- extends I2PTunnelHTTPClientBase
- implements Runnable
Act as a mini HTTP proxy, handling various different types of requests,
forwarding them through I2P appropriately, and displaying the reply. Supported
request formats are:
$method http://$site[$port]/$path $protocolVersion
or
$method $path $protocolVersion\nHost: $site
or
$method http://i2p/$b64key/$path $protocolVersion
or
$method /$site/$path $protocolVersion
or (deprecated)
$method /eepproxy/$site/$path $protocolVersion
CONNECT (https) supported as of release 0.9.11.
Note that http://i2p/$b64key/... and /eepproxy/$site/... are not recommended
in browsers or other user-visible applications, as relative links will not
resolve correctly, cookies won't work, etc.
Note that http://$b64key/... and http://$b64key.i2p/... are NOT supported, as
a b64 key may contain '=' and '~', both of which are illegal host name characters.
Rewrite as http://i2p/$b64key/...
If the $site resolves with the I2P naming service, then it is directed towards
that eepsite, otherwise it is directed towards this client's outproxy (typically
"squid.i2p"). Only HTTP and HTTPS are supported (no ftp, mailto, etc). Both GET
and POST have been tested, though other $methods should work.
Fields inherited from class net.i2p.i2ptunnel.I2PTunnelHTTPClientBase |
__requestId, _proxyList, BASIC_AUTH, DEFAULT_READ_TIMEOUT, DIGEST_AUTH, ERR_DESTINATION_UNKNOWN, PROP_AUTH, PROP_OUTPROXY_AUTH, PROP_OUTPROXY_PW, PROP_OUTPROXY_PW_PREFIX, PROP_OUTPROXY_USER, PROP_OUTPROXY_USER_PREFIX, PROP_PROXY_DIGEST_PREFIX, PROP_PROXY_DIGEST_SUFFIX, PROP_PW, PROP_PW_PREFIX, PROP_USER, SUCCESS_RESPONSE |
Fields inherited from class net.i2p.i2ptunnel.I2PTunnelClientBase |
_clientId, _context, _log, _ownDest, DEFAULT_CONNECT_TIMEOUT, dest, l, listenerReady, mySockets, PROP_USE_SSL, sockLock, sockMgr, ss |
Constructor Summary |
I2PTunnelHTTPClient(int localPort,
Logging l,
boolean ownDest,
String wwwProxy,
EventDispatcher notifyThis,
I2PTunnel tunnel)
As of 0.9.20 this is fast, and does NOT connect the manager to the router,
or open the local socket. |
I2PTunnelHTTPClient(int localPort,
Logging l,
I2PSocketManager sockMgr,
I2PTunnel tunnel,
EventDispatcher notifyThis,
long clientId)
This constructor always starts the tunnel (ignoring the i2cp.delayOpen option). |
Methods inherited from class net.i2p.i2ptunnel.I2PTunnelHTTPClientBase |
_, _, _, authorize, getAuthError, getErrorPage, getErrorPage, getPrefix, handleClientException, handleI2PSocketException, isDigestAuthRequired, optionsUpdated, selectProxy, writeErrorMessage, writeErrorMessage, writeErrorMessage, writeErrorMessage, writeFooter, writeFooter |
Methods inherited from class net.i2p.i2ptunnel.I2PTunnelClientBase |
addSubsession, buildSocketManager, buildSocketManager, buildSocketManager, buildSocketManager, closeSocket, createI2PSocket, createI2PSocket, createI2PSocket, destroy, getListenHost, getLocalPort, getSocketManager, getSocketManager, getSocketManager, killSharedClient, manageConnection, run, verifySocketManager |
Methods inherited from class net.i2p.i2ptunnel.I2PTunnelTask |
connected, disconnected, errorOccurred, getId, getTunnel, isOpen, reportAbuse, routerDisconnected, setId, setName, setTunnel, toString |
Methods inherited from interface java.lang.Runnable |
run |
AUTH_REALM
public static final String AUTH_REALM
- See Also:
- Constant Field Values
LOCAL_SERVER
public static final String LOCAL_SERVER
- See Also:
- Constant Field Values
PROP_REFERER
public static final String PROP_REFERER
- all default to false
- See Also:
- Constant Field Values
PROP_USER_AGENT
public static final String PROP_USER_AGENT
- See Also:
- Constant Field Values
PROP_VIA
public static final String PROP_VIA
- See Also:
- Constant Field Values
PROP_JUMP_SERVERS
public static final String PROP_JUMP_SERVERS
- See Also:
- Constant Field Values
PROP_DISABLE_HELPER
public static final String PROP_DISABLE_HELPER
- See Also:
- Constant Field Values
PROP_USE_OUTPROXY_PLUGIN
public static final String PROP_USE_OUTPROXY_PLUGIN
- Since:
- 0.9.11
- See Also:
- Constant Field Values
PROP_SSL_OUTPROXIES
public static final String PROP_SSL_OUTPROXIES
- Since:
- 0.9.11
- See Also:
- Constant Field Values
PROP_ACCEPT
public static final String PROP_ACCEPT
- Since:
- 0.9.14
- See Also:
- Constant Field Values
PROP_INTERNAL_SSL
public static final String PROP_INTERNAL_SSL
- Since:
- 0.9.14
- See Also:
- Constant Field Values
DEFAULT_JUMP_SERVERS
public static final String DEFAULT_JUMP_SERVERS
- See Also:
- Constant Field Values
I2PTunnelHTTPClient
public I2PTunnelHTTPClient(int localPort,
Logging l,
I2PSocketManager sockMgr,
I2PTunnel tunnel,
EventDispatcher notifyThis,
long clientId)
- This constructor always starts the tunnel (ignoring the i2cp.delayOpen option).
It is used to add a client to an existing socket manager.
As of 0.9.20 this is fast, and does NOT connect the manager to the router,
or open the local socket. You MUST call startRunning() for that.
- Parameters:
sockMgr
- the existing socket manager
I2PTunnelHTTPClient
public I2PTunnelHTTPClient(int localPort,
Logging l,
boolean ownDest,
String wwwProxy,
EventDispatcher notifyThis,
I2PTunnel tunnel)
throws IllegalArgumentException
- As of 0.9.20 this is fast, and does NOT connect the manager to the router,
or open the local socket. You MUST call startRunning() for that.
- Throws:
IllegalArgumentException
- if the I2PTunnel does not contain
valid config to contact the router
getDefaultOptions
protected I2PSocketOptions getDefaultOptions()
- Create the default options (using the default timeout, etc).
Warning, this does not make a copy of I2PTunnel's client options,
it modifies them directly.
unused?
- Overrides:
getDefaultOptions
in class I2PTunnelClientBase
getDefaultOptions
protected I2PSocketOptions getDefaultOptions(Properties overrides)
- Create the default options (using the default timeout, etc).
Warning, this does not make a copy of I2PTunnel's client options,
it modifies them directly.
Do not use overrides for per-socket options.
- Overrides:
getDefaultOptions
in class I2PTunnelClientBase
startRunning
public void startRunning()
- Actually start working on incoming connections.
Overridden to start an internal socket too.
- Overrides:
startRunning
in class I2PTunnelClientBase
close
public boolean close(boolean forced)
- Overridden to close internal socket too.
- Overrides:
close
in class I2PTunnelClientBase
- Returns:
- success
getRealm
protected String getRealm()
- Specified by:
getRealm
in class I2PTunnelHTTPClientBase
- Since:
- 0.9.4
clientConnectionRun
protected void clientConnectionRun(Socket s)
- Description copied from class:
I2PTunnelClientBase
- Manage a connection in a separate thread. This only works if
you do not override manageConnection().
This is run in a thread from an unlimited-size thread pool,
so it may block or run indefinitely.
- Specified by:
clientConnectionRun
in class I2PTunnelClientBase