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.