Implementation of preconfigured tunnels, both for clients and servers, and a UI for adding more and editing the configuration. Includes special-purpose tunnels for IRC, SOCKS, HTTP, and more.
The entry point is TunnelControllerGroup, which is started from clients.config. Individual tunnel configuration is in i2ptunnel.config. The primary API is TunnelControllerGroup and TunnelController. Other classes may not be maintained as a stable API.
Interface Summary Interface Description I2PTunnel.ConnectionEventListenerCallback routine to find out I2PTunnelRunner.FailCallbackFor use in new constructor I2PTunnelRunner.SuccessCallback Logging
Class Summary Class Description ConnThrottlerCount how often something happens with a particular peer and all peers. GunzipOutputStreamGunzip implementation per RFC 1952, reusing java's standard CRC32 and Inflater and InflaterOutputStream implementations. HTTPResponseOutputStreamThis does the transparent gzip decompression on the client side. I2PingWarning - not necessarily a stable API. I2PTunnelAn I2PTunnel tracks one or more I2PTunnelTasks and one or more I2PSessions. I2PTunnelClient I2PTunnelClientBase I2PTunnelConnectClientSupports the following: I2PTunnelHTTPBidirProxyReuse HTTP server's I2PSocketManager for a proxy with no outproxy capability. I2PTunnelHTTPBidirServer I2PTunnelHTTPClientAct as a mini HTTP proxy, handling various different types of requests, forwarding them through I2P appropriately, and displaying the reply. I2PTunnelHTTPClientBaseCommon things for HTTPClient and ConnectClient Retrofit over them in 0.8.2 I2PTunnelHTTPClientRunnerOverride the response with a stream filtering the HTTP headers received. I2PTunnelHTTPServerSimple extension to the I2PTunnelServer that filters the HTTP headers sent from the client to the server, replacing the Host header with whatever this instance has been configured with, and if the browser set Accept-Encoding: x-i2p-gzip, gzip the http message body and set Content-Encoding: x-i2p-gzip. I2PTunnelIRCClientTodo: Can we extend I2PTunnelClient instead and remove some duplicated code? I2PTunnelIRCServerSimple extension to the I2PTunnelServer that filters the registration sequence to pass the destination hash of the client through as the hostname, so an IRC Server may track users across nick changes. I2PTunnelOutproxyRunnerLike I2PTunnelRunner but socket-to-socket Warning - not maintained as a stable API for external use. I2PTunnelRunnerA thread that starts two more threads, one to forward traffic in each direction. I2PTunnelServer I2PTunnelTaskEither a Server or a Client. InternalSocketRunnerListen for in-JVM connections on the internal "socket" SSLClientUtilUtilities for I2PTunnel client SSL server sockets. TunnelControllerCoordinate the runtime operation and configuration of a single I2PTunnel. TunnelControllerGroupCoordinate a set of tunnels within the JVM, loading and storing their config to disk, and building new ones as requested. TunnelControllerGroup.CustomThreadPoolExecutorNot really needed for now but in case we want to add some hooks like afterExecute().
Enum Summary Enum Description I2PTunnelHTTPClientBase.AuthResult