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-I PFilterDat 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 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.