NAME
Net::IPAddress::Filter::IPFilterDat - A fast IP address filter from ipfilter.dat
VERSION
version 20121119.02
SYNOPSIS
use Net::IPAddress::Filter::IPFilterDat;
my $filter = Net::IPAddress::Filter::IPFilterDat->new();
$filter->load_file('/tmp/ipfilter.dat');
# Or
$filter->load_file($FILEHANDLE);
# Or
$filter->add_rule("000.000.000.000 - 000.255.255.255 , 000 , invalid ip");
print "BLOCKED\n" if $filter->in_filter('192.168.1.20');
DESCRIPTION
An ipfilter.dat file holds a list of IP address ranges, and is often used by p2p clients such as eMule or various bittorrent clients to block connections to or from the listed addresses.
Net::IPAddress::Filter::IPFilterDat can read in these files and provides a fast (greater than 100k lookups per second) way of seeing if an IP address should be filtered/blocked.
There is a dependency on the XS module Set::IntervalTree so a c++ compiler is required. The XS data structure is the reason for the small RAM usage and high performance of the IP address filter.
METHODS
load_file( )
Fetches rows from an ipfilter.dat-formatted file and adds the ranges to the filter. Can be called with a filename, or with an opened filehandle. The filehandle is closed after reading.
Expects:
$file - Either a filename, or a filehandle.
Returns:
Number of rules added from the file.
add_rule( )
Given a line from an ipfilter.dat file, add the rule to the filter.
Expects:
$rule - A string containing an ipfilter.dat rule.
Returns:
1 if rule was parsable and added to the filter.
0 otherwise.
FUNCTIONS
_parse_rule( )
Given a line from an ipfilter.dat file, try to parse out the fields.
Expects:
$rule - A string containing an ipfilter.dat rule.
Returns:
A hashref of the fields if parsable.
Otherwise undef.
TODO
Support for reading zipped or gzipped ipfilter.dat files.
Support for the score field in ipfilter.dat.
SEE ALSO
Net::IPAddress::Filter - The parent class of this module. All methods of
the parent can also be used.
NET::IPFilter - Pure Perl extension for Accessing eMule / Bittorrent
IPFilter.dat Files and checking a given IP against this ipfilter.dat IP Range.
BUGS OR FEATURE REQUESTS
See https://rt.cpan.org/Public/Dist/Display.html?Name=Net-IPAddress-Filter-IPFilterDat to report and view bugs, or to request features.
Alternatively, email bug-Net-IPAddress-Filter-IPFilterDat@rt.cpan.org
REPOSITORY
Net::IPAddress::Filter::IPFilterDat is hosted on github at https://github.com/d5ve/p5-Net-IPAddress-Filter-IPFilterDat.git
AUTHOR
Dave Webb <Net-IPAddress-Filter-IPFilterDat@d5ve.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2012 by Dave Webb.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.