Top Description Inners Fields Constructors Methods
io.undertow.server.handlers

public Class IPAddressAccessControlHandler

extends Object
implements HttpHandler
Class Inheritance
All Implemented Interfaces
io.undertow.server.HttpHandler
Imports
io.undertow.UndertowLogger, .UndertowMessages, java.io.IOException, java.net.Inet4Address, .Inet6Address, .InetAddress, .InetSocketAddress, java.util.ArrayList, .Arrays, .Collections, .HashMap, .List, .Map, .Set, java.util.concurrent.CopyOnWriteArrayList, java.util.regex.Pattern, io.undertow.server.HandlerWrapper, .HttpHandler, .HttpServerExchange, io.undertow.server.handlers.builder.HandlerBuilder, io.undertow.util.NetworkUtils, .StatusCodes, java.util.stream.Collectors, org.xnio.Bits

Handler that can accept or reject a request based on the IP address of the remote peer.
Author
Stuart Douglas

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static class
pack-priv static class
pack-priv static class
private static class
pack-priv abstract static class
private static class
pack-priv static class
private static class

Field Summary

Modifier and TypeField and Description
private static final boolean
private volatile boolean
private final int
private static final Pattern
IP4_EXACT

Standard IP address

private static final Pattern
IP4_SLASH

IPv4 address with subnet specified via slash notation

private static final Pattern
IP4_WILDCARD

Standard IP address, with some octets replaced by a '*'

private static final Pattern
IP6_EXACT

Standard full IPv6 address

private static final Pattern
IP6_SLASH

Standard full IPv6 address with subnet specified via slash notation

private static final Pattern
IP6_WILDCARD

Standard full IPv6 address, with some parts replaced by a '*'

private final List<IPAddressAccessControlHandler.PeerMatch>
private final List<IPAddressAccessControlHandler.PeerMatch>
private volatile HttpHandler
private static final boolean

Constructor Summary

AccessConstructor and Description
public
public
IPAddressAccessControlHandler(final HttpHandler next, final int denyResponseCode)

public

Method Summary

Modifier and TypeMethod and Description
public IPAddressAccessControlHandler
addAllow(final String
The peer to add to the ACL
peer
)

Adds an allowed peer to the ACL list

Peer can take several forms:

a.b.c.d = Literal IPv4 Address a:b:c:d:e:f:g:h = Literal IPv6 Address a.b.* = Wildcard IPv4 Address a:b:* = Wildcard IPv6 Address a.b.c.0/24 = Classless wildcard IPv4 address a:b:c:d:e:f:g:0/120 = Classless wildcard IPv6 address

public IPAddressAccessControlHandler
addDeny(final String
The peer to add to the ACL
peer
)

Adds an denied peer to the ACL list

Peer can take several forms:

a.b.c.d = Literal IPv4 Address a:b:c:d:e:f:g:h = Literal IPv6 Address a.b.* = Wildcard IPv4 Address a:b:* = Wildcard IPv6 Address a.b.c.0/24 = Classless wildcard IPv4 address a:b:c:d:e:f:g:0/120 = Classless wildcard IPv6 address

private void
addIpV4ExactMatch(final String peer, final boolean deny)

private void
addIpV4SlashPrefix(final String peer, final boolean deny)

private void
addIpV4WildcardMatch(final String peer, final boolean deny)

private void
addIpV6ExactMatch(final String peer, final boolean deny)

private void
addIpV6SlashPrefix(final String peer, final boolean deny)

private void
addIpV6WildcardMatch(final String peer, final boolean deny)

private IPAddressAccessControlHandler
addRule(final String peer, final boolean deny)

public IPAddressAccessControlHandler
public int
public HttpHandler
public void
handleRequest(final HttpServerExchange
the HTTP request/response exchange
exchange
)

Implements io.undertow.server.HttpHandler.handleRequest.

Handle the request.

pack-priv boolean
public boolean
public IPAddressAccessControlHandler
setDefaultAllow(final boolean defaultAllow)

public IPAddressAccessControlHandler
setNext(final HttpHandler next)

public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait

Field Detail

debugEnabledback to summary
private static final boolean debugEnabled
defaultAllowback to summary
private volatile boolean defaultAllow
denyResponseCodeback to summary
private final int denyResponseCode
IP4_EXACTback to summary
private static final Pattern IP4_EXACT

Standard IP address

IP4_SLASHback to summary
private static final Pattern IP4_SLASH

IPv4 address with subnet specified via slash notation

IP4_WILDCARDback to summary
private static final Pattern IP4_WILDCARD

Standard IP address, with some octets replaced by a '*'

