net.i2p.i2ptunnel
Class I2PTunnelHTTPClient

java.lang.Object
  extended by net.i2p.i2ptunnel.I2PTunnelTask
      extended by net.i2p.i2ptunnel.I2PTunnelClientBase
          extended by net.i2p.i2ptunnel.I2PTunnelHTTPClient
All Implemented Interfaces:
java.lang.Runnable, EventDispatcher

public class I2PTunnelHTTPClient
extends I2PTunnelClientBase
implements java.lang.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/$site/$path $protocolVersion
 or 
   $method /$site/$path $protocolVersion
 
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 is supported (no HTTPS, ftp, mailto, etc). Both GET and POST have been tested, though other $methods should work.


Field Summary
 
Fields inherited from class net.i2p.i2ptunnel.I2PTunnelClientBase
_clientId, _context, DEFAULT_CONNECT_TIMEOUT, dest, l, mySockets, PROP_MAX_WAIT_TIME, PROP_NUM_CONNECTION_BUILDERS, sockLock, sockMgr
 
Fields inherited from class net.i2p.i2ptunnel.I2PTunnelTask
open
 
Constructor Summary
I2PTunnelHTTPClient(int localPort, Logging l, boolean ownDest, java.lang.String wwwProxy, EventDispatcher notifyThis, I2PTunnel tunnel)
           
 
Method Summary
protected  void clientConnectionRun(java.net.Socket s)
          Manage a connection in a separate thread.
protected  I2PSocketOptions getDefaultOptions()
          create the default options (using the default timeout, etc)
protected  I2PSocketOptions getDefaultOptions(java.util.Properties overrides)
          create the default options (using the default timeout, etc)
 
Methods inherited from class net.i2p.i2ptunnel.I2PTunnelClientBase
buildSocketManager, buildSocketManager, close, closeSocket, createI2PSocket, createI2PSocket, getListenHost, getLocalPort, getSocketManager, getSocketManager, manageConnection, run, startRunning
 
Methods inherited from class net.i2p.i2ptunnel.I2PTunnelTask
attachEventDispatcher, detachEventDispatcher, disconnected, errorOccurred, getEventDispatcher, getEvents, getEventValue, getId, getTunnel, ignoreEvents, isOpen, notifyEvent, reportAbuse, routerDisconnected, setId, setName, setTunnel, toString, unIgnoreEvents, waitEventValue
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.lang.Runnable
run
 

Constructor Detail

I2PTunnelHTTPClient

public I2PTunnelHTTPClient(int localPort,
                           Logging l,
                           boolean ownDest,
                           java.lang.String wwwProxy,
                           EventDispatcher notifyThis,
                           I2PTunnel tunnel)
                    throws java.lang.IllegalArgumentException
Throws:
java.lang.IllegalArgumentException - if the I2PTunnel does not contain valid config to contact the router
Method Detail

getDefaultOptions

protected I2PSocketOptions getDefaultOptions()
create the default options (using the default timeout, etc)

Overrides:
getDefaultOptions in class I2PTunnelClientBase

getDefaultOptions

protected I2PSocketOptions getDefaultOptions(java.util.Properties overrides)
create the default options (using the default timeout, etc)

Overrides:
getDefaultOptions in class I2PTunnelClientBase

clientConnectionRun

protected void clientConnectionRun(java.net.Socket s)
Description copied from class: I2PTunnelClientBase
Manage a connection in a separate thread. This only works if you do not override manageConnection()

Specified by:
clientConnectionRun in class I2PTunnelClientBase