Class ProxyProtocolAcceptor

java.lang.Object
org.apache.sshd.common.util.logging.AbstractLoggingBean
org.apache.sshd.contrib.server.session.proxyprotocol.ProxyProtocolAcceptor
All Implemented Interfaces:
ServerProxyAcceptor
Direct Known Subclasses:
ProxyProtocolV2Acceptor

public class ProxyProtocolAcceptor extends AbstractLoggingBean implements ServerProxyAcceptor
A working prototype to support PROXY protocol as described in HAProxy Documentation.
See Also:
  • Field Details

    • MAX_PROXY_HEADER_LENGTH

      public static final int MAX_PROXY_HEADER_LENGTH
      See Also:
    • PROX_PROTOCOL_PREFIX

      public static final String PROX_PROTOCOL_PREFIX
      See Also:
    • PROXY_HEADER

      private static final byte[] PROXY_HEADER
  • Constructor Details

    • ProxyProtocolAcceptor

      public ProxyProtocolAcceptor()
  • Method Details

    • acceptServerProxyMetadata

      public boolean acceptServerProxyMetadata(ServerSession session, Buffer buffer) throws Exception
      Description copied from interface: ServerProxyAcceptor
      Invoked before any attempt is made to retrieve the SSH client identification data of the standard SSH protocol. The implementor should extract whatever data it needs from the data buffer. Note: the method may be called several times for the same session even though the original proxy data was successfully extracted. This happens in case the client identification line following it is incomplete and thus requires waiting for more incoming packets.
      Specified by:
      acceptServerProxyMetadata in interface ServerProxyAcceptor
      Parameters:
      session - The ServerSession instance
      buffer - The received data Buffer - if not the 1st time this method is called because data was lacking on last invocation, then the buffer is guaranteed to contain the data from all the previous incomplete invocations plus any new received data. If not enough information is available, the buffer's read position should be restored to its original value when the method was invoked.
      Returns:
      true if successfully extracted the remote client peer meta-data, false if more data is required. Upon successful return the buffer read position is assumed to indicate the first character of the SSH identification line
      Throws:
      Exception - If failed to correctly extract and parse the meta-data, in which case the session will be closed
    • parseProxyHeader

      protected boolean parseProxyHeader(ServerSession session, String proxyHeader, int markPosition, Buffer buffer) throws Exception
      Throws:
      Exception