shadowbrokers-exploits/windows/Resources/Dsz/Scripts/Include/_DatabaseIncludes.dsi
2017-04-14 11:45:07 +02:00

89 lines
2 KiB
Text

@include "_Arrays.dsi";
#----------------------------------------------------
# _sqlOpen
# This subroutine opens up a database connection
#----------------------------------------------------
sub _sqlOpen(IN STRING $pathAndName, OUT INT $handle)
{
#$a = 1;
bool $retVal = false;
@record on;
if(`local database -open "$pathAndName"`) {
if(GetCmdData("resultitem::handle", $handle)) {
$retVal = true;
}
}
@record off;
return $retVal;
}
# END _sqlOpen
#----------------------------------------------------
# _sqlClose
# This subroutine closes a database connection
#----------------------------------------------------
sub _sqlClose(IN INT $handle)
{
return `local database -close $handle`;
}
# END _sqlClose
#----------------------------------------------------
# _sqlExec
# This subroutine executes a database statement
# Don't forget to escape quotation marks
# - "string" should come in as \"string\"
#----------------------------------------------------
sub _sqlExec( IN INT $handle, IN STRING $sql, OUT string %tableResult )
{
string $exec = "";
for( int $i=0; $i < sizeof($sql); $i++ ) {
if(strlen($exec) > 0) {
$exec = "$exec|";
}
$exec = "$exec$sql[$i]";
}
@record on;
bool $retVal = `local database -exec $handle "$exec"`;
@record off;
if( !$retVal ) {
return false;
}
string $columns;
object $rows;
if( !(
GetCmdData( "resultitem::column", $columns ) && defined( $columns ) &&
GetCmdData( "resultitem::row", $rows ) && defined( $rows )
) ) {
# no data this time
return true;
}
_CopyArrayStrings( %tableResult{'columns'}, $columns );
for( int $i = 0; $i < sizeof( $rows ); $i++ ) {
for( int $j=0; $j < sizeof( $columns ); $j++ ) {
string $temp;
if( !( GetObjectData( $rows[$i], $columns[$j], $temp ) && defined( $temp ) ) ) {
return false;
}
%tableResult{$columns[$j]}[$i] = $temp;
}
}
return true;
}
# END sqlExec