net.i2p.i2ptunnel

## Class I2PTunnelConnectClient

- java.lang.Object
- - 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)
         )

         (port and protocol are 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
                             March 26, 1997
                           Tunneling SSL Through a WWW Proxy

  Author:
    zzz a stripped-down I2PTunnelHTTPClient

- - ### Field Summary

    - ### Fields inherited from class net.i2p.i2ptunnel.I2PTunnelHTTPClientBase

      `__clientId, __requestId, _errorDir, _proxyList, DEFAULT_READ_TIMEOUT, ERR_NO_OUTPROXY, PROP_AUTH, PROP_OUTPROXY_AUTH, PROP_OUTPROXY_PW, PROP_OUTPROXY_PW_PREFIX, PROP_OUTPROXY_USER, PROP_OUTPROXY_USER_PREFIX, PROP_PW, PROP_PW_PREFIX, PROP_USER`

    - ### Fields inherited from class net.i2p.i2ptunnel.I2PTunnelClientBase

      `_clientId, _context, _executor, _log, _ownDest, DEFAULT_CONNECT_TIMEOUT, dest, l, mySockets, sockLock, sockMgr`

    - ### Fields inherited from class net.i2p.i2ptunnel.I2PTunnelTask

      `open`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `I2PTunnelConnectClient(int localPort, Logging l, boolean ownDest, String wwwProxy, EventDispatcher notifyThis, I2PTunnel tunnel)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `clientConnectionRun(Socket s)` Manage a connection in a separate thread.
    `protected I2PSocketOptions` | `getDefaultOptions()` create the default options (using the default timeout, etc)

    - ### Methods inherited from class net.i2p.i2ptunnel.I2PTunnelHTTPClientBase

      `authorize, getPrefix, selectProxy`

    - ### Methods inherited from class net.i2p.i2ptunnel.I2PTunnelClientBase

      `buildSocketManager, buildSocketManager, buildSocketManager, buildSocketManager, close, closeSocket, createI2PSocket, createI2PSocket, getDefaultOptions, getListenHost, getLocalPort, getSocketManager, getSocketManager, getSocketManager, manageConnection, run, startRunning, verifySocketManager`

    - ### 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

    - #### I2PTunnelConnectClient

          public I2PTunnelConnectClient(int localPort,
                                Logging l,
                                boolean ownDest,
                                String wwwProxy,
                                EventDispatcher notifyThis,
                                I2PTunnel tunnel)
                                 throws IllegalArgumentException

      Throws:
        `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`

    - #### clientConnectionRun

          protected void clientConnectionRun(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`