/*
* File : IPFilter.java
* Created : 02-Mar-2004
* By : parg
*
* Azureus - a Java Bittorrent client
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details ( see the LICENSE file ).
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.gudy.azureus2.plugins.ipfilter;
/**
* @author parg
*
*/
import java.io.File;
public interface
IPFilter
{
/**
* Gets the file name used for persistent ranges
* @return
*/
public File
getFile();
/**
* creates a new range but *doesn't* add it to the list. Use the add method
* to add it
* @param this_session_only // not persisted if "this_session_only" is true
* @return
*/
public IPRange
createRange(
boolean this_session_only );
/**
* Adds a range. Only ranges created with "create" above can be added
* @param range
*/
public void
addRange(
IPRange range );
/**
* Creates, validates and adds a range
* @param description
* @param start_ip
* @param end_ip
* @param this_session_only not persisted if true
* @return new range or null if invalid
*/
public IPRange
createAndAddRange(
String description,
String start_ip,
String end_ip,
boolean this_session_only );
/**
* Remove a range
* @param range
*/
public void
removeRange(
IPRange range );
/**
* Reloads the ip filter from the config file (obtainable using "getFile")
* @throws IPFilterException
*/
public void
reload()
throws IPFilterException;
/**
* Gets the current set of defined IP ranges
* @return
*/
public IPRange[]
getRanges();
/**
* returns length of ranges list
* @return
*/
public int
getNumberOfRanges();
/**
* Checks an address to see if its in an allowed range
* @param IPAddress
* @return
*/
public boolean
isInRange(
String IPAddress );
/**
* Gets the current list of blocked addresses
* @return
*/
public IPBlocked[]
getBlockedIPs();
/**
* returns length of blocked ip list
* @return
*/
public int
getNumberOfBlockedIPs();
/**
* Explicitly blocks an address
* @param IPAddress
*/
public void
block(
String IPAddress);
/**
* Gets the current list of b addresses
* @since 2.5.0.2
* @return
*/
public IPBanned[]
getBannedIPs();
/**
* returns length of banned ip list
* @since 2.5.0.2
* @return
*/
public int
getNumberOfBannedIPs();
/**
* Explicitly bans an address
* @param IPAddress
* @since 2.5.0.2
*/
public void
ban(
String IPAddress,
String text);
/**
* Removes a ban on an address
* @param IPAddress
* @since 2.5.0.2
*/
public void
unban(
String IPAddress);
/**
* The filter either allows defined ranges to be allowed or denied access
* @return
*/
public boolean
getInRangeAddressesAreAllowed();
/**
* Set the behaviour of the filter to either allow or deny access for defined ranges
* @param b
*/
public void
setInRangeAddressesAreAllowed(
boolean b );
/**
* Test if ipfilter is enabled or not
* @return
*/
public boolean
isEnabled();
/**
* change the enabled status
* @param enabled
*/
public void
setEnabled(
boolean enabled );
/**
* saves current setting to file given by getFile
* @throws IPFilterException
*/
public void
save()
throws IPFilterException;
/**
* Marks the IPFilter set as being uptodate
*
*/
public void
markAsUpToDate();
/**
* Gets the last time the filter set was updated or marked as up to date
* @return
*/
public long
getLastUpdateTime();
}