IP6_EXACTback to summary
private static final Pattern IP6_EXACT

Standard full IPv6 address

IP6_SLASHback to summary
private static final Pattern IP6_SLASH

Standard full IPv6 address with subnet specified via slash notation

IP6_WILDCARDback to summary
private static final Pattern IP6_WILDCARD

Standard full IPv6 address, with some parts replaced by a '*'

ipv4aclback to summary
private final List<IPAddressAccessControlHandler.PeerMatch> ipv4acl
ipv6aclback to summary
private final List<IPAddressAccessControlHandler.PeerMatch> ipv6acl
nextback to summary
private volatile HttpHandler next
traceEnabledback to summary
private static final boolean traceEnabled

Constructor Detail

IPAddressAccessControlHandlerback to summary
public IPAddressAccessControlHandler(final HttpHandler next)
IPAddressAccessControlHandlerback to summary
public IPAddressAccessControlHandler(final HttpHandler next, final int denyResponseCode)
IPAddressAccessControlHandlerback to summary
public IPAddressAccessControlHandler()

Method Detail

addAllowback to summary
public IPAddressAccessControlHandler addAllow(final String peer)

Adds an allowed peer to the ACL list

Peer can take several forms:

a.b.c.d = Literal IPv4 Address a:b:c:d:e:f:g:h = Literal IPv6 Address a.b.* = Wildcard IPv4 Address a:b:* = Wildcard IPv6 Address a.b.c.0/24 = Classless wildcard IPv4 address a:b:c:d:e:f:g:0/120 = Classless wildcard IPv6 address

Parameters
peer:String

The peer to add to the ACL

addDenyback to summary
public IPAddressAccessControlHandler addDeny(final String peer)

Adds an denied peer to the ACL list

Peer can take several forms:

a.b.c.d = Literal IPv4 Address a:b:c:d:e:f:g:h = Literal IPv6 Address a.b.* = Wildcard IPv4 Address a:b:* = Wildcard IPv6 Address a.b.c.0/24 = Classless wildcard IPv4 address a:b:c:d:e:f:g:0/120 = Classless wildcard IPv6 address

Parameters
peer:String

The peer to add to the ACL

addIpV4ExactMatchback to summary
private void addIpV4ExactMatch(final String peer, final boolean deny)
addIpV4SlashPrefixback to summary
private void addIpV4SlashPrefix(final String peer, final boolean deny)
addIpV4WildcardMatchback to summary
private void addIpV4WildcardMatch(final String peer, final boolean deny)
addIpV6ExactMatchback to summary
private void addIpV6ExactMatch(final String peer, final boolean deny)
addIpV6SlashPrefixback to summary
private void addIpV6SlashPrefix(final String peer, final boolean deny)
addIpV6WildcardMatchback to summary
private void addIpV6WildcardMatch(final String peer, final boolean deny)
addRuleback to summary
private IPAddressAccessControlHandler addRule(final String peer, final boolean deny)
clearRulesback to summary
public IPAddressAccessControlHandler clearRules()
getDenyResponseCodeback to summary
public int getDenyResponseCode()
getNextback to summary
public HttpHandler getNext()
handleRequestback to summary
public void handleRequest(final HttpServerExchange exchange) throws Exception

Implements io.undertow.server.HttpHandler.handleRequest.

Doc from io.undertow.server.HttpHandler.handleRequest.

Handle the request.

Parameters
exchange:HttpServerExchange

the HTTP request/response exchange

Annotations
@Override
isAllowedback to summary
pack-priv boolean isAllowed(InetAddress address)
isDefaultAllowback to summary
public boolean isDefaultAllow()
setDefaultAllowback to summary
public IPAddressAccessControlHandler setDefaultAllow(final boolean defaultAllow)
setNextback to summary
public IPAddressAccessControlHandler setNext(final HttpHandler next)
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Returns:String

a string representation of the object

Annotations
@Override
io.undertow.server.handlers back to summary

public Class IPAddressAccessControlHandler.Builder

extends Object
implements HandlerBuilder
Class Inheritance
  • java.lang.Object
  • io.undertow.server.handlers.IPAddressAccessControlHandler.Builder
All Implemented Interfaces
io.undertow.server.handlers.builder.HandlerBuilder

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public HandlerWrapper
build(Map<String, Object>
The handler config
config
)

Implements io.undertow.server.handlers.builder.HandlerBuilder.build.

Creates the handler

public String
public String
name()

Implements io.undertow.server.handlers.builder.HandlerBuilder.name.

The string representation of the handler name.

public Map<String, Class<?>>
parameters()

Implements io.undertow.server.handlers.builder.HandlerBuilder.parameters.

