Changeset 733 for trunk/dns.cgi


Ignore:
Timestamp:
06/23/16 16:52:59 (8 years ago)
Author:
Kris Deugau
Message:

/trunk

Add log filtering supporting redirecting to a "base" log set for user,
domain, or revzone, and a free text field to filter the entries. Closes #17.

While we're meddling with the log entry retrieval, start an experiment
to merge getFooCount() and getFooList() subs. See #62.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dns.cgi

    r728 r733  
    17951795##fixme:  where should we call this from?
    17961796    $id = $webvar{id};
    1797     if (!check_scope(id => $id, type => 'user')) {
    1798       $page->param(errmsg => "You are not permitted to view log entries for the requested user");
    1799       goto DONELOG;
    1800     }
    1801     $page->param(logfor => 'user '.$dnsdb->userFullName($id));
     1797##fixme:  don't include username on out-of-scope users
     1798    $page->param(logfor => 'user '.($id ? $dnsdb->userFullName($id) : $webvar{fname}));
    18021799  } elsif ($webvar{ltype} && $webvar{ltype} eq 'dom') {
    18031800    $id = $webvar{id};
     
    18211818  }
    18221819  $webvar{ltype} = 'group' if !$webvar{ltype};
    1823   my $lcount = $dnsdb->getLogCount(id => $id, logtype => $webvar{ltype}) or push @debugbits, $dnsdb->errstr;
     1820
     1821  # Done here since we want to allow more arbitrary blobs in the log filter
     1822  if (defined($webvar{logfilter})) {
     1823    $session->param('logfilter', '') if !$session->param('logfilter');
     1824    if ($webvar{logfilter} ne $session->param('logfilter')) {
     1825      $uri_self =~ s/\&offset=[^&]//;
     1826      $offset = 0;
     1827    }
     1828    $session->param('logfilter', $webvar{logfilter})
     1829  }
     1830  my $logfilter = $session->param('logfilter');
     1831
     1832  my $lcount = $dnsdb->getLogCount(id => $id, group => $logingroup, fname => $webvar{fname},
     1833    logtype => $webvar{ltype}, filter => $logfilter);
     1834  if (!$lcount) {
     1835    $page->param(errmsg => $dnsdb->errstr);
     1836    $lcount = 0;
     1837  }
    18241838
    18251839  $page->param(id => $id);
     
    18401854
    18411855  # Set up the column headings with the sort info
    1842   my @cols = ('fname','username','entry','stamp');
    1843   my %colnames = (fname => 'Name', username => 'Username', entry => 'Log Entry', stamp => 'Date/Time');
     1856  my @cols = ('fname','domain','revzone','entry','stamp');
     1857  my %colnames = (fname => 'Name', domain => 'Forward zone', revzone => 'Reverse zone',
     1858      entry => 'Log Entry', stamp => 'Date/Time');
    18441859  fill_colheads($sortby, $sortorder, \@cols, \%colnames);
    18451860
    18461861##fixme:  increase per-page limit or use separate limit for log?  some ops give *lots* of entries...
    1847   my $logentries = $dnsdb->getLogEntries(id => $id, logtype => $webvar{ltype},
    1848         offset => $webvar{offset}, sortby => $sortby, sortorder => $sortorder);
    1849   $page->param(logentries => $logentries);
     1862  my $logentries = $dnsdb->getLogEntries(id => $id, group => $logingroup, fname => $webvar{fname},
     1863        logtype => $webvar{ltype},
     1864        offset => $webvar{offset}, sortby => $sortby, sortorder => $sortorder, filter => $logfilter);
     1865  if (!$logentries) {
     1866    $page->param(errmsg => $dnsdb->errstr);
     1867  } else {
     1868    # undef $logentries is inexplicably puking instead of showing "no entries found",
     1869    # like all the rest of the methods that return a list the same way.  idunno...
     1870    $page->param(logentries => $logentries);
     1871  }
    18501872
    18511873##fixme:
    1852 # - filtering
    1853 # - show reverse zone column?
    18541874# - on log record creation, bundle "parented" log actions (eg, "AXFR record blah for domain foo",
    18551875#   or "Add record bar for new domain baz") into one entry (eg, "AXFR domain foo", "Add domain baz")?
Note: See TracChangeset for help on using the changeset viewer.