!C99Shell v. 1.0 pre-release build #13!

Software: Apache. PHP/5.5.15 

uname -a: Windows NT SVR-DMZ 6.1 build 7600 (Windows Server 2008 R2 Enterprise Edition) i586 

SYSTEM 

Safe-mode: OFF (not secure)

C:\Intranet\C\xampp\php\PEAR\SQL\   drwxrwxrwx
Free 4.09 GB of 39.52 GB (10.36%)
Detected drives: [ a ] [ c ] [ d ] [ e ] [ f ]
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     Compiler.php (10.75 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | Copyright (c) 2003-2004 John Griffin                                 |
// +----------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or        |
// | modify it under the terms of the GNU Lesser General Public           |
// | License as published by the Free Software Foundation; either         |
// | version 2.1 of the License, or (at your option) any later version.   |
// |                                                                      |
// | This library is distributed in the hope that it will be useful,      |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of       |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    |
// | Lesser General Public License for more details.                      |
// |                                                                      |
// | You should have received a copy of the GNU Lesser General Public     |
// | License along with this library; if not, write to the Free Software  |
// | Foundation, Inc., 59 Temple Place, Suite 330,Boston,MA 02111-1307 USA|
// +----------------------------------------------------------------------+
// | Authors: John Griffin <jgriffin316@netscape.net>                     |
// +----------------------------------------------------------------------+
//
// $Id: Compiler.php,v 1.1 2004/05/07 12:33:35 busterb Exp $
//

require_once 'PEAR.php';

/**
 * A SQL parse tree compiler.
 *
 * @author  John Griffin <jgriffin316@netscape.net>
 * @version 0.1
 * @access  public
 * @package SQL_Parser
 */
class SQL_Compiler {
    var 
$tree;

// {{{ function SQL_Compiler($array = null)
    
function SQL_Compiler($array null)
    {
        
$this->tree $array;
    }
// }}}

//    {{{ function getWhereValue ($arg)
    
function getWhereValue ($arg)
    {
        switch (
$arg['type']) {
            case 
'ident':
            case 
'real_val':
            case 
'int_val':
                
$value $arg['value'];
                break;
            case 
'text_val':
                
$value '\''.$arg['value'].'\'';
                break;
            case 
'subclause':
                
$value '('.$this->compileSearchClause($arg['value']).')';
                break;
            default:
                return 
PEAR::raiseError('Unknown type: '.$arg['type']);
        }
        return 
$value;
    }
//    }}}

//    {{{ function getParams($arg)
    
function getParams($arg)
    {
        for (
$i 0$i sizeof ($arg['type']); $i++) {
            switch (
$arg['type'][$i]) {
                case 
'ident':
                case 
'real_val':
                case 
'int_val':
                    
$value[] = $arg['value'][$i];
                    break;
                case 
'text_val':
                    
$value[] = '\''.$arg['value'][$i].'\'';
                    break;
                default:
                    return 
PEAR::raiseError('Unknown type: '.$arg['type']);
            }
        }
        
$value ='('.implode(', '$value).')';
        return 
$value;
    }
//    }}}

//    {{{ function compileSearchClause
    
function compileSearchClause($where_clause)
    {
        
$value '';
        if (isset (
$where_clause['arg_1']['value'])) {
            
$value $this->getWhereValue ($where_clause['arg_1']);
            if (
PEAR::isError($value)) {
                return 
$value;
            }
            
$sql $value;
        } else {
            
$value $this->compileSearchClause($where_clause['arg_1']);
            if (
PEAR::isError($value)) {
                return 
$value;
            }
            
$sql $value;
        }
        if (isset (
$where_clause['op'])) {
            if (
$where_clause['op'] == 'in') {
                
$value $this->getParams($where_clause['arg_2']);
                if (
PEAR::isError($value)) {
                    return 
$value;
                }
                
$sql .= ' '.$where_clause['op'].' '.$value;
            } elseif (
$where_clause['op'] == 'is') {
                if (isset (
$where_clause['neg'])) {
                    
$value 'not null';
                } else {
                    
$value 'null';
                }
                
$sql .= ' is '.$value;
            } else {
                
$sql .= ' '.$where_clause['op'].' ';
                if (isset (
$where_clause['arg_2']['value'])) {
                    
$value $this->getWhereValue ($where_clause['arg_2']);
                    if (
PEAR::isError($value)) {
                        return 
$value;
                    }
                    
$sql .= $value;
                } else {
                    
$value $this->compileSearchClause($where_clause['arg_2']);
                    if (
PEAR::isError($value)) {
                        return 
$value;
                    }
                    
$sql .= $value;
                }
            }
        }
        return 
$sql;
    }
//    }}}

//    {{{ function compileSelect()
    
function compileSelect()
    {
        
// save the command and set quantifiers
        
$sql 'select ';
        if (isset(
$this->tree['set_quantifier'])) {
            
$sql .= $this->tree['set_quantifier'].' ';
        }
        
        
// save the column names and set functions
        
for ($i 0$i sizeof ($this->tree['column_names']); $i++) {
            
$column $this->tree['column_names'][$i];
            if (
$this->tree['column_aliases'][$i] != '') {
                
$column .= ' as '.$this->tree['column_aliases'][$i];
            }
            
$column_names[] = $column;
        }
        for (
$i 0$i sizeof ($this->tree['set_function']); $i++) {
            
$column $this->tree['set_function'][$i]['name'].'(';
            if (isset (
$this->tree['set_function'][$i]['distinct'])) {
                
$column .= 'distinct ';
            }
            if (isset (
$this->tree['set_function'][$i]['arg'])) {
                
$column .= implode (','$this->tree['set_function'][$i]['arg']);
            }
            
$column .= ')';
            if (
$this->tree['set_function'][$i]['alias'] != '') {
                
$column .= ' as '.$this->tree['set_function'][$i]['alias'];
            }
            
$column_names[] = $column;
        }
        if (isset(
$column_names)) {
            
$sql .= implode (", "$column_names);
        }
        
        
// save the tables
        
$sql .= ' from ';
        for (
$i 0$i sizeof ($this->tree['table_names']); $i++) {
            
$sql .= $this->tree['table_names'][$i];
            if (
$this->tree['table_aliases'][$i] != '') {
                
$sql .= ' as '.$this->tree['table_aliases'][$i];
            }
            if (
$this->tree['table_join_clause'][$i] != '') {
                
$search_string $this->compileSearchClause ($this->tree['table_join_clause'][$i]);
                if (
PEAR::isError($search_string)) {
                    return 
$search_string;
                }
                
$sql .= ' on '.$search_string;
            }
            if (isset(
$this->tree['table_join'][$i])) {
                
$sql .= ' '.$this->tree['table_join'][$i].' ';
            }
        }
        
        
// save the where clause
        
if (isset($this->tree['where_clause'])) {
            
$search_string $this->compileSearchClause ($this->tree['where_clause']);
            if (
PEAR::isError($search_string)) {
                return 
$search_string;
            }
            
$sql .= ' where '.$search_string;
        }
        
        
// save the group by clause
        
if (isset ($this->tree['group_by'])) {
            
$sql .= ' group by '.implode(', '$this->tree['group_by']);
        }

        
// save the order by clause
        
if (isset ($this->tree['sort_order'])) {
            foreach (
$this->tree['sort_order'] as $key => $value) {
                
$sort_order[] = $key.' '.$value;
            }
            
$sql .= ' order by '.implode(', '$sort_order);
        }
        
        
// save the limit clause
        
if (isset ($this->tree['limit_clause'])) {
            
$sql .= ' limit '.$this->tree['limit_clause']['start'].','.$this->tree['limit_clause']['length'];
        }
        
        return 
$sql;
    }
//    }}}

//    {{{ function compileUpdate()
    
function compileUpdate()
    {
        
$sql 'update '.implode(', '$this->tree['table_names']);
        
        
// save the set clause
        
for ($i 0$i sizeof ($this->tree['column_names']); $i++) {
            
$set_columns[] = $this->tree['column_names'][$i].' = '.$this->getWhereValue($this->tree['values'][$i]);
        }
        
$sql .= ' set '.implode (', '$set_columns);
        
        
// save the where clause
        
if (isset($this->tree['where_clause'])) {
            
$search_string $this->compileSearchClause ($this->tree['where_clause']);
            if (
PEAR::isError($search_string)) {
                return 
$search_string;
            }
            
$sql .= ' where '.$search_string;
        }
        return 
$sql;
    }
//    }}}

//    {{{ function compileDelete()
    
function compileDelete()
    {
        
$sql 'delete from '.implode(', '$this->tree['table_names']);
        
        
// save the where clause
        
if (isset($this->tree['where_clause'])) {
            
$search_string $this->compileSearchClause ($this->tree['where_clause']);
            if (
PEAR::isError($search_string)) {
                return 
$search_string;
            }
            
$sql .= ' where '.$search_string;
        }
        return 
$sql;
    }
//    }}}

//    {{{ function compileInsert()
    
function compileInsert()
    {
        
$sql 'insert into '.$this->tree['table_names'][0].' ('.
                
implode(', '$this->tree['column_names']).') values (';
        for (
$i 0$i sizeof ($this->tree['values']); $i++) {
            
$value $this->getWhereValue ($this->tree['values'][$i]);
            if (
PEAR::isError($value)) {
                return 
$value;
            }
            
$value_array[] = $value;
        }
        
$sql .= implode(', '$value_array).')';
        return 
$sql;
    }
//    }}}

//    {{{ function compile($array = null)
    
function compile($array null)
    {
        
$this->tree $array;
        
        switch (
$this->tree['command']) {
            case 
'select':
                return 
$this->compileSelect();
                break;
            case 
'update':
                return 
$this->compileUpdate();
                break;
            case 
'delete':
                return 
$this->compileDelete();
                break;
            case 
'insert':
                return 
$this->compileInsert();
                break;
            case 
'create':
            case 
'drop':
            case 
'modify':
            default:
                return 
PEAR::raiseError('Unknown action: '.$this->tree['command']);
        }    
// switch ($this->_tree["command"])

    
}
//    }}}
}
?>


:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0468 ]--