Changeset 16 for trunk/DNSDB.pm


Ignore:
Timestamp:
09/15/09 17:52:13 (15 years ago)
Author:
Kris Deugau
Message:

/trunk

checkpoint

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/DNSDB.pm

    r15 r16  
    2424@EXPORT_OK      = qw(
    2525        &initGlobals &connectDB &finish &addDomain &delDomain &domainName &grpName &getSOA &getRecLine
    26         &getDomRecs &addRec &delRec &domStatus
     26        &getDomRecs &addRec &updateRec &delRec &domStatus
    2727        %typemap %reverse_typemap
    2828        );
     
    3131%EXPORT_TAGS    = ( ALL => [qw(
    3232                &initGlobals &connectDB &finish &addDomain &delDomain &domainName &grpName &getSOA &getRecLine
    33                 &getDomRecs &addRec &delRec &domStatus
     33                &getDomRecs &addRec &updateRec &delRec &domStatus
    3434                %typemap %reverse_typemap
    3535                )]
     
    453453
    454454
     455## DNSDB::updateRec()
     456# Update a record
     457sub updateRec {
     458  $errstr = '';
     459  my $dbh = shift;
     460  my $defrec = shift;
     461  my $id = shift;
     462
     463# all records have these
     464  my $host = shift;
     465  my $type = shift;
     466  my $val = shift;
     467  my $ttl = shift;
     468
     469  return('FAIL',"Missing standard argument(s)") if !defined($ttl);
     470
     471# only MX and SRV will use these
     472  my $dist = 0;
     473  my $weight = 0;
     474  my $port = 0;
     475
     476  if ($type == $reverse_typemap{MX} || $type == $reverse_typemap{SRV}) {
     477    $dist = shift
     478        or return ('FAIL',"MX or SRV requires distance");
     479    if ($type == $reverse_typemap{SRV}) {
     480      my $weight = shift
     481        or return ('FAIL',"SRV requires weight");
     482      my $port = shift
     483        or return ('FAIL',"SRV requires port");
     484    }
     485  }
     486
     487  my $sth = $dbh->prepare("UPDATE ".($defrec eq 'y' ? 'default_' : '')."records ".
     488        "SET host=?,type=?,val=?,ttl=?,distance=?,weight=?,port=? ".
     489        "WHERE record_id=?");
     490  $sth->execute($host,$type,$val,$ttl,$dist,$weight,$port,$id);
     491
     492  return ('FAIL',$sth->errstr) if $sth->err;
     493
     494  return ('OK','OK');
     495} # end updateRec()
     496
     497
    455498## DNSDB::delRec()
    456499# Delete a record. 
Note: See TracChangeset for help on using the changeset viewer.