Title: 5.1 - Blacklist Filter NavPrev: ch5-filters.html NavPrevText: Chapter 5 - Filters NavUp: ch5-filters.html NavUpText: Chapter 5 - Filters NavNext: ch5.2-buffered-write-filter.html NavNextText: 5.2 - Buffered Write Filter Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. # 5.1 - Blacklist Filter This filter blocks connnections from blacklisted remote addresses. Onee can block _Addresses_ or _Subnets_. In any case, when an event happens on a blocked session, the session will simply be closed. Here are the events this filter handles : * _event_ (MINA 2.1) * _messageReceived_ * _messageSent_ * _sessionCreated_ * _sessionIdle_ * _sessionOpened_ There is no need to handle any other event. ## Blocking an address Any address or subnet can be blocked live, ie it does not matter if a session is already active or not, this dynamicaly activated. It's enough to add the filter in the chain, and to set (or unset) the addresses to block: :::Java ... BlacklistFilter blackList = new BlacklistFilter(); blackList.block(InetAddress.getByName("1.2.3.4")); acceptor.getFilterChain().addLast("blacklist", new BlacklistFilter()); ... Here, the "1.2.3.4" address will be blocked. ## Unblocking an address It's possible to unblock an address, it's just a matter of fetching the filter and remove a previously blocked addres: :::Java ... BlacklistFilter blackList = (BlacklistFilter)session.getFilterChain().get(BlacklistFilter.class); blackList.unblock(InetAddress.getByName("1.2.3.4")); ... Here, the "1.2.3.4" address will be unblocked. ## Performances Currently, the implementation is not really optimal... We use a _List_ to store the blocked addresses/subnet, so the more of them you have in the list the longer it will take to process any event.