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 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::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 theDNS::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 theconnect
ed 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 theconnect
ed 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
- 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