summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/Conf.pm7
-rw-r--r--FS/FS/domain_record.pm12
-rw-r--r--FS/FS/svc_domain.pm32
-rwxr-xr-xhttemplate/edit/process/domain_record.cgi2
-rw-r--r--httemplate/edit/process/svc_domain-defaultrecords.cgi14
-rw-r--r--httemplate/elements/freeside.css37
-rw-r--r--httemplate/view/svc_domain/dns.html23
7 files changed, 118 insertions, 9 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index c436413d6..fe010f77b 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -1308,7 +1308,12 @@ and customer address. Include units.',
'editlist_parts' => [ { type=>'text' },
{ type=>'immutable', value=>'IN' },
{ type=>'select',
- select_enum=>{ map { $_=>$_ } qw(A CNAME MX NS TXT)} },
+ select_enum => {
+ map { $_=>$_ }
+ #@{ FS::domain_record->rectypes }
+ qw(A AAAA CNAME MX NS PTR SPF SRV TXT)
+ },
+ },
{ type=> 'text' }, ],
},
diff --git a/FS/FS/domain_record.pm b/FS/FS/domain_record.pm
index 6513abf25..e7e9f70b7 100644
--- a/FS/FS/domain_record.pm
+++ b/FS/FS/domain_record.pm
@@ -419,6 +419,18 @@ sub reverse_record {
or new FS::domain_record { %hash, 'recdata' => $self->zone.'.' };
}
+=item rectypes
+
+=cut
+#http://en.wikipedia.org/wiki/List_of_DNS_record_types
+#DHCID? other things?
+sub rectypes {
+ [ qw(A AAAA CNAME MX NS PTR SPF SRV TXT), #most common types
+ #qw(DNAME), #uncommon types
+ qw(DLV DNSKEY DS NSEC NSEC3 NSEC3PARAM RRSIG), #DNSSEC types
+ ];
+}
+
=back
=head1 BUGS
diff --git a/FS/FS/svc_domain.pm b/FS/FS/svc_domain.pm
index 3dc352b7a..7d527e5be 100644
--- a/FS/FS/svc_domain.pm
+++ b/FS/FS/svc_domain.pm
@@ -341,12 +341,36 @@ sub insert {
local $FS::UID::AutoCommit = 0;
my $dbh = dbh;
- $error = $self->SUPER::insert(@_);
+ $error = $self->SUPER::insert(@_)
+ || $self->insert_defaultrecords;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
return $error;
}
+ $dbh->commit or die $dbh->errstr if $oldAutoCommit;
+
+ ''; #no error
+}
+
+=item insert_defaultrecords
+
+=cut
+
+sub insert_defaultrecords {
+ my $self = shift;
+
+ local $SIG{HUP} = 'IGNORE';
+ local $SIG{INT} = 'IGNORE';
+ local $SIG{QUIT} = 'IGNORE';
+ local $SIG{TERM} = 'IGNORE';
+ local $SIG{TSTP} = 'IGNORE';
+ local $SIG{PIPE} = 'IGNORE';
+
+ my $oldAutoCommit = $FS::UID::AutoCommit;
+ local $FS::UID::AutoCommit = 0;
+ my $dbh = dbh;
+
if ( $soamachine ) {
my $soa = new FS::domain_record {
'svcnum' => $self->svcnum,
@@ -356,10 +380,10 @@ sub insert {
'recdata' => "$soamachine $soaemail ( ". time2str("%Y%m%d", time). "00 ".
"$soarefresh $soaretry $soaexpire $soadefaultttl )"
};
- $error = $soa->insert;
+ my $error = $soa->insert;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
- return "couldn't insert SOA record for new domain: $error";
+ return "couldn't insert SOA record: $error";
}
foreach my $record ( @defaultrecords ) {
@@ -374,7 +398,7 @@ sub insert {
my $error = $domain_record->insert;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
- return "couldn't insert record for new domain: $error";
+ return "couldn't insert record: $error";
}
}
diff --git a/httemplate/edit/process/domain_record.cgi b/httemplate/edit/process/domain_record.cgi
index 2e427e4fb..ff0f2d414 100755
--- a/httemplate/edit/process/domain_record.cgi
+++ b/httemplate/edit/process/domain_record.cgi
@@ -11,7 +11,7 @@ die "access denied"
my $recnum = $cgi->param('recnum');
-my $old = qsearchs('agent',{'recnum'=>$recnum}) if $recnum;
+my $old = qsearchs('domain_record',{'recnum'=>$recnum}) if $recnum;
my $new = new FS::domain_record ( {
map {
diff --git a/httemplate/edit/process/svc_domain-defaultrecords.cgi b/httemplate/edit/process/svc_domain-defaultrecords.cgi
new file mode 100644
index 000000000..feb58406c
--- /dev/null
+++ b/httemplate/edit/process/svc_domain-defaultrecords.cgi
@@ -0,0 +1,14 @@
+<% $cgi->redirect(popurl(3). "view/svc_domain.cgi?$svcnum") %>
+<%init>
+
+die "access denied"
+ unless $FS::CurrentUser::CurrentUser->access_right('Edit domain nameservice');
+
+my $svcnum = scalar($cgi->param('svcnum'));
+
+my $svc_domain = qsearchs('svc_domain', { 'svcnum' => $svcnum })
+ or die 'unknown svc_domain.svcnum';
+
+my $error = $svc_domain->insert_defaultrecords;
+
+</%init>
diff --git a/httemplate/elements/freeside.css b/httemplate/elements/freeside.css
index dcb639b41..18b14e395 100644
--- a/httemplate/elements/freeside.css
+++ b/httemplate/elements/freeside.css
@@ -173,6 +173,43 @@ div.fstabcontainer {
filter: progid:DXImageTransform.Microsoft.Shadow(color='#666666', Direction=135, Strength=2);
}
+.fscontainer {
+ overflow:hidden;
+ display:inline-block;
+}
+.fscontainer {
+ display:block;
+}
+
+.fsbox {
+
+ float:left;
+
+ background-color:#ffffff;
+
+ padding:8px;
+ border-top:1px solid #7e0079;
+ border-left:1px solid #7e0079;
+ border-right:1px solid #7e0079;
+ border-bottom:1px solid #7e0079;
+ -moz-border-radius-bottomleft:8px;
+ -moz-border-radius-bottomright:8px;
+ -webkit-border-radius-bottomleft:8px;
+ -webkit-border-radius-bottomright:8px;
+ border-radius-bottomleft:8px;
+ border-radius-bottomright:8px;
+ -moz-box-shadow: #666666 1px 1px 2px;
+ -webkit-box-shadow: #666666 1px 1px 2px;
+ box-shadow: #666666 1px 1px 2px;
+ filter: progid:DXImageTransform.Microsoft.Shadow(color='#666666', Direction=135, Strength=2);
+}
+
+.fsbox .fsbox-title {
+ /*float:left;*/
+ font-size:150%;
+ font-weight:bold;
+}
+
.background {
background-color:#f8f8f8;
}
diff --git a/httemplate/view/svc_domain/dns.html b/httemplate/view/svc_domain/dns.html
index 88a9bda95..a73a27e57 100644
--- a/httemplate/view/svc_domain/dns.html
+++ b/httemplate/view/svc_domain/dns.html
@@ -8,7 +8,12 @@
}
</SCRIPT>
-DNS records
+<div class="fscontainer">
+<div class="fsbox">
+<div class="fsbox-title">
+ <span class="left">DNS Records</span>
+</div>
+
% my @records; if ( @records = $svc_domain->domain_record ) {
<% include('/elements/table-grid.html') %>
@@ -38,6 +43,7 @@ DNS records
% || ! $FS::CurrentUser::CurrentUser->access_right('Edit domain nameservice')
% ) {
% ( my $recdata = $domain_record->recdata ) =~ s/"/\\'\\'/g;
+ (<A HREF="<%$p%>edit/domain_record.html?<%$domain_record->recnum%>">edit</A>)
(<A HREF="javascript:areyousure('<%$p%>misc/delete-domain_record.cgi?<%$domain_record->recnum%>', 'Delete \'<% $domain_record->reczone %> <% $type %> <% $recdata %>\' ?' )">delete</A>)
% }
</td>
@@ -53,15 +59,23 @@ DNS records
% }
</table>
-% }
+% } else {
+
+ <FORM METHOD="POST" NAME="DefaultForm" ACTION="<%$p%>edit/process/svc_domain-defaultrecords.cgi">
+ <INPUT TYPE="hidden" NAME="svcnum" VALUE="<%$svcnum%>">
+ <INPUT TYPE="submit" VALUE="Add default records">
+ </FORM>
+
+% }
% if ( $FS::CurrentUser::CurrentUser->access_right('Edit domain nameservice') ) {
+ <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 PTR TXT) ) {
+% foreach ( @{ FS::domain_record->rectypes } ) {
<OPTION VALUE="<%$_%>"><%$_%></OPTION>
% }
</SELECT>
@@ -69,6 +83,7 @@ DNS records
<INPUT TYPE="submit" VALUE="Add record">
</FORM>
+ <BR>
<FORM NAME="SlaveForm" METHOD="POST" ACTION="<%$p%>edit/process/domain_record.cgi">
<INPUT TYPE="hidden" NAME="svcnum" VALUE="<%$svcnum%>">
Or
@@ -86,6 +101,8 @@ DNS records
% }
+</div>
+</div>
<%init>
my($svc_domain, %opt) = @_;