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::BLobject. 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 theDNS::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 subclassingDNS::BL::cmdsin 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 theDNS::BL::cmds::fooclass.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
$keywhich 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 theconnected 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.$entryshould 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 theconnected 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.$entryshould 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::Entriesfrom 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
 - 0.02
 - 
Added an index to db connection method. This improves performance. Minor changes to other components. Added regression testing for IO commands.
 
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 354:
 Non-ASCII character seen before =encoding in 'Muñoz,'. Assuming CP1252