summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ANNOUCE.1.4.04
-rw-r--r--FS/FS/domain_record.pm26
-rwxr-xr-x[-rw-r--r--]bin/bind.import (renamed from bin/svc_domain.import)4
-rwxr-xr-xhttemplate/edit/process/domain_record.cgi3
-rwxr-xr-xhttemplate/view/svc_domain.cgi101
5 files changed, 95 insertions, 43 deletions
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<FS::svc_domain) for this record.
+
+=cut
+
+sub svc_domain {
+ my $self = shift;
+ qsearchs('svc_domain', { svcnum => $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
index 8090b1e9b..5c4149501 100644..100755
--- 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.<datasrc./bind/<machine>/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
+%>
+<!-- mason kludge -->
+<%
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",
- "<BR>Service: <B>", $part_svc->svc, "</B>",
- "<BR>Domain name: <B>$domain</B>.",
- qq!<BR>Catch all email <A HREF="${p}misc/catchall.cgi?$svcnum">(change)</A>:!,
- $email ? "<B>$email</B>." : "<I>(none)<I>",
- qq!<BR><BR><A HREF="http://www.geektools.com/cgi-bin/proxy.cgi?query=$domain;targetnic=auto">View whois information.</A>!,
- '<BR><BR>',
- '<SCRIPT>function areyousure(href) {
- if ( confirm("Remove this record?") == true )
- window.location.href = href;
- }
- </SCRIPT>',
- ntable("",2),
- '<tr><th>Zone</th><th>Type</th><th>Data</th></tr>',
-;
+)) %>
+Service #<%= $svcnum %>
+<BR>Service: <B><%= $part_svc->svc %></B>
+<BR>Domain name: <B><%= $domain %></B>
+<BR>Catch all email <A HREF="${p}misc/catchall.cgi?<%= $svcnum %>">(change)</A>:
+<%= $email ? "<B>$email</B>" : "<I>(none)<I>" %>
+<BR><BR><A HREF="http://www.geektools.com/cgi-bin/proxy.cgi?query=<%=$domain%>;targetnic=auto">View whois information.</A>
+<BR><BR>
+<SCRIPT>
+ function areyousure(href) {
+ if ( confirm("Remove this record?") == true )
+ window.location.href = href;
+ }
+</SCRIPT>
-foreach my $domain_record ( $svc_domain->domain_record ) {
- print '<tr><td>'. $domain_record->reczone. '</td>'.
- '<td>'. $domain_record->recaf. ' '. $domain_record->rectype. '</td>'.
- '<td>'. $domain_record->recdata;
- print qq! (<A HREF="javascript:areyousure('${p}misc/delete-domain_record.cgi?!
- .$domain_record->recnum. qq!')">delete</A>)!
- unless $domain_record->rectype eq 'SOA';
- print '</td></tr>';
-}
-print '</table><BR>'.
- qq!<FORM METHOD="POST" ACTION="${p}edit/process/domain_record.cgi">!.
- qq!<INPUT TYPE="hidden" NAME="svcnum" VALUE="$svcnum">!.
- '<INPUT TYPE="text" NAME="reczone"> '.
- '<INPUT TYPE="hidden" NAME="recaf" VALUE="IN">IN '.
- '<SELECT NAME="rectype">'.
- join('', map qq!<OPTION VALUE="$_">$_</OPTION>!, qw(A NS CNAME MX) ).
- '</SELECT>'.
- ' <INPUT TYPE="text" NAME="recdata"> <INPUT TYPE="submit" VALUE="Add">'.
- '<BR><BR>'. joblisting({'svcnum'=>$svcnum}, 1).
- '</BODY></HTML>';
+<% my @records; if ( @records = $svc_domain->domain_record ) { %>
+ <%= ntable("",2) %>
+ <tr><th>Zone</th><th>Type</th><th>Data</th></tr>
-%>
+ <% foreach my $domain_record ( @records ) {
+ my $type = $domain_record->rectype eq '_mstr'
+ ? "(slave)"
+ : $domain_record->recaf. ' '. $domain_record->rectype;
+ %>
+
+ <tr><td><%= $domain_record->reczone %></td>
+ <td><%= $type %></td>
+ <td><%= $domain_record->recdata %>
+
+ <% unless ( $domain_record->rectype eq 'SOA' ) { %>
+ (<A HREF="javascript:areyousure('<%=$p%>misc/delete-domain_record.cgi?<%=$domain_record->recnum%>')">delete</A>)
+ <% } %>
+ </td></tr>
+ <% } %>
+ </table>
+<% } %>
+
+<BR>
+<FORM METHOD="POST" ACTION="<%=$p%>edit/process/domain_record.cgi">
+<INPUT TYPE="hidden" NAME="svcnum" VALUE="<%=$svcnum%>">
+<INPUT TYPE="text" NAME="reczone">
+<INPUT TYPE="hidden" NAME="recaf" VALUE="IN"> IN
+ <SELECT NAME="rectype">
+<% foreach (qw( A NS CNAME MX) ) { %>
+ <OPTION VALUE="<%=$_%>"><%=$_%></OPTION>
+<% } %>
+ </SELECT>
+<INPUT TYPE="text" NAME="recdata"> <INPUT TYPE="submit" VALUE="Add record">
+</FORM><BR><BR>or<BR><BR>
+<FORM METHOD="POST" ACTION="<%=$p%>edit/process/domain_record.cgi">
+<INPUT TYPE="hidden" NAME="svcnum" VALUE="<%=$svcnum%>">
+
+<% if ( @records ) { %> Delete all records and <% } %>
+Slave from nameserver IP
+<INPUT TYPE="hidden" NAME="svcnum" VALUE="<%=$svcnum%>">
+<INPUT TYPE="hidden" NAME="reczone" VALUE="@">
+<INPUT TYPE="hidden" NAME="recaf" VALUE="IN">
+<INPUT TYPE="hidden" NAME="rectype" VALUE="_mstr">
+<INPUT TYPE="text" NAME="recdata"> <INPUT TYPE="submit" VALUE="Slave domain">
+</FORM>
+<BR><BR><%= joblisting({'svcnum'=>$svcnum}, 1) %>
+</BODY></HTML>