public class SniHandler
extends io.netty.handler.codec.ByteToMessageDecoder
implements io.netty.channel.ChannelOutboundHandler
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.
| Modifier and Type | Field and Description |
|---|---|
protected io.netty.util.AsyncMapping<String,SslContext> |
mapping |
| Constructor and Description |
|---|
SniHandler(io.netty.util.AsyncMapping<? super String,? extends SslContext> mapping)
Creates a SNI detection handler with configured
SslContext
maintained by AsyncMapping |
SniHandler(io.netty.util.DomainNameMapping<? extends SslContext> mapping)
Creates a SNI detection handler with configured
SslContext
maintained by DomainNameMapping |
SniHandler(io.netty.util.Mapping<? super String,? extends SslContext> mapping)
Creates a SNI detection handler with configured
SslContext
maintained by Mapping |
| Modifier and Type | Method and Description |
|---|---|
void |
bind(io.netty.channel.ChannelHandlerContext ctx,
SocketAddress localAddress,
io.netty.channel.ChannelPromise promise) |
void |
close(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise) |
void |
connect(io.netty.channel.ChannelHandlerContext ctx,
SocketAddress remoteAddress,
SocketAddress localAddress,
io.netty.channel.ChannelPromise promise) |
protected void |
decode(io.netty.channel.ChannelHandlerContext ctx,
io.netty.buffer.ByteBuf in,
List<Object> out) |
void |
deregister(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise) |
void |
disconnect(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise) |
void |
flush(io.netty.channel.ChannelHandlerContext ctx) |
String |
hostname() |
protected io.netty.util.concurrent.Future<SslContext> |
lookup(io.netty.channel.ChannelHandlerContext ctx,
String hostname)
The default implementation will simply call
AsyncMapping.map(Object, Promise) but
users can override this method to implement custom behavior. |
void |
read(io.netty.channel.ChannelHandlerContext ctx) |
protected void |
replaceHandler(io.netty.channel.ChannelHandlerContext ctx,
String hostname,
SslContext sslContext)
The default implementation of this method will simply replace
this SniHandler
instance with a SslHandler. |
SslContext |
sslContext() |
void |
write(io.netty.channel.ChannelHandlerContext ctx,
Object msg,
io.netty.channel.ChannelPromise promise) |
actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggeredchannelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaughtprotected final io.netty.util.AsyncMapping<String,SslContext> mapping
public SniHandler(io.netty.util.Mapping<? super String,? extends SslContext> mapping)
SslContext
maintained by Mappingmapping - the mapping of domain name to SslContextpublic SniHandler(io.netty.util.DomainNameMapping<? extends SslContext> mapping)
SslContext
maintained by DomainNameMappingmapping - the mapping of domain name to SslContextpublic SniHandler(io.netty.util.AsyncMapping<? super String,? extends SslContext> mapping)
SslContext
maintained by AsyncMappingmapping - the mapping of domain name to SslContextpublic String hostname()
public SslContext sslContext()
SslContextprotected void decode(io.netty.channel.ChannelHandlerContext ctx,
io.netty.buffer.ByteBuf in,
List<Object> out)
throws Exception
decode in class io.netty.handler.codec.ByteToMessageDecoderExceptionprotected io.netty.util.concurrent.Future<SslContext> lookup(io.netty.channel.ChannelHandlerContext ctx, String hostname) throws Exception
AsyncMapping.map(Object, Promise) but
users can override this method to implement custom behavior.ExceptionAsyncMapping.map(Object, Promise)protected void replaceHandler(io.netty.channel.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.Exceptionpublic void bind(io.netty.channel.ChannelHandlerContext ctx,
SocketAddress localAddress,
io.netty.channel.ChannelPromise promise)
throws Exception
bind in interface io.netty.channel.ChannelOutboundHandlerExceptionpublic void connect(io.netty.channel.ChannelHandlerContext ctx,
SocketAddress remoteAddress,
SocketAddress localAddress,
io.netty.channel.ChannelPromise promise)
throws Exception
connect in interface io.netty.channel.ChannelOutboundHandlerExceptionpublic void disconnect(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise)
throws Exception
disconnect in interface io.netty.channel.ChannelOutboundHandlerExceptionpublic void close(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise)
throws Exception
close in interface io.netty.channel.ChannelOutboundHandlerExceptionpublic void deregister(io.netty.channel.ChannelHandlerContext ctx,
io.netty.channel.ChannelPromise promise)
throws Exception
deregister in interface io.netty.channel.ChannelOutboundHandlerExceptionpublic void read(io.netty.channel.ChannelHandlerContext ctx)
throws Exception
read in interface io.netty.channel.ChannelOutboundHandlerExceptionpublic void write(io.netty.channel.ChannelHandlerContext ctx,
Object msg,
io.netty.channel.ChannelPromise promise)
throws Exception
write in interface io.netty.channel.ChannelOutboundHandlerExceptionCopyright © 2008–2017 The Netty Project. All rights reserved.