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.