Class SniHandler

java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.handler.codec.ByteToMessageDecoder
io.netty.handler.ssl.SslClientHelloHandler<T>
io.netty.handler.ssl.AbstractSniHandler<io.netty.handler.ssl.SslContext>
org.mockserver.socket.tls.SniHandler
All Implemented Interfaces:
io.netty.channel.ChannelHandler, io.netty.channel.ChannelInboundHandler, io.netty.channel.ChannelOutboundHandler

public class SniHandler extends io.netty.handler.ssl.AbstractSniHandler<io.netty.handler.ssl.SslContext>
Author:
jamesdbloom
  • Nested Class Summary

    Nested classes/interfaces inherited from class io.netty.handler.codec.ByteToMessageDecoder

    io.netty.handler.codec.ByteToMessageDecoder.Cumulator

    Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler

    io.netty.channel.ChannelHandler.Sharable
  • Field Summary

    Fields inherited from class io.netty.handler.ssl.AbstractSniHandler

    handshakeTimeoutMillis

    Fields inherited from class io.netty.handler.ssl.SslClientHelloHandler

    MAX_CLIENT_HELLO_LENGTH

    Fields inherited from class io.netty.handler.codec.ByteToMessageDecoder

    COMPOSITE_CUMULATOR, MERGE_CUMULATOR
  • Constructor Summary

    Constructors
    Constructor
    Description
    SniHandler(Configuration configuration, NettySslContextFactory nettySslContextFactory)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static Protocol
    getALPNProtocol(MockServerLogger mockServerLogger, io.netty.channel.ChannelHandlerContext ctx)
     
    protected io.netty.util.concurrent.Future<io.netty.handler.ssl.SslContext>
    lookup(io.netty.channel.ChannelHandlerContext ctx, String hostname)
     
    protected void
    onLookupComplete(io.netty.channel.ChannelHandlerContext ctx, String hostname, io.netty.util.concurrent.Future<io.netty.handler.ssl.SslContext> sslContextFuture)
     
    static Certificate[]
    retrieveClientCertificates(MockServerLogger mockServerLogger, io.netty.channel.ChannelHandlerContext ctx)
     
    static void
    setNegotiatedApplicationProtocol(io.netty.channel.Channel channel, Protocol protocol)
    Record the negotiated application protocol on the channel as a trusted, server-side signal.

    Methods inherited from class io.netty.handler.ssl.AbstractSniHandler

    channelActive, handlerAdded, lookup, onLookupComplete

    Methods inherited from class io.netty.handler.ssl.SslClientHelloHandler

    bind, close, connect, decode, deregister, disconnect, flush, handlerRemoved0, read, write

    Methods inherited from class io.netty.handler.codec.ByteToMessageDecoder

    actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggered

    Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter

    channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught

    Methods inherited from class io.netty.channel.ChannelHandlerAdapter

    ensureNotSharable, isSharable

    Methods inherited from class java.lang.Object

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

    Methods inherited from interface io.netty.channel.ChannelHandler

    handlerRemoved
  • Constructor Details

  • Method Details

    • lookup

      protected io.netty.util.concurrent.Future<io.netty.handler.ssl.SslContext> lookup(io.netty.channel.ChannelHandlerContext ctx, String hostname)
      Specified by:
      lookup in class io.netty.handler.ssl.AbstractSniHandler<io.netty.handler.ssl.SslContext>
    • onLookupComplete

      protected void onLookupComplete(io.netty.channel.ChannelHandlerContext ctx, String hostname, io.netty.util.concurrent.Future<io.netty.handler.ssl.SslContext> sslContextFuture)
      Specified by:
      onLookupComplete in class io.netty.handler.ssl.AbstractSniHandler<io.netty.handler.ssl.SslContext>
    • retrieveClientCertificates

      public static Certificate[] retrieveClientCertificates(MockServerLogger mockServerLogger, io.netty.channel.ChannelHandlerContext ctx)
    • setNegotiatedApplicationProtocol

      public static void setNegotiatedApplicationProtocol(io.netty.channel.Channel channel, Protocol protocol)
      Record the negotiated application protocol on the channel as a trusted, server-side signal. Used by the cleartext HTTP/2 (h2c) path, where there is no ALPN to read the protocol from: the pipeline detects the h2c connection preface and marks the channel as HTTP/2 so downstream stream-scoped behaviour (e.g. capturing the HTTP/2 stream id) is enabled for genuine h2c connections without trusting any client-supplied header.
      Parameters:
      channel - the channel the protocol was negotiated on
      protocol - the negotiated protocol (e.g. Protocol.HTTP_2 for h2c)
    • getALPNProtocol

      public static Protocol getALPNProtocol(MockServerLogger mockServerLogger, io.netty.channel.ChannelHandlerContext ctx)