Class IpSubnetFilter
- All Implemented Interfaces:
ChannelHandler,ChannelInboundHandler
This class allows one to filter new Channels based on the
IpSubnetFilters passed to its constructor. If no rules are provided, all connections
will be accepted since acceptIfNotFound is true by default.
If you would like to explicitly take action on rejected Channels, you should override
AbstractRemoteAddressFilter.channelRejected(ChannelHandlerContext, SocketAddress).
Few Points to keep in mind:
- Since
IpSubnetFilteruses Binary search algorithm, it's a good idea to insert IP addresses in incremental order. - Remove any over-lapping CIDR.
-
Nested Class Summary
Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
ChannelHandler.Sharable -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final booleanprivate final IpFilterRuleTypeprivate final IpFilterRuleTypeprivate final IpSubnetFilterRule[]private final IpSubnetFilterRule[] -
Constructor Summary
ConstructorsConstructorDescriptionIpSubnetFilter(boolean acceptIfNotFound, IpSubnetFilterRule... rules) Create newIpSubnetFilterInstance with specifiedIpSubnetFilterRuleas array and specify if we'll accept a connection if we don't find it in the rule(s).IpSubnetFilter(boolean acceptIfNotFound, List<IpSubnetFilterRule> rules) Create newIpSubnetFilterInstance with specifiedIpSubnetFilterRuleasListand specify if we'll accept a connection if we don't find it in the rule(s).IpSubnetFilter(IpSubnetFilterRule... rules) Create newIpSubnetFilterInstance with specifiedIpSubnetFilterRuleas array.IpSubnetFilter(List<IpSubnetFilterRule> rules) -
Method Summary
Modifier and TypeMethodDescriptionprotected booleanaccept(ChannelHandlerContext ctx, InetSocketAddress remoteAddress) This method is called immediately after aChannelgets registered.private static IpSubnetFilterRule[]sortAndFilter(List<IpSubnetFilterRule> rules) Sort the list Remove over-lapping subnet Sort the list againMethods inherited from class io.netty.handler.ipfilter.AbstractRemoteAddressFilter
channelAccepted, channelActive, channelRegistered, channelRejectedMethods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelInactive, channelRead, channelReadComplete, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggeredMethods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, handlerAdded, handlerRemoved, isSharableMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.netty.channel.ChannelHandler
handlerAdded, handlerRemoved
-
Field Details
-
acceptIfNotFound
private final boolean acceptIfNotFound -
ipv4Rules
-
ipv6Rules
-
ipFilterRuleTypeIPv4
-
ipFilterRuleTypeIPv6
-
-
Constructor Details
-
IpSubnetFilter
Create new
IpSubnetFilterInstance with specifiedIpSubnetFilterRuleas array.acceptIfNotFoundis set totrue.- Parameters:
rules-IpSubnetFilterRuleas an array
-
IpSubnetFilter
Create new
IpSubnetFilterInstance with specifiedIpSubnetFilterRuleas array and specify if we'll accept a connection if we don't find it in the rule(s).- Parameters:
acceptIfNotFound-trueif we'll accept connection if not found in rule(s).rules-IpSubnetFilterRuleas an array
-
IpSubnetFilter
Create new
IpSubnetFilterInstance with specifiedIpSubnetFilterRuleasList.acceptIfNotFoundis set totrue.- Parameters:
rules-IpSubnetFilterRuleas aList
-
IpSubnetFilter
Create new
IpSubnetFilterInstance with specifiedIpSubnetFilterRuleasListand specify if we'll accept a connection if we don't find it in the rule(s).- Parameters:
acceptIfNotFound-trueif we'll accept connection if not found in rule(s).rules-IpSubnetFilterRuleas aList
-
-
Method Details
-
accept
Description copied from class:AbstractRemoteAddressFilterThis method is called immediately after aChannelgets registered.- Specified by:
acceptin classAbstractRemoteAddressFilter<InetSocketAddress>- Returns:
- Return true if connections from this IP address and port should be accepted. False otherwise.
-
sortAndFilter
- Sort the list
- Remove over-lapping subnet
- Sort the list again
-