NAME

Lim::Plugin::DNS::Server - Server class for DNS Manager Lim plugin

VERSION

See Lim::Plugin::DNS for version.

SYNOPSIS

use Lim::Plugin::DNS;

# Create a Server object
$server = Lim::Plugin::DNS->Server;

CONFIGURATION

TODO

INTERNAL METHODS

These are only internal methods and should not be used externally.

$server->_ScanZoneFile

Scan for zone files based on configuration and returns a hash reference.

$hash_ref->{<software>}->{<full path file name>} = {
    name => <full path file name>,
    software => <the software related to the zone file>,
    short => <file name>,
    write => <true if writable>,
    read => <true if readable>
};
$server->_ParseZoneFile($file, $option, $rr)

Parse a zone file and returns the content into $option and/or $rr. $option and $rr can be a hash or array reference.

# $option as an array reference
$option = [
    {
        name => <option name>,
        value => <option value>
    },
    ...
];

# $option as a hash reference
$option->{<option name>} = <option value>;

# $rr as an array reference
$rr = [
    {
        name => <rr name>,
        ttl => <rr ttl>,
        class => <rr class>,
        type => <rr type>,
        rdata => <rr rdata>
    },
    ...
];

# $rr as a hash reference
$rr->{<rr name>} = [
    {
        ttl => <rr ttl>,
        class => <rr class>,
        type => <rr type>,
        rdata => <rr rdata>
    },
    ...
];
$server->_ParseZoneContent($content, $option, $rr)

Parse a zone content from a string and returns the content into $option and/or $rr. $option and $rr can be a hash or array reference.

# $option as an array reference
$option = [
    {
        name => <option name>,
        value => <option value>
    },
    ...
];

# $option as a hash reference
$option->{<option name>} = <option value>;

# $rr as an array reference
$rr = [
    {
        name => <rr name>,
        ttl => <rr ttl>,
        class => <rr class>,
        type => <rr type>,
        rdata => <rr rdata>
    },
    ...
];

# $rr as a hash reference
$rr->{<rr name>} = [
    {
        ttl => <rr ttl>,
        class => <rr class>,
        type => <rr type>,
        rdata => <rr rdata>
    },
    ...
];
$server->_WriteZoneFile($file, $rr, $option)

Write the content of $rr and $option out to a zone file. A temporary file is used and then renamed to the specified $file once the writing is complete.

The $rr and $option needs to be in the format specified by _ParseZoneFile and _ParseZoneContent.

METHODS

These methods are called from the Lim framework and should not be used else where.

Please see Lim::Plugin::DNS for full documentation of calls.

$server->ReadZones(...)

Get a list of all zones that can be managed by the plugin.

$server->CreateZone(...)

Create a new zone file.

$server->ReadZone(...)

Returns a zone file as a content or split into option and rr.

$server->UpdateZone(...)

Update a zone file, this overwrites all zone data.

$server->DeleteZone(...)

Delete a zone file.

$server->CreateZoneOption(...)

Create a new zone option.

$server->ReadZoneOption(...)

Return zone options specified or all zone options for a zone file.

$server->UpdateZoneOption(...)

Update a zone option, this does not overwrite other zone options.

$server->DeleteZoneOption(...)

Delete a zone options.

$server->CreateZoneRr(...)

Create a new zone resource record.

$server->ReadZoneRr(...)

Return zone resource records specified or all zone resource records for a zone file.

$server->UpdateZoneRr(...)

Update a zone resource record, this does not remove other zone resource records.

$server->DeleteZoneRr(...)

Delete a zone resource records.

AUTHOR

Jerry Lundström, <lundstrom.jerry at gmail.com>

BUGS

Please report any bugs or feature requests to https://github.com/jelu/lim-plugin-dns/issues.

SUPPORT

You can find documentation for this module with the perldoc command.

perldoc Lim::Plugin::DNS

You can also look for information at:

ACKNOWLEDGEMENTS

LICENSE AND COPYRIGHT

Copyright 2012-2013 Jerry Lundström.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.