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_REALMHTTP authentication realm for HTTP proxy. |
(package private) static int | BROWSER_KEEPALIVE_TIMEOUThow long to wait for another request on the same socket |
static String | DEFAULT_JUMP_SERVERSDefault jump server URLs. |
static String | LOCAL_SERVERLocal HTTP proxy server hostname. |
static String | OPT_KEEPALIVE_BROWSERConfig key to enable browser-side keepalive. |
static String | OPT_KEEPALIVE_I2PConfig key to enable I2P-side keepalive. |
static String | PROP_ACCEPT |
static String | PROP_DISABLE_HELPERConfig key to disable address helper. |
static String | PROP_INTERNAL_SSL |
static String | PROP_JUMP_SERVERSConfig key for jump server list. |
static String | PROP_REFERERall default to false |
static String | PROP_SSL_SET |
static String | PROP_USER_AGENTConfig key to enable sending User-Agent header. |
static String | PROP_VIAConfig key to enable sending Via header. |
__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, _executor, _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()Get the authentication realm string. |
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 IllegalArgumentExceptionIllegalArgumentException - 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 I2PTunnelClientBases - the socket to managepublic boolean close(boolean forced)
close in class I2PTunnelClientBaseprotected I2PSocketOptions getDefaultOptions()
getDefaultOptions in class I2PTunnelClientBaseprotected I2PSocketOptions getDefaultOptions(Properties overrides)
getDefaultOptions in class I2PTunnelClientBaseoverrides - the properties to overrideprotected String getRealm()
I2PTunnelHTTPClientBasegetRealm in class I2PTunnelHTTPClientBasepublic void startRunning()
startRunning in class I2PTunnelClientBase