Package net.i2p.i2ptunnel
Class I2PTunnelConnectClient
java.lang.Object
net.i2p.util.EventDispatcherImpl
net.i2p.i2ptunnel.I2PTunnelTask
net.i2p.i2ptunnel.I2PTunnelClientBase
net.i2p.i2ptunnel.I2PTunnelHTTPClientBase
net.i2p.i2ptunnel.I2PTunnelConnectClient
- All Implemented Interfaces:
Runnable,EventDispatcher
public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements Runnable
Supports the following:
(where protocol is generally HTTP/1.1 but is ignored)
(where host is one of:
example.i2p
52chars.b32.i2p
516+charsbase64
example.com (sent to one of the configured proxies)
)
(protocol is ignored for i2p destinations)
CONNECT host
CONNECT host protocol
CONNECT host:port
CONNECT host:port protocol (this is the standard)
Additional lines after the CONNECT line but before the blank line are ignored and stripped.
The CONNECT line is removed for .i2p accesses
but passed along for outproxy accesses.
Ref:
INTERNET-DRAFT Ari Luotonen
Expires: September 26, 1997 Netscape Communications Corporation
draft-luotonen-ssl-tunneling-03.txt March 26, 1997
Tunneling SSL Through a WWW Proxy
- Author:
- zzz a stripped-down I2PTunnelHTTPClient
-
Nested Class Summary
Nested classes/interfaces inherited from class net.i2p.i2ptunnel.I2PTunnelHTTPClientBase
I2PTunnelHTTPClientBase.AuthResult, I2PTunnelHTTPClientBase.OnProxySuccess, I2PTunnelHTTPClientBase.OnTimeout -
Field Summary
Fields Modifier and Type Field Description static StringAUTH_REALMFields inherited from class net.i2p.i2ptunnel.I2PTunnelHTTPClientBase
__requestId, _proxyList, BASIC_AUTH, BROWSER_READ_TIMEOUT, DEFAULT_READ_TIMEOUT, DIGEST_AUTH, ERR_DESTINATION_UNKNOWN, ERR_NO_OUTPROXY, 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_SUFFIX, PROP_PW, PROP_PW_PREFIX, PROP_SSL_OUTPROXIES, PROP_USE_OUTPROXY_PLUGIN, PROP_USER, SUCCESS_RESPONSEFields 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
Constructors Constructor Description I2PTunnelConnectClient(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. -
Method Summary
Modifier and Type Method Description protected voidclientConnectionRun(Socket s)Manage a connection in a separate thread.booleanclose(boolean forced)Note that the tunnel can be reopened after this by calling startRunning().protected I2PSocketOptionsgetDefaultOptions()Create the default options (using the default timeout, etc).protected StringgetRealm()voidstartRunning()Actually open the local socket and start working on incoming connections.Methods inherited from class net.i2p.i2ptunnel.I2PTunnelHTTPClientBase
_t, _t, _t, authorize, decodeIDNHost, getAuthError, getErrorPage, getErrorPage, getPrefix, handleClientException, handleI2PSocketException, isDigestAuthRequired, noteProxyResult, optionsUpdated, selectProxy, selectSSLProxy, writeErrorMessage, writeErrorMessage, writeErrorMessage, writeErrorMessage, writeFooter, writeFooterMethods inherited from class net.i2p.i2ptunnel.I2PTunnelClientBase
addSubsession, buildSocketManager, buildSocketManager, buildSocketManager, buildSocketManager, closeSocket, createI2PSocket, createI2PSocket, createI2PSocket, destroy, getDefaultOptions, getListenHost, getLocalPort, getSocketManager, getSocketManager, getSocketManager, killSharedClient, manageConnection, run, verifySocketManagerMethods inherited from class net.i2p.i2ptunnel.I2PTunnelTask
connected, disconnected, errorOccurred, getId, getTunnel, isOpen, reportAbuse, routerDisconnected, setId, setName, setTunnel, toStringMethods inherited from class net.i2p.util.EventDispatcherImpl
attachEventDispatcher, detachEventDispatcher, getEventDispatcher, getEvents, getEventValue, ignoreEvents, notifyEvent, unIgnoreEvents, waitEventValue
-
Field Details
-
AUTH_REALM
- See Also:
- Constant Field Values
-
-
Constructor Details
-
I2PTunnelConnectClient
public I2PTunnelConnectClient(int localPort, Logging l, boolean ownDest, String wwwProxy, EventDispatcher notifyThis, I2PTunnel tunnel) throws IllegalArgumentExceptionAs 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
-
-
Method Details
-
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.- Overrides:
getDefaultOptionsin classI2PTunnelClientBase
-
startRunning
public void startRunning()Description copied from class:I2PTunnelClientBaseActually open the local socket and start working on incoming connections. *Must* be called by derived classes after initialization. (this wasn't actually true until 0.9.20) This will be fast if i2cp.delayOpen is true, but could take a LONG TIME if it is false, as it connects to the router and builds tunnels. Extending classes must check the value of boolean open after calling super.startRunning(), if false then something went wrong.- Overrides:
startRunningin classI2PTunnelClientBase
-
close
public boolean close(boolean forced)Description copied from class:I2PTunnelClientBaseNote that the tunnel can be reopened after this by calling startRunning(). This may not release all resources. In particular, the I2PSocketManager remains and it may have timer threads that continue running. To release all resources permanently, call destroy(). Does nothing if open is already false. Sets open = false but does not notifyAll().- Overrides:
closein classI2PTunnelClientBase- Returns:
- success
-
getRealm
- Specified by:
getRealmin classI2PTunnelHTTPClientBase- Since:
- 0.9.4
-
clientConnectionRun
Description copied from class:I2PTunnelClientBaseManage 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:
clientConnectionRunin classI2PTunnelClientBase
-