net.i2p.i2ptunnel.socks

## Class I2PSOCKSIRCTunnel

- java.lang.Object
- - net.i2p.util.EventDispatcherImpl
  - - net.i2p.i2ptunnel.I2PTunnelTask
    - - net.i2p.i2ptunnel.I2PTunnelClientBase
      - - net.i2p.i2ptunnel.socks.I2PSOCKSTunnel
        - - net.i2p.i2ptunnel.socks.I2PSOCKSIRCTunnel

- All Implemented Interfaces:
    Runnable, EventDispatcher

      public class I2PSOCKSIRCTunnel
      extends I2PSOCKSTunnel

  SOCKS tunnel specialized for IRC traffic with I2P filtering and security.

  This class extends I2PSOCKSTunnel to provide IRC-specific filtering through I2PTunnelIRCClient filters, combining the flexibility of SOCKS (dynamic destination specification) with IRC security features. It applies inbound and outbound IRC filters to protect against common IRC attacks and ensure proper IRC protocol handling.

  This allows users to connect to any IRC server through I2P without pre-configuring individual tunnels for each server, while maintaining the security benefits of IRC-specific filtering.

- - ### Field Summary

    - ### Fields inherited from class net.i2p.i2ptunnel.socks.I2PSOCKSTunnel

      `AUTH_REALM, DEFAULT, INITIAL_SO_TIMEOUT, PROP_OUTPROXY_TYPE, PROP_PROXY_DEFAULT, PROP_PROXY_PREFIX`

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

      `_clientId, _context, _log, _ownDest, dest, l, listenerReady, mySockets, PROP_USE_SSL, sockLock, sockMgr, ss`

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

      `open, tunnel`

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `clientConnectionRun(Socket s)` Same as in I2PSOCKSTunnel, but run the filters from I2PTunnelIRCClient instead of I2PTunnelRunner

    - ### Methods inherited from class net.i2p.i2ptunnel.socks.I2PSOCKSTunnel

      `buildOptions, getDefaultProxies, getProxies, getProxyMap, optionsUpdated`

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

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

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

      `connected, disconnected, errorOccurred, getBooleanOption, getId, getTunnel, isOpen, reportAbuse, routerDisconnected, setId, setName, setTunnel, toString`

    - ### Methods inherited from class net.i2p.util.EventDispatcherImpl

      `attachEventDispatcher, detachEventDispatcher, getEventDispatcher, getEvents, getEventValue, ignoreEvents, notifyEvent, unIgnoreEvents, waitEventValue`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### I2PSOCKSIRCTunnel

          public I2PSOCKSIRCTunnel(int localPort,
                                   Logging l,
                                   boolean ownDest,
                                   EventDispatcher notifyThis,
                                   I2PTunnel tunnel,
                                   String pkf)

      Parameters:
        `pkf` - private key file name or null for transient key

  - ### Method Detail

    - #### clientConnectionRun

          protected void clientConnectionRun(Socket s)

      Same as in I2PSOCKSTunnel, but run the filters from I2PTunnelIRCClient instead of I2PTunnelRunner
      Overrides:
        `clientConnectionRun` in class `I2PSOCKSTunnel`