Changeset 311 for trunk/dns.cgi


Ignore:
Timestamp:
04/19/12 17:21:11 (12 years ago)
Author:
Kris Deugau
Message:

/trunk

Move SQL for SOA update to DNSDB.pm (see #1)
Clean up support for reverse zones (see #26)
Move action logging for SOA updates to DNSDB.pm (see #35)

Includes log/info message consistency cleanups, dropping stale
commented code, dropping if(0)'ed code, tweaks to fillsoa() to
retain user changes on errors, updates to getSOA() for consistency,
removal of a stale form input

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dns.cgi

    r310 r311  
    804804  if (!check_scope(id => $webvar{recid}, type =>
    805805        ($webvar{defrec} eq 'y' ? ($webvar{revrec} eq 'y' ? 'defrevrec' : 'defrec') : 'record'))) {
     806##fixme:  should we redirect to the requested record list page instead of the domain list?
    806807    changepage(page => 'domlist', errmsg => "You do not have permission to edit the requested SOA record");
    807808  }
     
    809810  if (!check_scope(id => $webvar{id}, type =>
    810811        ($webvar{defrec} eq 'y' ? 'group' : ($webvar{revrec} eq 'y' ? 'revzone' : 'domain')))) {
    811     changepage(page => 'domlist', errmsg => "You do not have permission to edit the ".
     812    changepage(page => ($webvar{revrec} eq 'y' ? 'revzones' : 'domlist'),
     813        errmsg => "You do not have permission to edit the ".
    812814        ($webvar{defrec} eq 'y' ? 'default ' : '')."SOA record for the requested ".
    813         ($webvar{defrec} eq 'y' ? 'group' : 'domain'));
     815        ($webvar{defrec} eq 'y' ? 'group' : ($webvar{revrec} eq 'y' ? 'reverse zone' : 'domain')) );
    814816  }
    815817
     
    817819        unless ($permissions{admin} || $permissions{domain_edit});
    818820
    819   # get old SOA for log
    820   my %soa = getSOA($dbh,$webvar{defrec},$webvar{revrec},$webvar{id});
    821 
    822 #  my $sth;
    823 ###fixme:  push SQL into DNSDB.pm
    824 ###fixme: data validation: make sure {recid} is really the SOA for {id}
    825 #  # no domain ID, so we're editing the default SOA for a group (we don't care which one here)
    826 #  # plus a bit of magic to update the appropriate table
    827 #  my $sql = "UPDATE ".($webvar{defrec} eq 'y' ? "default_records" : "records").
    828 #       " SET host=?, val=?, ttl=? WHERE record_id=?";
    829 #  $sth = $dbh->prepare($sql);
    830 #  $sth->execute("$webvar{contact}:$webvar{prins}",
    831 #       "$webvar{refresh}:$webvar{retry}:$webvar{expire}:$webvar{minttl}",
    832 #       $webvar{ttl},
    833 #       $webvar{recid});
    834 
    835821  my ($code, $msg) = updateSOA($dbh, $webvar{defrec}, $webvar{revrec},
    836822        (contact => $webvar{contact}, prins => $webvar{prins}, refresh => $webvar{refresh},
    837         retry => $webvar{retry}, expire => $webvar{expire}, minttl => $soa{minttl},
    838         ttl => $webvar{ttl}, recid => $webvar{recid}) );
     823        retry => $webvar{retry}, expire => $webvar{expire}, minttl => $webvar{minttl},
     824        ttl => $webvar{ttl}, id => $webvar{id}) );
    839825  if ($code eq 'OK') {
    840826    changepage(page => "reclist", id => $webvar{id}, defrec => $webvar{defrec}, revrec => $webvar{revrec},
     
    842828  } else {
    843829    $page->param(update_failed => 1);
    844     $page->param(msg => $DNSDB::errstr);
    845     fillsoa($webvar{defrec},$webvar{revrec},$webvar{id});
    846   }
    847 
    848 ##fixme: faillog
    849 #  } else {
    850 if (0) {
    851     # do this in the order of "default to most common case"
    852     my $loggroup;
    853     my $logdomain = $webvar{id};
    854     if ($webvar{defrec} eq 'y') {
    855       $loggroup = $webvar{id};
    856       $logdomain = 0;
    857     } else {
    858       $loggroup = parentID($dbh, (id => $logdomain, type => 'domain', revrec => $webvar{revrec}));
    859     }
    860 
    861     logaction($logdomain, $session->param("username"), $loggroup,
    862         "Updated ".($webvar{defrec} eq 'y' ? 'default ' : '')."SOA for ".
    863         ($webvar{defrec} eq 'y' ? groupName($dbh, $webvar{id}) : domainName($dbh, $webvar{id}) ).
    864         ": (ns $soa{prins}, contact $soa{contact}, refresh $soa{refresh},".
    865         " retry $soa{retry}, expire $soa{expire}, minTTL $soa{minttl}, TTL $soa{ttl}) to ".
    866         "(ns $webvar{prins}, contact $webvar{contact}, refresh $webvar{refresh},".
    867         " retry $webvar{retry}, expire $webvar{expire}, minTTL $webvar{minttl}, TTL $webvar{ttl})");
    868   } # if (0)
     830    $page->param(msg => $msg);
     831    fillsoa($webvar{defrec}, $webvar{revrec}, $webvar{id}, 'w');
     832  }
    869833
    870834} elsif ($webvar{page} eq 'grpman') {
     
    17231687  my $revrec = shift;
    17241688  my $id = shift;
     1689  my $preserve = shift || 'd';  # Flag to use webvar fields or retrieve from database
     1690
    17251691  my $domname = ($defrec eq 'y' ? '' : "DOMAIN");
    17261692
     
    17441710  $page->param(defminttl        => $DNSDB::def{minttl});
    17451711
    1746   # there are probably better ways to do this.  TMTOWTDI.
    1747   my %soa = getSOA($dbh,$defrec,$revrec,$id);
    1748 
    17491712  $page->param(id       => $id);
    1750   $page->param(recid    => $soa{recid});
    1751   $page->param(prins    => ($soa{prins} ? $soa{prins} : $DNSDB::def{prins}));
    1752   $page->param(contact  => ($soa{contact} ? $soa{contact} : $DNSDB::def{contact}));
    1753   $page->param(refresh  => ($soa{refresh} ? $soa{refresh} : $DNSDB::def{refresh}));
    1754   $page->param(retry    => ($soa{retry} ? $soa{retry} : $DNSDB::def{retry}));
    1755   $page->param(expire   => ($soa{expire} ? $soa{expire} : $DNSDB::def{expire}));
    1756   $page->param(minttl   => ($soa{minttl} ? $soa{minttl} : $DNSDB::def{minttl}));
    1757   $page->param(ttl      => ($soa{ttl} ? $soa{ttl} : $DNSDB::def{soattl}));
     1713
     1714  if ($preserve eq 'd') {
     1715    # there are probably better ways to do this.  TMTOWTDI.
     1716    my $soa = getSOA($dbh,$defrec,$revrec,$id);
     1717
     1718    $page->param(prins  => ($soa->{prins} ? $soa->{prins} : $DNSDB::def{prins}));
     1719    $page->param(contact        => ($soa->{contact} ? $soa->{contact} : $DNSDB::def{contact}));
     1720    $page->param(refresh        => ($soa->{refresh} ? $soa->{refresh} : $DNSDB::def{refresh}));
     1721    $page->param(retry  => ($soa->{retry} ? $soa->{retry} : $DNSDB::def{retry}));
     1722    $page->param(expire => ($soa->{expire} ? $soa->{expire} : $DNSDB::def{expire}));
     1723    $page->param(minttl => ($soa->{minttl} ? $soa->{minttl} : $DNSDB::def{minttl}));
     1724    $page->param(ttl    => ($soa->{ttl} ? $soa->{ttl} : $DNSDB::def{soattl}));
     1725  } else {
     1726    $page->param(prins  => ($webvar{prins} ? $webvar{prins} : $DNSDB::def{prins}));
     1727    $page->param(contact        => ($webvar{contact} ? $webvar{contact} : $DNSDB::def{contact}));
     1728    $page->param(refresh        => ($webvar{refresh} ? $webvar{refresh} : $DNSDB::def{refresh}));
     1729    $page->param(retry  => ($webvar{retry} ? $webvar{retry} : $DNSDB::def{retry}));
     1730    $page->param(expire => ($webvar{expire} ? $webvar{expire} : $DNSDB::def{expire}));
     1731    $page->param(minttl => ($webvar{minttl} ? $webvar{minttl} : $DNSDB::def{minttl}));
     1732    $page->param(ttl    => ($webvar{ttl} ? $webvar{ttl} : $DNSDB::def{soattl}));
     1733  }
    17581734}
    17591735
     
    17641740
    17651741  # get the SOA first
    1766   my %soa = getSOA($dbh,$def,$rev,$id);
    1767 
    1768   $page->param(contact  => $soa{contact});
    1769   $page->param(prins    => $soa{prins});
    1770   $page->param(refresh  => $soa{refresh});
    1771   $page->param(retry    => $soa{retry});
    1772   $page->param(expire   => $soa{expire});
    1773   $page->param(minttl   => $soa{minttl});
    1774   $page->param(ttl      => $soa{ttl});
     1742  my $soa = getSOA($dbh,$def,$rev,$id);
     1743
     1744  $page->param(contact  => $soa->{contact});
     1745  $page->param(prins    => $soa->{prins});
     1746  $page->param(refresh  => $soa->{refresh});
     1747  $page->param(retry    => $soa->{retry});
     1748  $page->param(expire   => $soa->{expire});
     1749  $page->param(minttl   => $soa->{minttl});
     1750  $page->param(ttl      => $soa->{ttl});
    17751751
    17761752  my $foo2 = getDomRecs($dbh,$def,$rev,$id,$perpage,$webvar{offset},$sortby,$sortorder,$filter);
     
    18201796  }
    18211797# retrieve the right ttl instead of falling (way) back to the hardcoded system default
    1822   my %soa = getSOA($dbh,$webvar{defrec},$webvar{revrec},$webvar{parentid});
    1823   $page->param(ttl      => ($webvar{ttl} ? $webvar{ttl} : $soa{minttl}));
     1798  my $soa = getSOA($dbh,$webvar{defrec},$webvar{revrec},$webvar{parentid});
     1799  $page->param(ttl      => ($webvar{ttl} ? $webvar{ttl} : $soa->{minttl}));
    18241800}
    18251801
Note: See TracChangeset for help on using the changeset viewer.