ispman/lib/ISPMan/DNSMan TXTrecords.pm,NONE,1.1

Joerg Delker <[email protected]>
Newsgroups gmane.comp.isp.ispman.cvs
Message-ID <[email protected]>
Update of /cvsroot/ispman/ispman/lib/ISPMan/DNSMan
In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv30208/lib/ISPMan/DNSMan

Added Files:
	TXTrecords.pm 
Log Message:
added TXT record support

--- NEW FILE: TXTrecords.pm ---
package ISPMan::DNSMan::TXTrecords;

use strict;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);

require Exporter;

@ISA    = qw(Exporter AutoLoader);
@EXPORT = qw(
  isTXTrecord
  editDNStXTRecords
  addDNStXTRecord
  modifyDNStXTRecord
  deleteDNStXTRecord
  getDNStXTRecords
);
$VERSION = '0.01';

sub isTXTrecord {
    my $self   = shift;
    my $host   = shift;
    my $domain = shift;
    my $branch = join ",", ( "ou=txtRecord", $self->getDNSDN($domain) );
    my $filter = "relativeDomainName=$host";

    if ( $self->getConfig("debug") > 2 ) {
        print qq|
           ISPMan::DNSMan::TXTrecords->isTXTrecord

           Getting input:
           host: $host
           domain: $domain
           
           Calculating:
           branch: $branch
           filter:$filter
           |;
        print "EntryExists: ", $self->entryExists( $branch, $filter );
    }

    return $self->entryExists( $branch, $filter );
}

sub getDNStXTRecords {
    my $self               = shift;
    my $domain             = shift;
    my $relativeDomainName = shift;
    my $filter;
    if ($relativeDomainName) {
        $filter = "&(objectclass=dnsZone)".
        "(txtRecord=*)".
        "(relativeDomainName=$relativeDomainName)";
    }
    else {
        $filter = "&(objectclass=dnsZone)(txtRecord=*)";
    }
    my $dn = $self->getDNSDN($domain);

    my $h =
      $self->getEntriesAsHashRef( $dn, $filter,
        [ "txtRecord", "relativeDomainName" ] );

    my $records;
    $self->{'domain'}{'dns'} = ();
    undef $self->{'domain'}{'dns'};
    for my $hdn ( sort keys %$h ) {
        $records = $self->as_arrayref( $h->{$hdn}{'txtRecord'} );
        for (@$records) {

            push @{ $self->{'domain'}{'dns'} },
              {
                'host' => $h->{$hdn}{'relativeDomainName'},
		        'ttl'  => $h->{$hdn}{'DNSTTL'},
                'txt'   => $_
              };
        }
    }
    return $self->{'domain'}{'dns'};

}

sub editDNStXTRecords {
    my $self = shift;
    my $r    = shift;

    return
      unless $self->checkDomainType( $r->param("ispmanDomain"), "primary" );
    $self->{'domain'} = $self->getDomainInfo( $r->param("ispmanDomain") );

    $self->getDNStxtRecords( $r->param("ispmanDomain") );

    my $template = "";
    if ( $self->isDomainEditable( $r->param("ispmanDomain") ) ) {
        $template = $self->getTemplate("dns/edit_TXTrecords.tmpl");
    }
    else {
        $template = $self->getTemplate("dns/view_TXTrecords.tmpl");
    }
    print $template->fill_in( PACKAGE => "ISPMan" );
}

sub modifyDNStXTRecord {
    my $self = shift;
    my $r    = shift;
    my $dn   = $r->param("dn");

    # delete old record
    $self->deleteEntry( $r->param("dn") );

    # add record
    $self->addDNStXTRecord($r);
}

sub deleteDNStXTRecord {
    my $self = shift;
    my $r    = shift;
    my $dn   = $r->param("dn");
    
    my $entry = $self->getEntry( $dn );
    $self->deleteDNSRecord(
            $r->param("ispmanDomain"),
            "txtRecord",
            $entry->get_value("relativeDomainName"),
            $entry->get_value("txtRecord")
    );
    $self->editDNStXTRecords($r);
}

sub addDNStXTRecord {
    my $self      = shift;
    my $r         = shift;
    my $extraHash = {};

    $self->newDNSRecord( $r->param("ispmanDomain"),
            "txtRecord", $r->param("host"), $r->param("txt") );
    $self->editDNStXTRecords($r);
}

1;
__END__
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.