Returns a map of parameters and their types.

public Set<String>
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

Builderback to summary
public Builder()

Method Detail

buildback to summary
public HandlerWrapper build(Map<String, Object> config)

Implements io.undertow.server.handlers.builder.HandlerBuilder.build.

Doc from io.undertow.server.handlers.builder.HandlerBuilder.build.

Creates the handler

Parameters
config:Map<String, Object>

The handler config

Returns:HandlerWrapper

The new predicate

Annotations
@Override
defaultParameterback to summary
public String defaultParameter()

Implements io.undertow.server.handlers.builder.HandlerBuilder.defaultParameter.

Returns:String

Doc from io.undertow.server.handlers.builder.HandlerBuilder.defaultParameter.

The default parameter name, or null if it does not have a default parameter

Annotations
@Override
nameback to summary
public String name()

Implements io.undertow.server.handlers.builder.HandlerBuilder.name.

Doc from io.undertow.server.handlers.builder.HandlerBuilder.name.

The string representation of the handler name.

Returns:String

The handler name

Annotations
@Override
parametersback to summary
public Map<String, Class<?>> parameters()

Implements io.undertow.server.handlers.builder.HandlerBuilder.parameters.

Doc from io.undertow.server.handlers.builder.HandlerBuilder.parameters.

Returns a map of parameters and their types.

Annotations
@Override
requiredParametersback to summary
public Set<String> requiredParameters()

Implements io.undertow.server.handlers.builder.HandlerBuilder.requiredParameters.

Returns:Set<String>

Doc from io.undertow.server.handlers.builder.HandlerBuilder.requiredParameters.

The required parameters

Annotations
@Override
io.undertow.server.handlers back to summary

pack-priv Class IPAddressAccessControlHandler.ExactIpV4PeerMatch

extends PeerMatch
Class Inheritance

Field Summary

Modifier and TypeField and Description
private final byte[]

Constructor Summary

AccessConstructor and Description
protected
ExactIpV4PeerMatch(final boolean deny, final String pattern, final byte[] address)

Method Summary

Modifier and TypeMethod and Description
pack-priv boolean
Inherited from io.undertow.server.handlers.IPAddressAccessControlHandler.PeerMatch:
isDenytoPredicateStringtoString

Field Detail

addressback to summary
private final byte[] address

Constructor Detail

ExactIpV4PeerMatchback to summary
protected ExactIpV4PeerMatch(final boolean deny, final String pattern, final byte[] address)

Method Detail

matchesback to summary
pack-priv boolean matches(final InetAddress address)

Implements abstract io.undertow.server.handlers.IPAddressAccessControlHandler.PeerMatch.matches.

Annotations
@Override
io.undertow.server.handlers back to summary

pack-priv Class IPAddressAccessControlHandler.ExactIpV6PeerMatch

extends PeerMatch
Class Inheritance

Field Summary

Modifier and TypeField and Description
private final byte[]

Constructor Summary

AccessConstructor and Description
protected
ExactIpV6PeerMatch(final boolean deny, final String pattern, final byte[] address)

Method Summary

Modifier and TypeMethod and Description
pack-priv boolean
Inherited from io.undertow.server.handlers.IPAddressAccessControlHandler.PeerMatch:
isDenytoPredicateStringtoString

Field Detail

addressback to summary
private final byte[] address

Constructor Detail

ExactIpV6PeerMatchback to summary
protected ExactIpV6PeerMatch(final boolean deny, final String pattern, final byte[] address)

Method Detail

matchesback to summary
pack-priv boolean matches(final InetAddress address)

Implements abstract io.undertow.server.handlers.IPAddressAccessControlHandler.PeerMatch.matches.

Annotations
@Override
io.undertow.server.handlers back to summary

private Class IPAddressAccessControlHandler.Holder

extends Object
Class Inheritance
  • java.lang.Object
  • io.undertow.server.handlers.IPAddressAccessControlHandler.Holder

Field Summary

Modifier and TypeField and Description
pack-priv final boolean
pack-priv final String

Constructor Summary

AccessConstructor and Description
private
Holder(String rule, boolean deny)

Method Summary

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

denyback to summary
pack-priv final boolean deny
ruleback to summary
pack-priv final String rule

Constructor Detail

Holderback to summary
private Holder(String rule, boolean deny)
io.undertow.server.handlers back to summary

pack-priv abstract Class IPAddressAccessControlHandler.PeerMatch

extends Object
Class Inheritance
  • java.lang.Object
  • io.undertow.server.handlers.IPAddressAccessControlHandler.PeerMatch
