The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Net::BitTorrent::Network::IPFilter - Simple, rule-based IP filter

Description

    # 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. Net::BitTorrent will not connect to any IP in this range.

Warning:

The example above will block any connection to the specified IP-range. This may reduce the number of sources for downloads.

At the moment only one access levels are implemented. A value below 127 means that any connection-attempt is denied.

Notes

Remember...

  • Filtering will prevent up and downloading to the banned clients

  • Filtering is done at the protocol level so no connection to banned clients is ever established

my $filter = Net::BitTorrent::Network::IPFilter->new( )

This constructs a new, empty object. There are currently no accepted arguments.

$filter->add_rule( $rule )

This method adds a new range to the in-memory ipfilter.

$filter->add_rule( $lower, $upper, $access_level, $description )

This method coerces the arguments into a new range which is the added to the in-memory ipfilter.

$filter->count_rules( )

Returns how many rules are loaded.

$filter->is_empty( )

Returns a boolean value indicating whether or not there are any rules loaded in the ipfilter.

$filter->clear_rules( )

Deletes all rules from the ipfilter.

$filter->load( $path )

Slurps an ipfilter.dat-like file and adds the rules found inside to the ipfilter.

$filter->save( $path )

Stores the in-memory ipfilter to disk.

$filter->is_banned( $ip )

Indicates whether or not $ip is banned. If so, the rule in which it was found is returned. If not, a false value is returned.

IPv6 Support

The standard ipfilter.dat only supports IPv4 addresses but Net::BitTorrent's current implementation supports IPv6 as well. Keep this in mind when storing an ipfilter.dat file to disk.

See Also

Emule Project's ipfilter.dat documentation

Author

Sanko Robinson <sanko@cpan.org> - http://sankorobinson.com/

CPAN ID: SANKO

License and Legal

Copyright (C) 2008-2010 by Sanko Robinson <sanko@cpan.org>

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.

Neither this module nor the Author is affiliated with BitTorrent, Inc.