NAME

Net::DNS::AutoDNS - Generates XML and communicates with AutoDNS

VERSION

version 0.1

SYNOPSIS

use Net::DNS::AutoDNS;

my $autodns = Net::DNS::AutoDNS->new(
    gateway  => 'http://autodns.example.org/gateway/',
    user     => '...',
    password => '...',
    context  => '...',
);

my $xml_snippet = $rr->autodns_xml;

DESCRIPTION

This module adds methods to several Net::DNS::RR classes (by boldly invading their namespaces) and provides a simple interface to the AutoDNS gateway. This module doesn't quite really support UTF-8, and apparently neither does AutoDNS, but its documentation states that encoding="utf-8" is required.

METHODS

new (gateway => $gateway, user => $user, password => $password, context => $context)

Creates a new AutoDNS object and returns it. $context is part of the authentication information, not related to Perl's use of the word "context".

request ($code, element => contents, ...)

Sends a request to AutoDNS. In scalar context, returns the response XML text. In list context, returns the XML text and an XML document object.

Request codes are documented in the AutoDNS Interface Documentation. The codes must be passed as strings, including leading 0's.

The contents are a key/value list, where the value is a string or an ARRAY reference with another key/value list. These can be nested.

For example, this list:

'1234', root => [
    a => "Example",
    b => "Voorbeeld",
    c => [
        d => "More",
    ],
];

will result in the following XML to be submitted:

<?xml...?>
<request>
    <auth>...</auth>
    <task>
        <code>1234</code>
        <a>Example</a>
        <b>Voorbeeld</b>
        <c>
            <d>More</d>
        </c>
    </task>
</request>

In the key/value list, references to strings of literal XML may be passed at any position. They are mixed into the request string without verification.

On failure, an exception is thrown.

get_zone_list

Issues request 0205. Retuns a list of zone names.

get_zone_xml ($name)

Issues request 0205 to request a single zone. Returns the response XML document as a string and/or a document object, like the request method.

get_zone ($name)

Issues request 0205 to request a single zone. Returns a Net::DNS::AutoDNS::Zone object.

create_zone ($zone)

Issues request 0201 to create a zone. Requires a Net::DNS::AutoDNS::Zone object. Returns what the request method returns.

update_zone ($zone)

Issues request 0202 to update a zone. Requires a Net::DNS::AutoDNS::Zone object. Returns what the request method returns.

delete_zone ($name)

Issues request 0203 to delete a zone. Requires a Net::DNS::AutoDNS::Zone object or the name of a zone. Returns what the request method returns.

Other classes

Net::DNS::AutoDNS::Zone

Class for objects representing zones in AutoDNS. See Net::DNS::AutoDNS::Zone.

Monkeypatched methods

Net::DNS::RR::<type>::autodns_xml

Returns a piece of XML representing the RR in AutoDNS format. To check if a certain RR type is supported by this module, you can use:

if ($rr->can('autodns_xml')) { print $rr->autodns_xml; }

As of december 2009, the following record types are supported by AutoDNS and this module: A, MX, CNAME, NS, PTR, HINFO, TXT, AAAA, SRV, NAPTR.

Note that AutoDNS mutilates records by removing " characters, making it impossible to use whitespace in values.

Absolute hostnames have their origin replaced by XXORIGINXX. in the value.

CAVEATS

SSL CERTIFICATES ARE ACCEPTED WITHOUT VERIFICATION. Vulnerable to MITM attacks and DNS/resolver (cache) poisoning/hijacking. (The underlying SSL module may implement checks. See LWP for a list of supported modules, and their respective manuals.)

XML entities emitted are numeric (decimal).

Validity and wellformedness are not verified.

Behaviour for non-ASCII data is undefined.

SEE ALSO

Net::DNS::AutoDNS::Zone, Net::DNS

http://www.cpanel.com/, http://www.autodns.com/

AutoDNS Interface Documentation

AUTHOR

Juerd Waalboer <juerd@tnx.nl>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2013 by Juerd Waalboer.

This is free software, licensed under:

The (three-clause) BSD License