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

Software: Apache/2.0.54 (Fedora). PHP/5.0.4 

uname -a: Linux mina-info.me 2.6.17-1.2142_FC4smp #1 SMP Tue Jul 11 22:57:02 EDT 2006 i686 

uid=48(apache) gid=48(apache) groups=48(apache)
context=system_u:system_r:httpd_sys_script_t
 

Safe-mode: OFF (not secure)

/home/mnnews/public_html/login/phpmyadmin/libraries/   drwxr-xr-x
Free 862.63 MB of 27.03 GB (3.12%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     Response.class.php (10.71 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Manages the rendering of pages in PMA
*
* @package PhpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
    exit;
}

require_once
'libraries/OutputBuffering.class.php';
require_once
'libraries/Header.class.php';
require_once
'libraries/Footer.class.php';

/**
* Singleton class used to manage the rendering of pages in PMA
*
* @package PhpMyAdmin
*/
class PMA_Response
{
    
/**
     * PMA_Response instance
     *
     * @access private
     * @static
     * @var PMA_Response
     */
    
private static $_instance;
    
/**
     * PMA_Header instance
     *
     * @access private
     * @var PMA_Header
     */
    
private $_header;
    
/**
     * HTML data to be used in the response
     *
     * @access private
     * @var string
     */
    
private $_HTML;
    
/**
     * An array of JSON key-value pairs
     * to be sent back for ajax requests
     *
     * @access private
     * @var array
     */
    
private $_JSON;
    
/**
     * PMA_Footer instance
     *
     * @access private
     * @var PMA_Footer
     */
    
private $_footer;
    
/**
     * Whether we are servicing an ajax request.
     * We can't simply use $GLOBALS['is_ajax_request']
     * here since it may have not been initialised yet.
     *
     * @access private
     * @var bool
     */
    
private $_isAjax;
    
/**
     * Whether we are servicing an ajax request for a page
     * that was fired using the generic page handler in JS.
     *
     * @access private
     * @var bool
     */
    
private $_isAjaxPage;
    
/**
     * Whether there were any errors during the processing of the request
     * Only used for ajax responses
     *
     * @access private
     * @var bool
     */
    
private $_isSuccess;
    
/**
     * Workaround for PHP bug
     *
     * @access private
     * @var string|bool
     */
    
private $_CWD;

    
/**
     * Creates a new class instance
     */
    
private function __construct()
    {
        if (!
defined('TESTSUITE')) {
            
$buffer = PMA_OutputBuffering::getInstance();
            
$buffer->start();
            
register_shutdown_function('PMA_Response::response');
        }
        
$this->_header = new PMA_Header();
        
$this->_HTML   = '';
        
$this->_JSON   = array();
        
$this->_footer = new PMA_Footer();

        
$this->_isSuccess  = true;
        
$this->_isAjax     = false;
        
$this->_isAjaxPage = false;
        if (isset(
$_REQUEST['ajax_request']) && $_REQUEST['ajax_request'] == true) {
            
$this->_isAjax = true;
        }
        if (isset(
$_REQUEST['ajax_page_request'])
            &&
$_REQUEST['ajax_page_request'] == true
        
) {
            
$this->_isAjaxPage = true;
        }
        
$this->_header->setAjax($this->_isAjax);
        
$this->_footer->setAjax($this->_isAjax);
        
$this->_CWD = getcwd();
    }

    
/**
     * Returns the singleton PMA_Response object
     *
     * @return PMA_Response object
     */
    
public static function getInstance()
    {
        if (empty(
self::$_instance)) {
            
self::$_instance = new PMA_Response();
        }
        return
self::$_instance;
    }

    
/**
     * Set the status of an ajax response,
     * whether it is a success or an error
     *
     * @param bool $state Whether the request was successfully processed
     *
     * @return void
     */
    
public function isSuccess($state)
    {
        
$this->_isSuccess = ($state == true);
    }

    
/**
     * Returns true or false depending on whether
     * we are servicing an ajax request
     *
     * @return bool
     */
    
public function isAjax()
    {
        return
$this->_isAjax;
    }

    
/**
     * Returns the path to the current working directory
     * Necessary to work around a PHP bug where the CWD is
     * reset after the initial script exits
     *
     * @return string
     */
    
public function getCWD()
    {
        return
$this->_CWD;
    }

    
/**
     * Disables the rendering of the header
     * and the footer in responses
     *
     * @return void
     */
    
public function disable()
    {
        
$this->_header->disable();
        
$this->_footer->disable();
    }

    
/**
     * Returns a PMA_Header object
     *
     * @return PMA_Header
     */
    
public function getHeader()
    {
        return
$this->_header;
    }

    
/**
     * Returns a PMA_Footer object
     *
     * @return PMA_Footer
     */
    
public function getFooter()
    {
        return
$this->_footer;
    }

    
/**
     * Add HTML code to the response
     *
     * @param string $content A string to be appended to
     *                        the current output buffer
     *
     * @return void
     */
    
public function addHTML($content)
    {
        if (
is_array($content)) {
            foreach (
$content as $msg) {
                
$this->addHTML($msg);
            }
        } elseif (
$content instanceof PMA_Message) {
            
$this->_HTML .= $content->getDisplay();
        } else {
            
$this->_HTML .= $content;
        }
    }

    
/**
     * Add JSON code to the response
     *
     * @param mixed $json  Either a key (string) or an
     *                     array or key-value pairs
     * @param mixed $value Null, if passing an array in $json otherwise
     *                     it's a string value to the key
     *
     * @return void
     */
    
public function addJSON($json, $value = null)
    {
        if (
is_array($json)) {
            foreach (
$json as $key => $value) {
                
$this->addJSON($key, $value);
            }
        } else {
            if (
$value instanceof PMA_Message) {
                
$this->_JSON[$json] = $value->getDisplay();
            } else {
                
$this->_JSON[$json] = $value;
            }
        }

    }

    
/**
     * Renders the HTML response text
     *
     * @return string
     */
    
private function _getDisplay()
    {
        
// The header may contain nothing at all,
        // if its content was already rendered
        // and, in this case, the header will be
        // in the content part of the request
        
$retval  = $this->_header->getDisplay();
        
$retval .= $this->_HTML;
        
$retval .= $this->_footer->getDisplay();
        return
$retval;
    }

    
/**
     * Sends an HTML response to the browser
     *
     * @return void
     */
    
private function _htmlResponse()
    {
        echo
$this->_getDisplay();
    }

    
/**
     * Sends a JSON response to the browser
     *
     * @return void
     */
    
private function _ajaxResponse()
    {
        if (! isset(
$this->_JSON['message'])) {
            
$this->_JSON['message'] = $this->_getDisplay();
        } else if (
$this->_JSON['message'] instanceof PMA_Message) {
            
$this->_JSON['message'] = $this->_JSON['message']->getDisplay();
        }

        if (
$this->_isSuccess) {
            
$this->_JSON['success'] = true;
        } else {
            
$this->_JSON['success'] = false;
            
$this->_JSON['error']   = $this->_JSON['message'];
            unset(
$this->_JSON['message']);
        }

        if (
$this->_isSuccess) {
            
// Note: the old judge sentence is:
            // $this->_isAjaxPage && $this->_isSuccess
            // Removal the first, because console need log all queries, if caused any
            // bug, contact Edward Cheng
            
$this->addJSON('_title', $this->getHeader()->getTitleTag());

            if (isset(
$GLOBALS['dbi'])) {
                
$menuHash = $this->getHeader()->getMenu()->getHash();
                
$this->addJSON('_menuHash', $menuHash);
                
$hashes = array();
                if (isset(
$_REQUEST['menuHashes'])) {
                    
$hashes = explode('-', $_REQUEST['menuHashes']);
                }
                if (!
in_array($menuHash, $hashes)) {
                    
$this->addJSON(
                        
'_menu',
                        
$this->getHeader()
                            ->
getMenu()
                            ->
getDisplay()
                    );
                }
            }

            
$this->addJSON('_scripts', $this->getHeader()->getScripts()->getFiles());
            
$this->addJSON('_selflink', $this->getFooter()->getSelfUrl('unencoded'));
            
$this->addJSON('_displayMessage', $this->getHeader()->getMessage());

            
$debug = $this->_footer->getDebugMessage();
            if (empty(
$_REQUEST['no_debug'])
                &&
/*overload*/mb_strlen($debug)
            ) {
                
$this->addJSON('_debug', $debug);
            }

            
$errors = $this->_footer->getErrorMessages();
            if (
/*overload*/mb_strlen($errors)) {
                
$this->addJSON('_errors', $errors);
            }
            
$promptPhpErrors = $GLOBALS['error_handler']->hasErrorsForPrompt();
            
$this->addJSON('_promptPhpErrors', $promptPhpErrors);

            if (empty(
$GLOBALS['error_message'])) {
                
// set current db, table and sql query in the querywindow
                // (this is for the bottom console)
                
$query = '';
                
$maxChars = $GLOBALS['cfg']['MaxCharactersInDisplayedSQL'];
                if (isset(
$GLOBALS['sql_query'])
                    &&
/*overload*/mb_strlen($GLOBALS['sql_query']) < $maxChars
                
) {
                    
$query = $GLOBALS['sql_query'];
                }
                
$this->addJSON(
                    
'_reloadQuerywindow',
                    array(
                        
'db' => PMA_ifSetOr($GLOBALS['db'], ''),
                        
'table' => PMA_ifSetOr($GLOBALS['table'], ''),
                        
'sql_query' => $query
                    
)
                );
                if (! empty(
$GLOBALS['focus_querywindow'])) {
                    
$this->addJSON('_focusQuerywindow', $query);
                }
                if (! empty(
$GLOBALS['reload'])) {
                    
$this->addJSON('_reloadNavigation', 1);
                }
                
$this->addJSON('_params', $this->getHeader()->getJsParams());
            }
        }

        
// Set the Content-Type header to JSON so that jQuery parses the
        // response correctly.
        
if (! defined('TESTSUITE')) {
            
header('Cache-Control: no-cache');
            
header('Content-Type: application/json');
        }

        echo
json_encode($this->_JSON);
    }

    
/**
     * Sends an HTML response to the browser
     *
     * @static
     * @return void
     */
    
public static function response()
    {
        
$response = PMA_Response::getInstance();
        
chdir($response->getCWD());
        
$buffer = PMA_OutputBuffering::getInstance();
        if (empty(
$response->_HTML)) {
            
$response->_HTML = $buffer->getContents();
        }
        if (
$response->isAjax()) {
            
$response->_ajaxResponse();
        } else {
            
$response->_htmlResponse();
        }
        
$buffer->flush();
        exit;
    }
}


:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

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

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