Changeset 744 for trunk/DNSDB.pm
- Timestamp:
- 08/29/16 16:16:13 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/DNSDB.pm
r741 r744 146 146 domain => 'domain_id', 147 147 revzone => 'rdns_id', 148 record => 'record_id' 148 record => 'record_id', 149 149 ); 150 150 my %par_col = ( … … 456 456 # group_id, log entry 457 457 # and optionally one or more of: 458 # domain_id, rdns_id 458 # domain_id, rdns_id, logparent 459 459 # The %userdata hash provides the user ID, username, and fullname 460 # Returns the log entry ID, mainly for use in bulk operations to allow a "parent" log entry 461 # and a set of child entries (eg, domain add and the individual default-record-copy entries) 460 462 sub _log { 461 463 my $self = shift; … … 466 468 $args{rdns_id} = 0 if !$args{rdns_id}; 467 469 $args{domain_id} = 0 if !$args{domain_id}; 470 $args{logparent} = 0 if !$args{logparent}; 468 471 469 472 ##fixme: farm out the actual logging to different subs for file, syslog, internal, etc based on config 470 473 # if ($self->{log_channel} eq 'sql') { 471 $dbh->do("INSERT INTO log (domain_id,rdns_id,group_id,entry,user_id,email,name) VALUES (?,?,?,?,?,?,?)", 474 $dbh->do("INSERT INTO log (domain_id,rdns_id,group_id,logparent,entry,user_id,email,name) ". 475 "VALUES (?,?,?,?,?,?,?,?)", 472 476 undef, 473 ($args{domain_id}, $args{rdns_id}, $args{group_id}, $args{ entry},477 ($args{domain_id}, $args{rdns_id}, $args{group_id}, $args{logparent}, $args{entry}, 474 478 $self->{loguserid}, $self->{logusername}, $self->{logfullname}) ); 479 480 my ($log_id) = $dbh->selectrow_array("SELECT currval('log_log_id_seq')"); 481 return $log_id; 482 475 483 # } elsif ($self->{log_channel} eq 'file') { 476 484 # } elsif ($self->{log_channel} eq 'syslog') { … … 2374 2382 undef, ($domain, $defloc)); 2375 2383 2376 $self->_log(domain_id => $dom_id, group_id => $group,2384 my $logparent = $self->_log(domain_id => $dom_id, group_id => $group, 2377 2385 entry => "Added ".($state ? 'active' : 'inactive')." domain $domain"); 2378 2386 … … 2390 2398 my @tmp1 = split /:/, $host; 2391 2399 my @tmp2 = split /:/, $val; 2392 $self->_log(domain_id => $dom_id, group_id => $group, 2400 $self->_log(domain_id => $dom_id, group_id => $group, logparent => $logparent, 2393 2401 entry => "[new $domain] Added SOA record [contact $tmp1[0]] [master $tmp1[1]] ". 2394 2402 "[refresh $tmp2[0]] [retry $tmp2[1]] [expire $tmp2[2]] [minttl $tmp2[3]], TTL $ttl"); … … 2397 2405 $logentry .= " [distance $dist]" if $typemap{$type} eq 'MX'; 2398 2406 $logentry .= " [priority $dist] [weight $weight] [port $port]" if $typemap{$type} eq 'SRV'; 2399 $self->_log(domain_id => $dom_id, group_id => $group, 2407 $self->_log(domain_id => $dom_id, group_id => $group, logparent => $logparent, 2400 2408 entry => $logentry." $val', TTL $ttl"); 2401 2409 } … … 4867 4875 $sql = "SELECT count(*) FROM log l "; 4868 4876 } else { 4869 $sql = "SELECT l.user_id AS userid, l.name AS userfname, d.domain, l.domain_id, r.revnet AS revzone, ". 4877 $sql = "SELECT l.log_id AS logparent, l.user_id AS userid, l.name AS userfname, d.domain, l.domain_id, ". 4878 "r.revnet AS revzone, ". 4870 4879 "l.rdns_id, l.entry AS logentry, date_trunc('second',l.stamp) AS logtime ". 4871 4880 "FROM log l ". … … 4884 4893 } 4885 4894 4895 # trim log "subentries" - we'll figure out where to stash these later 4896 $sql .= " AND logparent = 0"; 4897 4886 4898 # add the entry filter, if any 4887 4899 $sql .= ($args{filter} ? " AND entry ~* ?" : ''); … … 4903 4915 $sql .= " ORDER BY $args{sortby} $args{sortorder}, log_id $args{sortorder}". 4904 4916 ($args{offset} eq 'all' ? '' : " LIMIT $self->{perpage} OFFSET ".$args{offset}*$self->{perpage}); 4905 my $loglist = $dbh->selectall_arrayref($sql, { Slice => {} }, ($idarg, @filterargs) ); 4906 $errstr = $dbh->errstr if !$loglist; 4907 return $loglist; 4917 my @loglist; 4918 my $sth = $dbh->prepare($sql); 4919 my $logchild = $dbh->prepare("SELECT entry FROM log WHERE logparent = ? ORDER BY log_id"); 4920 $sth->execute($idarg, @filterargs); 4921 while (my $row = $sth->fetchrow_hashref) { 4922 $logchild->execute($row->{logparent}); 4923 my $childlist = $logchild->fetchall_arrayref({}); 4924 $row->{childentries} = $childlist; 4925 push @loglist, $row; 4926 } 4927 return \@loglist; 4908 4928 } 4909 4929 … … 5510 5530 eval { 5511 5531 5532 my $logparent; 5533 5512 5534 if ($rev eq 'n') { 5513 5535 ##fixme: serial … … 5517 5539 ($zone_id) = $dbh->selectrow_array("SELECT currval('domains_domain_id_seq')"); 5518 5540 $domain_id = $zone_id; 5519 $ self->_log(group_id => $group, domain_id => $domain_id,5541 $logparent = $self->_log(group_id => $group, domain_id => $domain_id, 5520 5542 entry => "[Added ".($args{status} ? 'active' : 'inactive')." domain $zone via AXFR]"); 5521 5543 } else { … … 5526 5548 ($zone_id) = $dbh->selectrow_array("SELECT currval('revzones_rdns_id_seq')"); 5527 5549 $rdns_id = $zone_id; 5528 $ self->_log(group_id => $group, rdns_id => $rdns_id,5550 $logparent = $self->_log(group_id => $group, rdns_id => $rdns_id, 5529 5551 entry => "[Added ".($args{status} ? 'active' : 'inactive')." reverse zone $cidr via AXFR]"); 5530 5552 } … … 5778 5800 $logentry .= " ".($rev eq 'y' ? $host : $val)."', TTL $ttl"; 5779 5801 } 5780 $self->_log(group_id => $group, domain_id => $domain_id, rdns_id => $rdns_id, entry => $logentry); 5802 $self->_log(group_id => $group, domain_id => $domain_id, rdns_id => $rdns_id, 5803 logparent => $logparent, entry => $logentry); 5781 5804 5782 5805 } # while axfr_next
Note:
See TracChangeset
for help on using the changeset viewer.