Changeset 224 for trunk/dns.cgi


Ignore:
Timestamp:
01/24/12 17:59:24 (12 years ago)
Author:
Kris Deugau
Message:

/trunk

Start adding rDNS (See #26)

  • Initial SQL tabledef, default records, and record types (we'll abuse the reserved range of DNS record types from 65280 to 65534 for some extra custom types)
  • Start passing $webvar{revrec} around similar to $webvar{defrec}
  • Adjust record list page to handle reverse records. Tested on group-default reverse records but should work fine for live zones
  • Add "Reverse Zones" and "Default Reverse Records" to menu
  • While we're rearranging it, add a little more paranoia on some of the SQL
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dns.cgi

    r216 r224  
    5252
    5353# shut up some warnings, in case we arrive somewhere we forgot to set this
    54 $webvar{defrec} = 'n' if !$webvar{defrec};
     54$webvar{defrec} = 'n' if !$webvar{defrec};      # non-default records
     55$webvar{revrec} = 'n' if !$webvar{revrec};      # non-reverse (domain) records
    5556
    5657# load some local system defaults (mainly DB connect info)
     
    268269
    269270    # I hate special cases.
     271##fixme: probably need to handle webvar{revrec}=='y' too
    270272    if ($webvar{page} eq 'reclist' && $webvar{defrec} eq 'y') {
    271273      my %args = (page => $webvar{page}, id => $curgroup, defrec => $webvar{defrec});
     
    438440    $page->param(curpage => $webvar{page});
    439441
    440     my $count = getRecCount($dbh, $webvar{defrec}, $webvar{id}, $filter);
     442    my $count = getRecCount($dbh, $webvar{defrec}, $webvar{revrec}, $webvar{id}, $filter);
    441443
    442444    $sortby = 'host';
     
    449451
    450452# set up the headers
    451     my @cols = ('host', 'type', 'val', 'distance', 'weight', 'port', 'ttl');
    452     my %colheads = (host => 'Name', type => 'Type', val => 'Address',
     453    my @cols;
     454    my %colheads;
     455    if ($webvar{revrec} eq 'n') {
     456      @cols = ('host', 'type', 'val', 'distance', 'weight', 'port', 'ttl');
     457      %colheads = (host => 'Name', type => 'Type', val => 'Address',
    453458        distance => 'Distance', weight => 'Weight', port => 'Port', ttl => 'TTL');
    454     my %custom = (id => $webvar{id}, defrec => $webvar{defrec});
     459    } else {
     460      @cols = ('host', 'type', 'val', 'ttl');
     461      %colheads = (host => 'IP Address', type => 'Type', val => 'Hostname', ttl => 'TTL');
     462    }
     463    my %custom = (id => $webvar{id}, defrec => $webvar{defrec}, revrec => $webvar{revrec});
    455464    fill_colheads($sortby, $sortorder, \@cols, \%colheads, \%custom);
    456465
    457466# fill the page-count and first-previous-next-last-all details
    458467    fill_pgcount($count,"records",
    459         ($webvar{defrec} eq 'y' ? "group ".groupName($dbh,$webvar{id}) : domainName($dbh,$webvar{id})));
     468        ($webvar{defrec} eq 'y' ? "group ".groupName($dbh,$webvar{id}) :
     469                ($webvar{revrec} eq 'y' ? revName($dbh,$webvar{id}) : domainName($dbh,$webvar{id}))
     470        ));
    460471    fill_fpnla($count);  # should put some params on this sub...
    461472
    462473    $page->param(defrec => $webvar{defrec});
     474    showzone($webvar{defrec}, $webvar{revrec}, $webvar{id});
    463475    if ($webvar{defrec} eq 'y') {
    464       showdomain('y',$curgroup);
    465476    } else {
    466       showdomain('n',$webvar{id});
     477#      showzone('n',$webvar{id});
    467478##fixme:  permission for viewing logs?
     479##fixme:  determine which slice of the log we view (group, domain, revzone)
    468480      $page->param(logdom => 1);
    469481    }
     
    15841596  $page->param(logingrp_num => $logingroup);
    15851597
     1598##fixme
     1599  $page->param(mayrdns => 1);
     1600
    15861601  $page->param(maydefrec => $permissions{admin});
    15871602  $page->param(mayimport => $permissions{admin} || $permissions{domain_create});
     
    17251740}
    17261741
    1727 sub showdomain {
     1742sub showzone {
    17281743  my $def = shift;
     1744  my $rev = shift;
    17291745  my $id = shift;
    17301746
    17311747  # get the SOA first
    1732   my %soa = getSOA($dbh,$def,$id);
     1748  my %soa = getSOA($dbh,$def,$rev,$id);
    17331749
    17341750  $page->param(contact  => $soa{contact});
     
    17401756  $page->param(ttl      => $soa{ttl});
    17411757
    1742   my $foo2 = getDomRecs($dbh,$def,$id,$perpage,$webvar{offset},$sortby,$sortorder,$filter);
     1758  my $foo2 = getDomRecs($dbh,$def,$rev,$id,$perpage,$webvar{offset},$sortby,$sortorder,$filter);
    17431759
    17441760  my $row = 0;
     
    17471763    $rec->{row} = $row % 2;
    17481764    $rec->{defrec} = $def;
     1765    $rec->{revrec} = $rev;
    17491766    $rec->{sid} = $webvar{sid};
    17501767    $rec->{id} = $id;
     1768    $rec->{fwdzone} = $rev eq 'n';
    17511769    $rec->{distance} = 'n/a' unless ($rec->{type} eq 'MX' || $rec->{type} eq 'SRV');
    17521770    $rec->{weight} = 'n/a' unless ($rec->{type} eq 'SRV');
Note: See TracChangeset for help on using the changeset viewer.