public class SniHandler extends AbstractSniHandler<SslContext>
Enables SNI (Server Name Indication) extension for server side SSL. For clients support SNI, the server could have multiple host name bound on a single IP. The client will send host name in the handshake data so server could decide which certificate to choose for the host name.
ByteToMessageDecoder.Cumulator
ChannelHandler.Sharable
Modifier and Type | Field and Description |
---|---|
protected AsyncMapping<String,SslContext> |
mapping |
handshakeTimeoutMillis
MAX_CLIENT_HELLO_LENGTH
COMPOSITE_CUMULATOR, MERGE_CUMULATOR
Constructor and Description |
---|
SniHandler(AsyncMapping<? super String,? extends SslContext> mapping)
Creates a SNI detection handler with configured
SslContext
maintained by AsyncMapping |
SniHandler(AsyncMapping<? super String,? extends SslContext> mapping,
int maxClientHelloLength,
long handshakeTimeoutMillis)
Creates a SNI detection handler with configured
SslContext
maintained by AsyncMapping |
SniHandler(AsyncMapping<? super String,? extends SslContext> mapping,
long handshakeTimeoutMillis)
Creates a SNI detection handler with configured
SslContext
maintained by AsyncMapping |
SniHandler(DomainNameMapping<? extends SslContext> mapping)
Creates a SNI detection handler with configured
SslContext
maintained by DomainNameMapping |
SniHandler(Mapping<? super String,? extends SslContext> mapping)
Creates a SNI detection handler with configured
SslContext
maintained by Mapping |
SniHandler(Mapping<? super String,? extends SslContext> mapping,
int maxClientHelloLength,
long handshakeTimeoutMillis)
Creates a SNI detection handler with configured
SslContext
maintained by Mapping |
SniHandler(Mapping<? super String,? extends SslContext> mapping,
long handshakeTimeoutMillis)
Creates a SNI detection handler with configured
SslContext
maintained by Mapping |
Modifier and Type | Method and Description |
---|---|
String |
hostname() |
protected Future<SslContext> |
lookup(ChannelHandlerContext ctx,
String hostname)
The default implementation will simply call
AsyncMapping.map(Object, Promise) but
users can override this method to implement custom behavior. |
protected SslHandler |
newSslHandler(SslContext context,
ByteBufAllocator allocator)
|
protected void |
onLookupComplete(ChannelHandlerContext ctx,
String hostname,
Future<SslContext> future)
Called upon completion of the
AbstractSniHandler.lookup(ChannelHandlerContext, String) Future . |
protected void |
replaceHandler(ChannelHandlerContext ctx,
String hostname,
SslContext sslContext)
The default implementation of this method will simply replace
this SniHandler
instance with a SslHandler . |
SslContext |
sslContext() |
channelActive, handlerAdded, lookup, onLookupComplete
bind, close, connect, decode, deregister, disconnect, flush, handlerRemoved0, read, write
actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggered
channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught
ensureNotSharable, isSharable
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
exceptionCaught, handlerRemoved
protected final AsyncMapping<String,SslContext> mapping
public SniHandler(Mapping<? super String,? extends SslContext> mapping)
SslContext
maintained by Mapping
mapping
- the mapping of domain name to SslContext
public SniHandler(Mapping<? super String,? extends SslContext> mapping, int maxClientHelloLength, long handshakeTimeoutMillis)
SslContext
maintained by Mapping
mapping
- the mapping of domain name to SslContext
maxClientHelloLength
- the maximum length of the client hello messagehandshakeTimeoutMillis
- the handshake timeout in millisecondspublic SniHandler(DomainNameMapping<? extends SslContext> mapping)
SslContext
maintained by DomainNameMapping
mapping
- the mapping of domain name to SslContext
public SniHandler(AsyncMapping<? super String,? extends SslContext> mapping)
SslContext
maintained by AsyncMapping
mapping
- the mapping of domain name to SslContext
public SniHandler(AsyncMapping<? super String,? extends SslContext> mapping, int maxClientHelloLength, long handshakeTimeoutMillis)
SslContext
maintained by AsyncMapping
mapping
- the mapping of domain name to SslContext
maxClientHelloLength
- the maximum length of the client hello messagehandshakeTimeoutMillis
- the handshake timeout in millisecondspublic SniHandler(Mapping<? super String,? extends SslContext> mapping, long handshakeTimeoutMillis)
SslContext
maintained by Mapping
mapping
- the mapping of domain name to SslContext
handshakeTimeoutMillis
- the handshake timeout in millisecondspublic SniHandler(AsyncMapping<? super String,? extends SslContext> mapping, long handshakeTimeoutMillis)
SslContext
maintained by AsyncMapping
mapping
- the mapping of domain name to SslContext
handshakeTimeoutMillis
- the handshake timeout in millisecondspublic String hostname()
public SslContext sslContext()
SslContext
protected Future<SslContext> lookup(ChannelHandlerContext ctx, String hostname) throws Exception
AsyncMapping.map(Object, Promise)
but
users can override this method to implement custom behavior.lookup
in class AbstractSniHandler<SslContext>
Exception
AsyncMapping.map(Object, Promise)
protected final void onLookupComplete(ChannelHandlerContext ctx, String hostname, Future<SslContext> future) throws Exception
AbstractSniHandler
AbstractSniHandler.lookup(ChannelHandlerContext, String)
Future
.onLookupComplete
in class AbstractSniHandler<SslContext>
Exception
AbstractSniHandler.lookup(ChannelHandlerContext, String)
protected void replaceHandler(ChannelHandlerContext ctx, String hostname, SslContext sslContext) throws Exception
this
SniHandler
instance with a SslHandler
. Users may override this method to implement custom behavior.
Please be aware that this method may get called after a client has already disconnected and
custom implementations must take it into consideration when overriding this method.
It's also possible for the hostname argument to be null
.Exception
protected SslHandler newSslHandler(SslContext context, ByteBufAllocator allocator)
SslHandler
using the given SslContext
and ByteBufAllocator
.
Users may override this method to implement custom behavior.Copyright © 2008–2024 The Netty Project. All rights reserved.