Config::IPFilter - Simple, rule-based IP filter
use Config::IPFilter; my $filter = Config::IPFilter->new; my $rule = $filter->add_rule('188.8.131.52', '184.108.40.206', 127, 'Example range'); # A list of example IPv4 addresses. IPv6 works too. my @ipv4 = qw[220.127.116.11 18.104.22.168 22.214.171.124 126.96.36.199 188.8.131.52 184.108.40.206]; # Check a list of ips say sprintf '%15s is %sbanned', $_, $filter->is_banned($_) ? '' : 'not ' for @ipv4; # Lower the acces level by one pushes it below our ban threshold $rule->decrease_access_level; # Check a list of ips say sprintf '%15s is %sbanned', $_, $filter->is_banned($_) ? 'now ' : 'still not ' for @ipv4;
You could also load rules directly from an
# Example of a "ipfilter.dat" file # # All entered IP ranges will be blocked in both directions. Be careful # what you enter here. Wrong entries may totally block access to the # network. # # Format: # IP-Range , Access Level , Description # # Access Levels: # 127 blocked # >=127 permitted 064.094.089.000 - 064.094.089.255 , 000 , Gator.com
This entry will block the IPs from 064.094.089.000 to 064.094.089.255, i.e. your code should not connect to any IP in this range.
At the moment only one, read-only access level is implemented; a value at or below
127 means that addresses in that range are banned.
Here's a list of 'em...
This builds a new, empty object. There are currently no expected arguments.
This method adds a new range to the in-memory ipfilter.
This method coerces the arguments into a new rule which is then added to the in-memory ipfilter.
Returns a tally of all loaded rules.
Returns a boolean value indicating whether or not there are any rules loaded in the ipfilter.
Deletes all rules from the ipfilter.
ipfilter.dat-like file and adds the rules found inside to the ipfilter.
Stores the in-memory ipfilter to disk.
$ip is banned, the first rule in which it was found below the threshold is returned.
If not, a false value is returned. Currently, rules with an access_level at or below
127 are considered banned.
CPAN ID: SANKO
Copyright (C) 2010, 2011 by Sanko Robinson <email@example.com>
This program is free software; you can redistribute it and/or modify it under the terms of The Artistic License 2.0. See the LICENSE file included with this distribution or notes on the Artistic License 2.0 for clarification.
When separated from the distribution, all original POD documentation is covered by the Creative Commons Attribution-Share Alike 3.0 License. See the clarification of the CCA-SA3.0.