org.jboss.netty.handler.ipfilter

## Class IpFilterRuleHandler

- java.lang.Object
- - org.jboss.netty.handler.ipfilter.IpFilteringHandlerImpl
  - - org.jboss.netty.handler.ipfilter.IpFilterRuleHandler

- All Implemented Interfaces:
    ChannelHandler, ChannelUpstreamHandler, IpFilteringHandler

      @ChannelHandler.Sharable
      public class IpFilterRuleHandler
      extends IpFilteringHandlerImpl

  Implementation of Filter of IP based on ALLOW and DENY rules.
  This implementation could be changed by implementing a new `IpFilterRule` than default `IpV4SubnetFilterRule` (IPV4 support only), `IpSubnetFilterRule` (IPV4 and IPV6 support) or `IpFilterRule` (IP and host name string pattern support) .
  The check is done by going from step to step in the underlying array of IpFilterRule.
  Each `IpFilterRule` answers to the method accept if the `InetAddress` is accepted or not, according to its implementation. If an InetAddress arrives at the end of the list, as in Firewall usual rules, the InetAddress is therefore accepted by default.
  - If it was constructed with True as first argument, the IpFilterRule is an ALLOW rule (every InetAddress that fits in the rule will be accepted).
  - If it was constructed with False as first argument, the IpFilterRule is a DENY rule (every InetAddress that fits in the rule will be refused).
  An empty list means allow all (no limitation).
  For efficiency reason, you should not add/remove too frequently IpFilterRules to/from this handler. You should prefer to replace an entry (`set` method) with an ALLOW/DENY ALL IpFilterRule if possible.
  This handler should be created only once and reused on every pipeline since it handles a global status of what is allowed or blocked.

  Note that `IpSubnetFilterRule` which supports IPV4 and IPV6 should be used with as much as possible no mixed IP protocol. Both IPV4 and IPV6 are supported but a mix (IpFilter in IPV6 notation and the address from the channel in IPV4, or the reverse) can lead to wrong result.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.jboss.netty.channel.ChannelHandler

      `ChannelHandler.Sharable`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `IpFilterRuleHandler()` Empty constructor (no IpFilterRule in the List at construction).
    `IpFilterRuleHandler(List<IpFilterRule> newList)` Constructor from a new list of IpFilterRule

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected boolean` | `accept(ChannelHandlerContext ctx, ChannelEvent e, InetSocketAddress inetSocketAddress)` Called when the channel is connected.
    `void` | `add(int index, IpFilterRule ipFilterRule)` Add an ipFilterRule in the list at the specified position (shifting to the right other elements)
    `void` | `add(IpFilterRule ipFilterRule)` Add an ipFilterRule in the list at the end
    `void` | `addAll(Collection<IpFilterRule> c)` Appends all of the elements in the specified collection to the end of this list, in the order that they are returned by the specified collection's iterator.
    `void` | `addAll(int index, Collection<IpFilterRule> c)` Inserts all of the elements in the specified collection into this list, starting at the specified position.
    `int` | `addAllAbsent(Collection<IpFilterRule> c)` Append the element if not present.
    `boolean` | `addIfAbsent(IpFilterRule ipFilterRule)` Append the element if not present.
    `void` | `clear()` Clear the list
    `boolean` | `contains(IpFilterRule ipFilterRule)` Returns true if this list contains the specified element
    `boolean` | `containsAll(Collection<IpFilterRule> c)` Returns true if this list contains all of the elements of the specified collection
    `IpFilterRule` | `get(int index)` Returns the element at the specified position in this list
    `boolean` | `isEmpty()` Returns true if this list contains no elements
    `IpFilterRule` | `remove(int index)` Removes the element at the specified position in this list
    `void` | `remove(IpFilterRule ipFilterRule)` Remove the ipFilterRule from the list
    `void` | `removeAll(Collection<IpFilterRule> c)` Removes from this list all of its elements that are contained in the specified collection
    `void` | `retainAll(Collection<IpFilterRule> c)` Retains only the elements in this list that are contained in the specified collection
    `IpFilterRule` | `set(int index, IpFilterRule ipFilterRule)` Replaces the element at the specified position in this list with the specified element
    `int` | `size()` Returns the number of elements in this list.

    - ### Methods inherited from class org.jboss.netty.handler.ipfilter.IpFilteringHandlerImpl

      `continues, handleAllowedChannel, handleRefusedChannel, handleUpstream, isBlocked, removeIpFilterListener, setIpFilterListener`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### IpFilterRuleHandler

          public IpFilterRuleHandler(List<IpFilterRule> newList)

      Constructor from a new list of IpFilterRule

    - #### IpFilterRuleHandler

          public IpFilterRuleHandler()

      Empty constructor (no IpFilterRule in the List at construction). In such a situation, empty list implies allow all.

  - ### Method Detail

    - #### add

          public void add(IpFilterRule ipFilterRule)

      Add an ipFilterRule in the list at the end

    - #### add

          public void add(int index,
                 IpFilterRule ipFilterRule)

      Add an ipFilterRule in the list at the specified position (shifting to the right other elements)

    - #### addAll

          public void addAll(Collection<IpFilterRule> c)

      Appends all of the elements in the specified collection to the end of this list, in the order that they are returned by the specified collection's iterator.

    - #### addAll

          public void addAll(int index,
                    Collection<IpFilterRule> c)

      Inserts all of the elements in the specified collection into this list, starting at the specified position.

    - #### addAllAbsent

          public int addAllAbsent(Collection<IpFilterRule> c)

      Append the element if not present.
      Returns:
        the number of elements added

    - #### addIfAbsent

          public boolean addIfAbsent(IpFilterRule ipFilterRule)

      Append the element if not present.
      Returns:
        true if the element was added

    - #### clear

          public void clear()

      Clear the list

    - #### contains

          public boolean contains(IpFilterRule ipFilterRule)

      Returns true if this list contains the specified element
      Returns:
        true if this list contains the specified element

    - #### containsAll

          public boolean containsAll(Collection<IpFilterRule> c)

      Returns true if this list contains all of the elements of the specified collection
      Returns:
        true if this list contains all of the elements of the specified collection

    - #### get

          public IpFilterRule get(int index)

      Returns the element at the specified position in this list
      Returns:
        the element at the specified position in this list

    - #### isEmpty

          public boolean isEmpty()

      Returns true if this list contains no elements
      Returns:
        true if this list contains no elements

    - #### remove

          public void remove(IpFilterRule ipFilterRule)

      Remove the ipFilterRule from the list

    - #### remove

          public IpFilterRule remove(int index)

      Removes the element at the specified position in this list
      Returns:
        the element previously at the specified position

    - #### removeAll

          public void removeAll(Collection<IpFilterRule> c)

      Removes from this list all of its elements that are contained in the specified collection

    - #### retainAll

          public void retainAll(Collection<IpFilterRule> c)

      Retains only the elements in this list that are contained in the specified collection

    - #### set

          public IpFilterRule set(int index,
                         IpFilterRule ipFilterRule)

      Replaces the element at the specified position in this list with the specified element
      Returns:
        the element previously at the specified position

    - #### size

          public int size()

      Returns the number of elements in this list.
      Returns:
        the number of elements in this list.

    - #### accept

          protected boolean accept(ChannelHandlerContext ctx,
                       ChannelEvent e,
                       InetSocketAddress inetSocketAddress)
                            throws Exception

      Description copied from class: `IpFilteringHandlerImpl`
      Called when the channel is connected. It returns True if the corresponding connection is to be allowed. Else it returns False.
      Specified by:
        `accept` in class `IpFilteringHandlerImpl`
        `inetSocketAddress` - the remote `InetSocketAddress` from client
      Returns:
        True if the corresponding connection is allowed, else False.
      Throws:
        `Exception`

Copyright © 2008-2012 The Netty Project. All Rights Reserved.