diff options
-rw-r--r-- | ANNOUCE.1.4.0 | 4 | ||||
-rw-r--r-- | FS/FS/domain_record.pm | 26 | ||||
-rwxr-xr-x[-rw-r--r--] | bin/bind.import (renamed from bin/svc_domain.import) | 4 | ||||
-rwxr-xr-x | httemplate/edit/process/domain_record.cgi | 3 | ||||
-rwxr-xr-x | httemplate/view/svc_domain.cgi | 101 |
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> |