diff options
| author | ivan <ivan> | 2010-08-17 17:08:22 +0000 | 
|---|---|---|
| committer | ivan <ivan> | 2010-08-17 17:08:22 +0000 | 
| commit | 9bdca2fe23584918219395b62effbb9ef0fc5f1c (patch) | |
| tree | 3d9127c06721544c8941f74088abed2679b96329 | |
| parent | 96ae2087c30bbe8f4db97879c105843bdd3fc295 (diff) | |
DNS, RT#8933
| -rw-r--r-- | FS/FS/Conf.pm | 7 | ||||
| -rw-r--r-- | FS/FS/domain_record.pm | 12 | ||||
| -rw-r--r-- | FS/FS/svc_domain.pm | 32 | ||||
| -rwxr-xr-x | httemplate/edit/process/domain_record.cgi | 2 | ||||
| -rw-r--r-- | httemplate/edit/process/svc_domain-defaultrecords.cgi | 14 | ||||
| -rw-r--r-- | httemplate/elements/freeside.css | 37 | ||||
| -rw-r--r-- | httemplate/view/svc_domain/dns.html | 23 | 
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) = @_;  | 
