NAME

DNS::BL - Manage DNS black lists

SYNOPSIS

use DNS::BL;

DESCRIPTION

This class provides the services required to manage DNSBL data using this module hierarchy. It does so by implementing a series of methods, that perform the required function and when called in array context, return a two-element list, whose first element is a return code and its second element, is a diagnostic message.

In scalar context, only the constant is returned.

The following constants are defined:

DNSBL_OK

Denotes a succesful operation.

DNSBL_ECONNECT

A problem related to the connection or lack of, to the backend.

DNSBL_ECOLLISSION

When inserting entries in the backend, a previous entry conflicts with this one.

DNSBL_ENOTFOUND

When looking up entries in the backend, no suitable entry has been found.

DNSBL_ESYNTAX

A syntax error was detected by a callback handler.

DNSBL_EOTHER

Some other kind of error.

The following methods are implemented by this module:

->new()

This method creates a new DNS::BL object. No parameters are required.

->parse($command)

This method tokenizes each line given in $command, loading and calling the appropiate modules to satisfy the request. As shipped, each command verb, usually the first word of a $command, will invoke a class from the DNS::BL::cmds::* hierarchy, which handles such commands. A summary of those is included in DNS::BL::cmds. Likely, you can provide your own commands by subclassing DNS::BL::cmds in your own classes.

Note that this method supports comments, by prepending a pound sign. Most Perl-ish way.

When a command is invoked for the first time, the class is use()d. For example, the "foo" command would involve loading the DNS::BL::cmds::foo class.

After this loading process, the class' execute() method is invoked. This is documented in DNS::BL::cmds.

->set($key, $value)

Set the value of a $key which is stored in the object itself, to the scalar $value.

->get($key)

Retrieve the scalar value associated to the given $key.

The following methods are really pointers meant to be replaced by the DNS::BL::cmds::connect::* classes invoked at runtime. The specific function of each function is discussed below (briefly) and in DNS::BL::cmds::connect.

The DNS::BL::cmds::connect::* classes must replace them by using the the accessors to store the reference to the function (or clusure), using the same name of the method, prepending an underscore.

->read($entry)

Given an $entry, retrieve all the DNS::BL::Entry objects contained in the IP address range denoted in its ->addr() method, stored in the connected backend. Its return value, is a list where the first element is the result code, the second is a message suitable for diagnostics. The rest of the elements, if any, are the matching entries found.

$entry should be a DNS::BL::Entry object.

->match($entry)

Given an $entry, retrieve all the DNS::BL::Entry objects that contain the IP address range denoted in its ->addr() method, stored in the connected backend. Its return value, is a list where the first element is the result code, the second is a message suitable for diagnostics. The rest of the elements, if any, are the matching entries found.

$entry should be a DNS::BL::Entry object.

->write($entry)

Store the given DNS::BL::Entry object in the connected backend.

->erase($entry)

Delete all the DNS::BL::Entries from the connected backend, whose ->addr() network range falls entirely within the one given in $entry.

->commit()

Commit all the changes to the backend. In some backends this is a no-op, but it should be invoked at the end of each command block.

EXPORT

None by default.

HISTORY

0.00_01

Original version; created by h2xs 1.22

0.01

First RC

SEE ALSO

Perl(1), DNS::BL::cmds, DNS::BL::Entry, DNS::BL::cmds::connect, DNS::BL::cmds::connect::*.

AUTHOR

Luis Muñoz, <luismunoz@cpan.org>

COPYRIGHT AND LICENSE

Copyright 2004 by Luis Muñoz

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 349:

Non-ASCII character seen before =encoding in 'Muñoz,'. Assuming CP1252