Known Direct Subclasses
io.undertow.server.handlers.IPAddressAccessControlHandler.ExactIpV4PeerMatch, io.undertow.server.handlers.IPAddressAccessControlHandler.ExactIpV6PeerMatch, io.undertow.server.handlers.IPAddressAccessControlHandler.PrefixIpV4PeerMatch, io.undertow.server.handlers.IPAddressAccessControlHandler.PrefixIpV6PeerMatch

Field Summary

Modifier and TypeField and Description
private final boolean
private final String

Constructor Summary

AccessConstructor and Description
protected
PeerMatch(final boolean deny, final String pattern)

Method Summary

Modifier and TypeMethod and Description
pack-priv boolean
pack-priv abstract boolean
matches(final InetAddress address)

public String
public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait

Field Detail

denyback to summary
private final boolean deny
patternback to summary
private final String pattern

Constructor Detail

PeerMatchback to summary
protected PeerMatch(final boolean deny, final String pattern)

Method Detail

isDenyback to summary
pack-priv boolean isDeny()
matchesback to summary
pack-priv abstract boolean matches(final InetAddress address)
toPredicateStringback to summary
public String toPredicateString()
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Returns:String

a string representation of the object

Annotations
@Override
io.undertow.server.handlers back to summary

private Class IPAddressAccessControlHandler.PrefixIpV4PeerMatch

extends PeerMatch
Class Inheritance

Field Summary

Modifier and TypeField and Description
private final int
private final int

Constructor Summary

AccessConstructor and Description
protected
PrefixIpV4PeerMatch(final boolean deny, final String pattern, final int mask, final int prefix)

Method Summary

Modifier and TypeMethod and Description
pack-priv boolean
Inherited from io.undertow.server.handlers.IPAddressAccessControlHandler.PeerMatch:
isDenytoPredicateStringtoString

Field Detail

maskback to summary
private final int mask
prefixback to summary
private final int prefix

Constructor Detail

PrefixIpV4PeerMatchback to summary
protected PrefixIpV4PeerMatch(final boolean deny, final String pattern, final int mask, final int prefix)

Method Detail

matchesback to summary
pack-priv boolean matches(final InetAddress address)

Implements abstract io.undertow.server.handlers.IPAddressAccessControlHandler.PeerMatch.matches.

Annotations
@Override
io.undertow.server.handlers back to summary

pack-priv Class IPAddressAccessControlHandler.PrefixIpV6PeerMatch

extends PeerMatch
Class Inheritance

Field Summary

Modifier and TypeField and Description
private final byte[]
private final byte[]

Constructor Summary

AccessConstructor and Description
protected
PrefixIpV6PeerMatch(final boolean deny, final String pattern, final byte[] mask, final byte[] prefix)

Method Summary

Modifier and TypeMethod and Description
pack-priv boolean
Inherited from io.undertow.server.handlers.IPAddressAccessControlHandler.PeerMatch:
isDenytoPredicateStringtoString

Field Detail

maskback to summary
private final byte[] mask
prefixback to summary
private final byte[] prefix

Constructor Detail

PrefixIpV6PeerMatchback to summary
protected PrefixIpV6PeerMatch(final boolean deny, final String pattern, final byte[] mask, final byte[] prefix)

Method Detail

matchesback to summary
pack-priv boolean matches(final InetAddress address)

Implements abstract io.undertow.server.handlers.IPAddressAccessControlHandler.PeerMatch.matches.

Annotations
@Override
io.undertow.server.handlers back to summary

private Class IPAddressAccessControlHandler.Wrapper

extends Object
implements HandlerWrapper
Class Inheritance
  • java.lang.Object
  • io.undertow.server.handlers.IPAddressAccessControlHandler.Wrapper
All Implemented Interfaces
io.undertow.server.HandlerWrapper

Field Summary

Modifier and TypeField and Description
private final boolean
private final int
private final List<IPAddressAccessControlHandler.Holder>

Constructor Summary

AccessConstructor and Description
private
Wrapper(List<IPAddressAccessControlHandler.Holder> peerMatches, boolean defaultAllow, int failureStatus)

Method Summary

Modifier and TypeMethod and Description
public HttpHandler
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

defaultAllowback to summary
private final boolean defaultAllow
failureStatusback to summary
private final int failureStatus
peerMatchesback to summary
private final List<IPAddressAccessControlHandler.Holder> peerMatches

Constructor Detail

Wrapperback to summary
private Wrapper(List<IPAddressAccessControlHandler.Holder> peerMatches, boolean defaultAllow, int failureStatus)

Method Detail

wrapback to summary
public HttpHandler wrap(HttpHandler handler)

Implements io.undertow.server.HandlerWrapper.wrap.

Annotations
@Override