- java.lang.Object
-
- io.netty5.channel.ChannelHandlerAdapter
-
- io.netty5.handler.codec.ByteToMessageDecoder
-
- io.netty5.handler.ssl.SslClientHelloHandler<T>
-
- io.netty5.handler.ssl.AbstractSniHandler<T>
-
- All Implemented Interfaces:
ChannelHandler
- Direct Known Subclasses:
SniHandler
public abstract class AbstractSniHandler<T> extends SslClientHelloHandler<T>
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.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class io.netty5.handler.codec.ByteToMessageDecoder
ByteToMessageDecoder.Cumulator
-
-
Field Summary
-
Fields inherited from class io.netty5.handler.codec.ByteToMessageDecoder
COMPOSITE_CUMULATOR, MERGE_CUMULATOR
-
-
Constructor Summary
Constructors Constructor Description AbstractSniHandler()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected Future<T>
lookup(ChannelHandlerContext ctx, Buffer clientHello)
Kicks off a lookup for the givenClientHello
and returns aFuture
which in turn will notify theSslClientHelloHandler.onLookupComplete(ChannelHandlerContext, Future)
on completion.protected abstract Future<T>
lookup(ChannelHandlerContext ctx, String hostname)
Kicks off a lookup for the given SNI value and returns aFuture
which in turn will notify theonLookupComplete(ChannelHandlerContext, String, Future)
on completion.protected void
onLookupComplete(ChannelHandlerContext ctx, Future<? extends T> future)
Called upon completion of theSslClientHelloHandler.lookup(ChannelHandlerContext, Buffer)
Future
.protected abstract void
onLookupComplete(ChannelHandlerContext ctx, String hostname, Future<? extends T> future)
Called upon completion of thelookup(ChannelHandlerContext, String)
Future
.-
Methods inherited from class io.netty5.handler.ssl.SslClientHelloHandler
decode, handlerRemoved0, read
-
Methods inherited from class io.netty5.handler.codec.ByteToMessageDecoder
actualReadableBytes, channelInactive, channelRead, channelReadComplete, channelShutdown, decodeLast, discardSomeReadBytes, handlerAdded, handlerAdded0, handlerRemoved, internalBuffer, isSharable, isSingleDecode, setSingleDecode
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.netty5.channel.ChannelHandler
bind, channelActive, channelExceptionCaught, channelInboundEvent, channelRegistered, channelUnregistered, channelWritabilityChanged, close, connect, deregister, disconnect, flush, pendingOutboundBytes, register, sendOutboundEvent, shutdown, write
-
-
-
-
Method Detail
-
lookup
protected Future<T> lookup(ChannelHandlerContext ctx, Buffer clientHello) throws Exception
Description copied from class:SslClientHelloHandler
Kicks off a lookup for the givenClientHello
and returns aFuture
which in turn will notify theSslClientHelloHandler.onLookupComplete(ChannelHandlerContext, Future)
on completion. See https://tools.ietf.org/html/rfc5246#section-7.4.1.2struct { ProtocolVersion client_version; Random random; SessionID session_id; CipherSuite cipher_suites<2..2^16-2>; CompressionMethod compression_methods<1..2^8-1>; select (extensions_present) { case false: struct {}; case true: Extension extensions<0..2^16-1>; }; } ClientHello;
- Specified by:
lookup
in classSslClientHelloHandler<T>
- Throws:
Exception
- See Also:
SslClientHelloHandler.onLookupComplete(ChannelHandlerContext, Future)
-
onLookupComplete
protected void onLookupComplete(ChannelHandlerContext ctx, Future<? extends T> future) throws Exception
Description copied from class:SslClientHelloHandler
Called upon completion of theSslClientHelloHandler.lookup(ChannelHandlerContext, Buffer)
Future
.- Specified by:
onLookupComplete
in classSslClientHelloHandler<T>
- Throws:
Exception
- See Also:
SslClientHelloHandler.lookup(ChannelHandlerContext, Buffer)
-
lookup
protected abstract Future<T> lookup(ChannelHandlerContext ctx, String hostname) throws Exception
Kicks off a lookup for the given SNI value and returns aFuture
which in turn will notify theonLookupComplete(ChannelHandlerContext, String, Future)
on completion.- Throws:
Exception
- See Also:
onLookupComplete(ChannelHandlerContext, String, Future)
-
onLookupComplete
protected abstract void onLookupComplete(ChannelHandlerContext ctx, String hostname, Future<? extends T> future) throws Exception
Called upon completion of thelookup(ChannelHandlerContext, String)
Future
.- Throws:
Exception
- See Also:
lookup(ChannelHandlerContext, String)
-
-