package ISPMan::DNSMan::SOArecords; use strict; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $Config); require Exporter; @ISA = qw(Exporter AutoLoader); @EXPORT = qw( editsoarecords addsoarecord modifysoarecords getSOA ); $VERSION = '0.01'; use ISPMan::Config; $Config=ISPMan::Config->new(); sub editsoarecords { my $self=shift; my $r=shift; my $dn=$r->param("dn"); my $records=$self->getSOA($dn); print $r->param('domain'), "::SOA Records

"; print qq|
|; print "\n"; for (qw( primary rootmail expire retry refresh minimum)) { print qq| |; } print qq| |; print "
$_
Discard Changes Apply Changes
"; } sub addsoarecord { my $self=shift; my $r=shift; my $dn=$r->param("dn"); my $record=join ',', ($r->param("origion"), $r->param("pref"), $r->param("host")); $r->param("record", $record); $self->{'ldap'}->addEntry($r); $self->editsoarecords($r); } sub modifysoarecords { my $self=shift; my $r=shift; my $dn=$r->param("dn"); my $data; for (qw(primary rootmail expire retry refresh minimum serial)) { $data->{$_}=$r->param($_); } $self->{'ldap'}->updateEntryWithData($dn, $data); $self->editsoarecords($r); } sub getSOA { my $self=shift; my $dn=shift; $dn=($dn=~/^cn/)?$dn:"cn=soarecords, ou=dnsdata, $dn"; my $soa=$self->{'ldap'}->getEntryAsHashRef($dn); my $num="00"; if ($soa->{'serial'}) { ($num)=$soa->{'serial'} =~/(\d\d$)/; } $soa->{'serial'}=join "", ($self->{'year'}, $self->{'mon'}, $self->{'mday'}, $num); $soa->{'serial'}++; return $soa; } 1; __END__