## net.i2p.i2ptunnel
Class I2PTunnelHTTPClient

    java.lang.Object
      net.i2p.i2ptunnel.I2PTunnelTask
          net.i2p.i2ptunnel.I2PTunnelClientBase
              net.i2p.i2ptunnel.I2PTunnelHTTPClient

All Implemented Interfaces:
  EventDispatcher, java.lang.Runnable

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`