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