From: ivan Date: Tue, 17 Aug 2010 17:08:22 +0000 (+0000) Subject: DNS, RT#8933 X-Git-Tag: TORRUS_1_0_9~380 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=9bdca2fe23584918219395b62effbb9ef0fc5f1c;ds=sidebyside DNS, RT#8933 --- 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; + + 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 @@ } -DNS records +
+
+
+ DNS Records +
+ % 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; + (edit) (delete) % } @@ -53,15 +59,23 @@ DNS records % } -% } +% } else { + +
+ + +
+ +% } % if ( $FS::CurrentUser::CurrentUser->access_right('Edit domain nameservice') ) { +
IN @@ -69,6 +83,7 @@ DNS records
+
Or @@ -86,6 +101,8 @@ DNS records % } +
+
<%init> my($svc_domain, %opt) = @_;