!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)

E:\xampp\xampp\php\PEAR\Zend\File\Transfer\Adapter\   drwxrwxrwx
Free 7.95 GB of 239.26 GB (3.32%)
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:     Http.php (13.97 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_File_Transfer
 * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: Http.php 16971 2009-07-22 18:05:45Z mikaelkael $
 */

/**
 * @see Zend_File_Transfer_Adapter_Abstract
 */
require_once 'Zend/File/Transfer/Adapter/Abstract.php';

/**
 * File transfer adapter class for the HTTP protocol
 *
 * @category  Zend
 * @package   Zend_File_Transfer
 * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_File_Transfer_Adapter_Http extends Zend_File_Transfer_Adapter_Abstract
{
    protected static 
$_callbackApc            'apc_fetch';
    protected static 
$_callbackUploadProgress 'uploadprogress_get_info';

    
/**
     * Constructor for Http File Transfers
     *
     * @param array $options OPTIONAL Options to set
     */
    
public function __construct($options = array())
    {
        if (
ini_get('file_uploads') == false) {
            require_once 
'Zend/File/Transfer/Exception.php';
            throw new 
Zend_File_Transfer_Exception('File uploads are not allowed in your php config!');
        }

        
$this->_files $this->_prepareFiles($_FILES);
        
$this->addValidator('Upload'false$this->_files);

        if (
is_array($options)) {
            
$this->setOptions($options);
        }
    }

    
/**
     * Sets a validator for the class, erasing all previous set
     *
     * @param  string|array $validator Validator to set
     * @param  string|array $files     Files to limit this validator to
     * @return Zend_File_Transfer_Adapter
     */
    
public function setValidators(array $validators$files null)
    {
        
$this->clearValidators();
        return 
$this->addValidators($validators$files);
    }

    
/**
     * Remove an individual validator
     *
     * @param  string $name
     * @return Zend_File_Transfer_Adapter_Abstract
     */
    
public function removeValidator($name)
    {
        if (
$name == 'Upload') {
            return 
$this;
        }

        return 
parent::removeValidator($name);
    }

    
/**
     * Remove an individual validator
     *
     * @param  string $name
     * @return Zend_File_Transfer_Adapter_Abstract
     */
    
public function clearValidators()
    {
        
parent::clearValidators();
        
$this->addValidator('Upload'false$this->_files);

        return 
$this;
    }

    
/**
     * Send the file to the client (Download)
     *
     * @param  string|array $options Options for the file(s) to send
     * @return void
     * @throws Zend_File_Transfer_Exception Not implemented
     */
    
public function send($options null)
    {
        require_once 
'Zend/File/Transfer/Exception.php';
        throw new 
Zend_File_Transfer_Exception('Method not implemented');
    }

    
/**
     * Checks if the files are valid
     *
     * @param  string|array $files (Optional) Files to check
     * @return boolean True if all checks are valid
     */
    
public function isValid($files null)
    {
        
// Workaround for a PHP error returning empty $_FILES when form data exceeds php settings
        
if (empty($this->_files) && ($_SERVER['CONTENT_LENGTH'] > 0)) {
            if (
is_array($files)) {
                
$files current($files);
            }

            
$temp = array($files => array(
                
'name'  => $files,
                
'error' => 1));
            
$validator $this->_validators['Zend_Validate_File_Upload'];
            
$validator->setFiles($temp)
                      ->
isValid($filesnull);
            
$this->_messages += $validator->getMessages();
            return 
false;
        }

        return 
parent::isValid($files);
    }

    
/**
     * Receive the file from the client (Upload)
     *
     * @param  string|array $files (Optional) Files to receive
     * @return bool
     */
    
public function receive($files null)
    {
        if (!
$this->isValid($files)) {
            return 
false;
        }

        
$check $this->_getFiles($files);
        foreach (
$check as $file => $content) {
            if (!
$content['received']) {
                
$directory   '';
                
$destination $this->getDestination($file);
                if (
$destination !== null) {
                    
$directory $destination DIRECTORY_SEPARATOR;
                }

                
$filename $directory $content['name'];
                
$rename   $this->getFilter('Rename');
                if (
$rename !== null) {
                    
$tmp $rename->getNewName($content['tmp_name']);
                    if (
$tmp != $content['tmp_name']) {
                        
$filename $tmp;
                    }

                    if (
dirname($filename) == '.') {
                        
$filename $directory $filename;
                    }

                    
$key array_search(get_class($rename), $this->_files[$file]['filters']);
                    unset(
$this->_files[$file]['filters'][$key]);
                }

                
// Should never return false when it's tested by the upload validator
                
if (!move_uploaded_file($content['tmp_name'], $filename)) {
                    if (
$content['options']['ignoreNoFile']) {
                        
$this->_files[$file]['received'] = true;
                        
$this->_files[$file]['filtered'] = true;
                        continue;
                    }

                    
$this->_files[$file]['received'] = false;
                    return 
false;
                }

                if (
$rename !== null) {
                    
$this->_files[$file]['destination'] = dirname($filename);
                    
$this->_files[$file]['name']        = basename($filename);
                }

                
$this->_files[$file]['tmp_name'] = $filename;
                
$this->_files[$file]['received'] = true;
            }

            if (!
$content['filtered']) {
                if (!
$this->_filter($file)) {
                    
$this->_files[$file]['filtered'] = false;
                    return 
false;
                }

                
$this->_files[$file]['filtered'] = true;
            }
        }

        return 
true;
    }

    
/**
     * Checks if the file was already sent
     *
     * @param  string|array $file Files to check
     * @return bool
     * @throws Zend_File_Transfer_Exception Not implemented
     */
    
public function isSent($files null)
    {
        require_once 
'Zend/File/Transfer/Exception.php';
        throw new 
Zend_File_Transfer_Exception('Method not implemented');
    }

    
/**
     * Checks if the file was already received
     *
     * @param  string|array $files (Optional) Files to check
     * @return bool
     */
    
public function isReceived($files null)
    {
        
$files $this->_getFiles($filesfalsetrue);
        if (empty(
$files)) {
            return 
false;
        }

        foreach (
$files as $content) {
            if (
$content['received'] !== true) {
                return 
false;
            }
        }

        return 
true;
    }

    
/**
     * Checks if the file was already filtered
     *
     * @param  string|array $files (Optional) Files to check
     * @return bool
     */
    
public function isFiltered($files null)
    {
        
$files $this->_getFiles($filesfalsetrue);
        if (empty(
$files)) {
            return 
false;
        }

        foreach (
$files as $content) {
            if (
$content['filtered'] !== true) {
                return 
false;
            }
        }

        return 
true;
    }

    
/**
     * Has a file been uploaded ?
     *
     * @param  array|string|null $file
     * @return bool
     */
    
public function isUploaded($files null)
    {
        
$files $this->_getFiles($filesfalsetrue);
        if (empty(
$files)) {
            return 
false;
        }

        foreach (
$files as $file) {
            if (empty(
$file['name'])) {
                return 
false;
            }
        }

        return 
true;
    }

    
/**
     * Returns the actual progress of file up-/downloads
     *
     * @param  string $id The upload to get the progress for
     * @return array|null
     */
    
public static function getProgress($id null)
    {
        if (!
function_exists('apc_fetch') and !function_exists('uploadprogress_get_info')) {
            require_once 
'Zend/File/Transfer/Exception.php';
            throw new 
Zend_File_Transfer_Exception('Wether APC nor uploadprogress extension installed');
        }

        
$session 'Zend_File_Transfer_Adapter_Http_ProgressBar';
        
$status  = array(
            
'total'    => 0,
            
'current'  => 0,
            
'rate'     => 0,
            
'message'  => '',
            
'done'     => false
        
);

        if (
is_array($id)) {
            if (isset(
$id['progress'])) {
                
$adapter $id['progress'];
            }

            if (isset(
$id['session'])) {
                
$session $id['session'];
            }

            if (isset(
$id['id'])) {
                
$id $id['id'];
            } else {
                unset(
$id);
            }
        }

        if (!empty(
$id) && (($id instanceof Zend_ProgressBar_Adapter) || ($id instanceof Zend_ProgressBar))) {
            
$adapter $id;
            unset(
$id);
        }

        if (empty(
$id)) {
            if (!isset(
$_GET['progress_key'])) {
                
$status['message'] = 'No upload in progress';
                
$status['done']    = true;
            } else {
                
$id $_GET['progress_key'];
            }
        }

        if (!empty(
$id)) {
            if (
self::isApcAvailable()) {

                
$call call_user_func(self::$_callbackApc'upload_' $id);
                if (
is_array($call)) {
                    
$status $call $status;
                }
            } else if (
self::isUploadProgressAvailable()) {
                
$call call_user_func(self::$_callbackUploadProgress$id);
                if (
is_array($call)) {
                    
$status $call $status;
                    
$status['total']   = $status['bytes_total'];
                    
$status['current'] = $status['bytes_uploaded'];
                    
$status['rate']    = $status['speed_average'];
                    if (
$status['total'] == $status['current']) {
                        
$status['done'] = true;
                    }
                }
            }

            if (!
is_array($call)) {
                
$status['done']    = true;
                
$status['message'] = 'Failure while retrieving the upload progress';
            } else if (!empty(
$status['cancel_upload'])) {
                
$status['done']    = true;
                
$status['message'] = 'The upload has been canceled';
            } else {
                
$status['message'] = self::_toByteString($status['current']) . " - " self::_toByteString($status['total']);
            }

            
$status['id'] = $id;
        }

        if (isset(
$adapter) && isset($status['id'])) {
            if (
$adapter instanceof Zend_ProgressBar_Adapter) {
                require_once 
'Zend/ProgressBar.php';
                
$adapter = new Zend_ProgressBar($adapter0$status['total'], $session);
            }

            if (!(
$adapter instanceof Zend_ProgressBar)) {
                require_once 
'Zend/File/Transfer/Exception.php';
                throw new 
Zend_File_Transfer_Exception('Unknown Adapter given');
            }

            if (
$status['done']) {
                
$adapter->finish();
            } else {
                
$adapter->update($status['current'], $status['message']);
            }

            
$status['progress'] = $adapter;
        }

        return 
$status;
    }

    
/**
     * Checks the APC extension for progress information
     *
     * @return boolean
     */
    
public static function isApcAvailable()
    {
        return (bool) 
ini_get('apc.enabled') && (bool) ini_get('apc.rfc1867') && is_callable(self::$_callbackApc);
    }

    
/**
     * Checks the UploadProgress extension for progress information
     *
     * @return boolean
     */
    
public static function isUploadProgressAvailable()
    {
        return 
is_callable(self::$_callbackUploadProgress);
    }

    
/**
     * Prepare the $_FILES array to match the internal syntax of one file per entry
     *
     * @param  array $files
     * @return array
     */
    
protected function _prepareFiles(array $files = array())
    {
        
$result = array();
        foreach (
$files as $form => $content) {
            if (
is_array($content['name'])) {
                foreach (
$content as $param => $file) {
                    foreach (
$file as $number => $target) {
                        
$result[$form '_' $number '_'][$param]      = $target;
                        
$result[$form '_' $number '_']['options']   = $this->_options;
                        
$result[$form '_' $number '_']['validated'] = false;
                        
$result[$form '_' $number '_']['received']  = false;
                        
$result[$form '_' $number '_']['filtered']  = false;
                        
$result[$form]['multifiles'][$number] = $form '_' $number '_';
                        
$result[$form]['name'] = $form;
                    }
                }
            } else {
                
$result[$form]              = $content;
                
$result[$form]['options']   = $this->_options;
                
$result[$form]['validated'] = false;
                
$result[$form]['received']  = false;
                
$result[$form]['filtered']  = false;
            }
        }

        return 
$result;
    }
}

:: 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.0156 ]--