From 4920ad2671d712afe23d731e25bc5b53955397b7 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 23 May 2002 13:00:08 +0000 Subject: [PATCH] bind: allow adding slave domains too --- ANNOUCE.1.4.0 | 4 +- FS/FS/domain_record.pm | 26 +++++++- bin/{svc_domain.import => bind.import} | 4 +- httemplate/edit/process/domain_record.cgi | 3 + httemplate/view/svc_domain.cgi | 101 +++++++++++++++++++----------- 5 files changed, 95 insertions(+), 43 deletions(-) rename bin/{svc_domain.import => bind.import} (98%) mode change 100644 => 100755 diff --git a/ANNOUCE.1.4.0 b/ANNOUCE.1.4.0 index a3d786508..a916076e9 100644 --- a/ANNOUCE.1.4.0 +++ b/ANNOUCE.1.4.0 @@ -105,8 +105,6 @@ be able to get everything else working... Critical Path provisioning has been updated and can now username changes and suspension/unsuspension. --- - - New export code! - Name and company searches: - now case-insensative @@ -128,3 +126,5 @@ schema diagram -- +complete bind import and export and edit of dns zone files + diff --git a/FS/FS/domain_record.pm b/FS/FS/domain_record.pm index 44e70ade1..4ed713c77 100644 --- a/FS/FS/domain_record.pm +++ b/FS/FS/domain_record.pm @@ -1,7 +1,7 @@ package FS::domain_record; use strict; -use vars qw( @ISA ); +use vars qw( @ISA $noserial_hack ); #use FS::Record qw( qsearch qsearchs ); use FS::Record qw( qsearchs dbh ); use FS::svc_domain; @@ -85,6 +85,16 @@ sub insert { local $FS::UID::AutoCommit = 0; my $dbh = dbh; + if ( $self->rectype eq '_mstr' ) { #delete all other records + foreach my $domain_record ( reverse $self->svc_domain->domain_record ) { + my $error = $domain_record->delete; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return $error; + } + } + } + my $error = $self->SUPER::insert; if ( $error ) { $dbh->rollback if $oldAutoCommit; @@ -265,6 +275,7 @@ sub check { =cut sub increment_serial { + return '' if $noserial_hack; my $self = shift; my $soa = qsearchs('domain_record', { @@ -283,11 +294,22 @@ sub increment_serial { $new->replace($soa); } +=item svc_domain + +Returns the domain (see L $self->svcnum } ); +} + =back =head1 VERSION -$Id: domain_record.pm,v 1.8 2002-05-22 18:44:01 ivan Exp $ +$Id: domain_record.pm,v 1.9 2002-05-23 13:00:08 ivan Exp $ =head1 BUGS diff --git a/bin/svc_domain.import b/bin/bind.import old mode 100644 new mode 100755 similarity index 98% rename from bin/svc_domain.import rename to bin/bind.import index 8090b1e9b..5c4149501 --- a/bin/svc_domain.import +++ b/bin/bind.import @@ -1,6 +1,6 @@ #!/usr/bin/perl -w # -# $Id: svc_domain.import,v 1.6 2002-05-20 11:02:47 ivan Exp $ +# $Id: bind.import,v 1.1 2002-05-23 13:00:08 ivan Exp $ #need to manually put header in /usr/local/etc/freeside/export./named.conf.HEADER @@ -23,6 +23,8 @@ use FS::domain_record; my $user = shift or die &usage; adminsuidsetup $user; +$FS::domain_record::noserial_hack = 1; + use vars qw($spooldir); $spooldir = "/usr/local/etc/freeside/export.". datasrc. "/bind"; mkdir $spooldir unless -d $spooldir; diff --git a/httemplate/edit/process/domain_record.cgi b/httemplate/edit/process/domain_record.cgi index 8fb0368f6..b8c3f62a1 100755 --- a/httemplate/edit/process/domain_record.cgi +++ b/httemplate/edit/process/domain_record.cgi @@ -22,6 +22,9 @@ if ( $error ) { # $cgi->param('error', $error); # print $cgi->redirect(popurl(2). "agent.cgi?". $cgi->query_string ); #no edit screen to send them back to +%> + +<% eidiot($error); } else { my $svcnum = $new->svcnum; diff --git a/httemplate/view/svc_domain.cgi b/httemplate/view/svc_domain.cgi index 28214f04e..b70ac8f90 100755 --- a/httemplate/view/svc_domain.cgi +++ b/httemplate/view/svc_domain.cgi @@ -30,7 +30,9 @@ if ($svc_domain->catchall) { my $domain = $svc_domain->domain; -print header('Domain View', menubar( +%> + +<%= header('Domain View', menubar( ( ( $pkgnum || $custnum ) ? ( "View this package (#$pkgnum)" => "${p}view/cust_pkg.cgi?$pkgnum", "View this customer (#$custnum)" => "${p}view/cust_main.cgi?$custnum", @@ -39,43 +41,66 @@ print header('Domain View', menubar( "${p}misc/cancel-unaudited.cgi?$svcnum" ) ), "Main menu" => $p, -)), - "Service #$svcnum", - "
Service: ", $part_svc->svc, "", - "
Domain name: $domain.", - qq!
Catch all email (change):!, - $email ? "$email." : "(none)", - qq!

View whois information.!, - '

', - '', - ntable("",2), - 'ZoneTypeData', -; +)) %> +Service #<%= $svcnum %> +
Service: <%= $part_svc->svc %> +
Domain name: <%= $domain %> +
Catch all email (change): +<%= $email ? "$email" : "(none)" %> +

View whois information. +

+ -foreach my $domain_record ( $svc_domain->domain_record ) { - print ''. $domain_record->reczone. ''. - ''. $domain_record->recaf. ' '. $domain_record->rectype. ''. - ''. $domain_record->recdata; - print qq! (delete)! - unless $domain_record->rectype eq 'SOA'; - print ''; -} -print '
'. - qq!
!. - qq!!. - ' '. - 'IN '. - ''. - ' '. - '

'. joblisting({'svcnum'=>$svcnum}, 1). - ''; +<% my @records; if ( @records = $svc_domain->domain_record ) { %> + <%= ntable("",2) %> + ZoneTypeData -%> + <% foreach my $domain_record ( @records ) { + my $type = $domain_record->rectype eq '_mstr' + ? "(slave)" + : $domain_record->recaf. ' '. $domain_record->rectype; + %> + + <%= $domain_record->reczone %> + <%= $type %> + <%= $domain_record->recdata %> + + <% unless ( $domain_record->rectype eq 'SOA' ) { %> + (delete) + <% } %> + + <% } %> + +<% } %> + +
+ + + + IN + + +


or

+
+ + +<% if ( @records ) { %> Delete all records and <% } %> +Slave from nameserver IP + + + + + +
+

<%= joblisting({'svcnum'=>$svcnum}, 1) %> + -- 2.11.0