public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runnable
Handles various request formats and forwards through I2P:
$method http://$site[$port]/$path $protocolVersion $method $path $protocolVersion\nHost: $site $method http://i2p/$b64key/$path $protocolVersion $method /$site/$path $protocolVersion (deprecated) $method /eepproxy/$site/$path $protocolVersionCONNECT (HTTPS) supported since 0.9.11. Note: http://i2p/$b64key/... and /eepproxy/$site/... not recommended for browsers due to broken relative links and cookies. http://$b64key/... and http://$b64key.i2p/... unsupported (illegal characters). Rewrite as http://i2p/$b64key/...
Directs I2P-resolved sites to destinations, others to outproxy (typically "squid.i2p"). Supports HTTP and HTTPS only. GET and POST tested; other methods should work.
I2PTunnelHTTPClientBase.AuthResult, I2PTunnelHTTPClientBase.OnProxySuccess, I2PTunnelHTTPClientBase.OnTimeout| Modifier and Type | Field and Description |
|---|---|
static String |
AUTH_REALM |
(package private) static int |
BROWSER_KEEPALIVE_TIMEOUT |
static String |
DEFAULT_JUMP_SERVERS |
static String |
LOCAL_SERVER |
static String |
OPT_KEEPALIVE_BROWSER |
static String |
OPT_KEEPALIVE_I2P |
static String |
PROP_ACCEPT |
static String |
PROP_DISABLE_HELPER |
static String |
PROP_INTERNAL_SSL |
static String |
PROP_JUMP_SERVERS |
static String |
PROP_REFERER
all default to false
|
static String |
PROP_SSL_SET |
static String |
PROP_USER_AGENT |
static String |
PROP_VIA |
__requestId, _proxyList, BASIC_AUTH, BROWSER_READ_TIMEOUT, DEFAULT_READ_TIMEOUT, DIGEST_AUTH, ERR_DESTINATION_UNKNOWN, INITIAL_SO_TIMEOUT, 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_SHA256_SUFFIX, PROP_PROXY_DIGEST_SUFFIX, PROP_PW, PROP_PW_PREFIX, PROP_SSL_OUTPROXIES, PROP_USE_OUTPROXY_PLUGIN, PROP_USER, SUCCESS_RESPONSE_clientId, _context, _log, _ownDest, DEFAULT_CONNECT_TIMEOUT, dest, l, listenerReady, mySockets, PROP_USE_SSL, sockLock, sockMgr, ssopen, tunnel| Constructor and Description |
|---|
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).
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
clientConnectionRun(Socket s)
Note: This does not handle RFC 2616 header line splitting,
which is obsoleted in RFC 7230.
|
boolean |
close(boolean forced)
Overridden to close internal socket too.
|
protected I2PSocketOptions |
getDefaultOptions()
Create the default options (using the default timeout, etc).
|
protected I2PSocketOptions |
getDefaultOptions(Properties overrides)
Create the default options (using the default timeout, etc).
|
protected String |
getRealm() |
void |
startRunning()
Actually start working on incoming connections.
|
_t, _t, _t, authorize, decodeIDNHost, getAuthError, getErrorPage, getErrorPage, getPrefix, handleClientException, handleI2PSocketException, isDigestAuthRequired, noteProxyResult, optionsUpdated, selectProxy, selectSSLProxy, writeErrorMessage, writeErrorMessage, writeErrorMessage, writeErrorMessage, writeFooter, writeFooterbuildSocketManager, buildSocketManager, buildSocketManager, buildSocketManager, closeSocket, createI2PSocket, createI2PSocket, createI2PSocket, destroy, getListenHost, getLocalPort, getSocketManager, getSocketManager, getSocketManager, killSharedClient, manageConnection, run, verifySocketManagerconnected, disconnected, errorOccurred, getBooleanOption, getId, getTunnel, isOpen, reportAbuse, routerDisconnected, setId, setName, setTunnel, toStringattachEventDispatcher, detachEventDispatcher, getEventDispatcher, getEvents, getEventValue, ignoreEvents, notifyEvent, unIgnoreEvents, waitEventValuepublic static final String AUTH_REALM
static final int BROWSER_KEEPALIVE_TIMEOUT
public static final String DEFAULT_JUMP_SERVERS
public static final String LOCAL_SERVER
public static final String OPT_KEEPALIVE_BROWSER
public static final String OPT_KEEPALIVE_I2P
public static final String PROP_ACCEPT
public static final String PROP_DISABLE_HELPER
public static final String PROP_INTERNAL_SSL
public static final String PROP_JUMP_SERVERS
public static final String PROP_REFERER
public static final String PROP_SSL_SET
public static final String PROP_USER_AGENT
public static final String PROP_VIA
public I2PTunnelHTTPClient(int localPort,
Logging l,
boolean ownDest,
String wwwProxy,
EventDispatcher notifyThis,
I2PTunnel tunnel)
throws IllegalArgumentException
IllegalArgumentException - if the I2PTunnel does not contain
valid config to contact the routerpublic I2PTunnelHTTPClient(int localPort,
Logging l,
I2PSocketManager sockMgr,
I2PTunnel tunnel,
EventDispatcher notifyThis,
long clientId)
sockMgr - the existing socket managerprotected void clientConnectionRun(Socket s)
clientConnectionRun in class I2PTunnelClientBasepublic boolean close(boolean forced)
close in class I2PTunnelClientBaseprotected I2PSocketOptions getDefaultOptions()
getDefaultOptions in class I2PTunnelClientBaseprotected I2PSocketOptions getDefaultOptions(Properties overrides)
getDefaultOptions in class I2PTunnelClientBaseprotected String getRealm()
getRealm in class I2PTunnelHTTPClientBasepublic void startRunning()
startRunning in class I2PTunnelClientBase