Changeset 162

Show
Ignore:
Timestamp:
01/19/07 13:46:47 (2 years ago)
Author:
mbriggs
Message:

Bug Fixes

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • honeyclient/branches/exp/mbriggs-db/lib/HoneyClient/Manager/DB.pm

    r150 r162  
    99############################################################################## 
    1010# Package:     HoneyClient::Manager::DB  
    11 # $LastChangedRevision: 1834
     11# $LastChangedRevision: 1835
    1212# File:        DB.pm 
    1313# Description: A module server that provides an interface to the Honeyclient DB 
    1414# Author:      mbriggs 
    1515# 
    16 # CVS:         $Id: DB.pm 1834 2007-01-10 18:10:58Z mbriggs $ 
     16# CVS:         $Id: DB.pm 1835 2007-01-16 13:06:53Z mbriggs $ 
    1717# 
    1818# Copyright (C) 2006 The MITRE Corporation.  All rights reserved. 
     
    950950    my $file = {}; my @files;    
    951951    map {$file->{$_}=undef} ('id','contentid','serial','name','path','datecreated','notes'); 
    952     map {$file->{content}->{$_}=undef} ('.md5','sha1','size','type'); 
     952    map {$file->{content}->{$_}=undef} ('md5','sha1','size','type'); 
    953953    $sth->bind_columns(\$file->{id},\$file->{contentid},\$file->{serial},\$file->{name}, 
    954954       \$file->{path},\$file->{datecreated},\$file->{notes},\$file->{content}->{md5},\$file->{content}->{sha1}, 
     
    967967sub _SelectRegKeys { 
    968968    #TODO: _SelectRegKeys function 
     969    my ($self,$q) = @_; 
     970 
     971    my ($rowR,$rowE,@regkeys,%ids); 
     972    %$rowR = map {$_,undef}, ('id','serial','key_name','status','datecreated','notes'); 
     973    %$rowE = map {$_,undef}, ('name','new_val','old_val','rkid'); 
     974 
     975    my $query = new Relations::Query(); my $entries; 
     976    if ($entries = delete exists $q->{where}->{entries}) { 
     977        $query->set( 
     978            -select => "RegKeys.*,RKEntries.name,RKEntries.new_val,RKEntries.old_val,RKEntries.rkid", 
     979            -from   => "RegKeys JOIN RKEntries ON RegKeys.id=RKEntries.rkid" 
     980        ); 
     981        foreach my $entry (@{$entries}) { 
     982            $query->set(-where => $q->{where}); 
     983            $query->add(-where => $entry); 
     984            my $sth = $self->{dbh}->prepare($query->get()); 
     985            $sth->execute(); 
     986            $sth->bind_columns(\$rowR->{id},\$rowR->{serial},\$rowR->{key_name},\$rowR->{status}, 
     987                \$rowR->{datecreated},\$rowR->{notes},\$rowE->{name},\$rowE->{new_val}, 
     988                \$rowE->{old_val},\$rowE->{rkid}); 
     989            $sth->fetch(); 
     990            if(exists $ids{$rowR->{id}) { 
     991                push @($regkeys[$rowR->{id}]->{entries}),$rowE; 
     992            } 
     993            else { 
     994                push $regkeys, $rowR; 
     995                $ids{$rowR->{id}} = $#regkeys; 
     996                push @{$regkeys[$#regkeys]->{entries}},$rowE; 
     997            } 
     998        } 
     999    } 
     1000    else { 
     1001        $query->set( 
     1002            -select => "*", 
     1003            -from   => "RegKeys", 
     1004            -where  => $q->{where} 
     1005        ); 
     1006        @regkeys = @{$self->{dbh}->selectall_arrayref($query->get(),{ Slice => {} })}; 
     1007        foreach my $row (@regkeys) { 
     1008            my $subquery = new Relations::Query( 
     1009                -select => ['name','new_val','old_val'], 
     1010                -from   => 'RKEntries', 
     1011                -where  => {rkid => $row->{id}} 
     1012            ); 
     1013            $rowE = $self->{dbh}->selectall_arrayref($query->get(),{ Slice => {} }); 
     1014            if(scalar @{$rowE}) { $row->{entries} = $rowE; } 
     1015        } 
     1016    } 
     1017    return \@regkeys; 
    9691018} 
    9701019 
     
    9731022 
    9741023sub _SelectFingerprint { 
    975     my ($self,$q) = shift
     1024    my ($self,$q) = @_
    9761025    map {$q->{where}->{$_} = $self->{dbh}->quote($q->{where}->{$_})} (keys %{$q->{where}}); 
    9771026    my $query = new Relations::Query(