Changeset 290 for trunk/DNSDB.pm


Ignore:
Timestamp:
03/27/12 14:57:39 (12 years ago)
Author:
Kris Deugau
Message:

/trunk

Move action logging for delRec() into DNSDB.pm. See #35

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/DNSDB.pm

    r289 r290  
    26942694  my $id = shift;
    26952695
    2696   my $sth = $dbh->prepare("DELETE FROM "._rectable($defrec,$revrec)." WHERE record_id=?");
    2697   $sth->execute($id);
    2698 
    2699   return ('FAIL',"Couldn't remove record: ".$sth->errstr) if $sth->err;
    2700 
    2701   return ('OK','OK');
     2696  my $oldrec = getRecLine($dbh, $defrec, $revrec, $id);
     2697
     2698  # Allow transactions, and raise an exception on errors so we can catch it later.
     2699  # Use local to make sure these get "reset" properly on exiting this block
     2700  local $dbh->{AutoCommit} = 0;
     2701  local $dbh->{RaiseError} = 1;
     2702
     2703  # Put together the log entry
     2704  my %logdata;
     2705  $logdata{domain_id} = $oldrec->{domain_id};
     2706  $logdata{rdns_id} = $oldrec->{rdns_id};
     2707  $logdata{group_id} = $oldrec->{group_id} if $defrec eq 'y';
     2708  $logdata{group_id} = parentID($dbh,
     2709                (id => $oldrec->{domain_id}, type => ($revrec eq 'n' ? 'domain' : 'revzone'), revrec => $revrec) )
     2710        if $defrec eq 'n';
     2711  $logdata{entry} = "Deleted ".($defrec eq 'y' ? 'default record ' : 'record ').
     2712        "'$oldrec->{host} $typemap{$oldrec->{type}} $oldrec->{val}";
     2713  $logdata{entry} .= " [distance $oldrec->{distance}]" if $typemap{$oldrec->{type}} eq 'MX';
     2714  $logdata{entry} .= " [priority $oldrec->{distance}] [weight $oldrec->{weight}] [port $oldrec->{port}]"
     2715        if $typemap{$oldrec->{type}} eq 'SRV';
     2716  $logdata{entry} .= "', TTL $oldrec->{ttl}\n";
     2717
     2718  eval {
     2719    my $sth = $dbh->do("DELETE FROM "._rectable($defrec,$revrec)." WHERE record_id=?", undef, ($id));
     2720    _log($dbh, %logdata);
     2721    $dbh->commit;
     2722  };
     2723  if ($@) {
     2724    my $msg = $@;
     2725    eval { $dbh->rollback; };
     2726    if ($config{log_failures}) {
     2727      $logdata{entry} = "Error deleting ".($defrec eq 'y' ? 'default record' : 'record').
     2728        " '$oldrec->{host} $typemap{$oldrec->{type}} $oldrec->{val}', TTL $oldrec->{ttl} ($msg)";
     2729      _log($dbh, %logdata);
     2730      $dbh->commit;
     2731    }
     2732    return ('FAIL', $msg);
     2733  }
     2734
     2735  return ('OK',$logdata{entry});
    27022736} # end delRec()
    27032737
Note: See TracChangeset for help on using the changeset viewer.