!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/vendor/laminas/laminas-diactoros/src/   drwxr-xr-x
Free 26.58 GB of 117.98 GB (22.53%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

declare(strict_types=1);

namespace 
Laminas\Diactoros;

use 
Psr\Http\Message\StreamInterface;

use function 
array_pop;
use function 
implode;
use function 
preg_match;
use function 
sprintf;
use function 
str_replace;
use function 
trim;
use function 
ucwords;

/**
 * Provides base functionality for request and response de/serialization
 * strategies, including functionality for retrieving a line at a time from
 * the message, splitting headers from the body, and serializing headers.
 */
abstract class AbstractSerializer
{
    public const 
CR  "\r";
    public const 
EOL "\r\n";
    public const 
LF  "\n";

    
/**
     * Retrieve a single line from the stream.
     *
     * Retrieves a line from the stream; a line is defined as a sequence of
     * characters ending in a CRLF sequence.
     *
     * @throws Exception\DeserializationException If the sequence contains a CR
     *     or LF in isolation, or ends in a CR.
     */
    
protected static function getLine(StreamInterface $stream): string
    
{
        
$line    '';
        
$crFound false;
        while (! 
$stream->eof()) {
            
$char $stream->read(1);

            if (
$crFound && $char === self::LF) {
                
$crFound false;
                break;
            }

            
// CR NOT followed by LF
            
if ($crFound && $char !== self::LF) {
                throw 
Exception\DeserializationException::forUnexpectedCarriageReturn();
            }

            
// LF in isolation
            
if (! $crFound && $char === self::LF) {
                throw 
Exception\DeserializationException::forUnexpectedLineFeed();
            }

            
// CR found; do not append
            
if ($char === self::CR) {
                
$crFound true;
                continue;
            }

            
// Any other character: append
            
$line .= $char;
        }

        
// CR found at end of stream
        
if ($crFound) {
            throw 
Exception\DeserializationException::forUnexpectedEndOfHeaders();
        }

        return 
$line;
    }

    
/**
     * Split the stream into headers and body content.
     *
     * Returns an array containing two elements
     *
     * - The first is an array of headers
     * - The second is a StreamInterface containing the body content
     *
     * @throws Exception\DeserializationException For invalid headers.
     */
    
protected static function splitStream(StreamInterface $stream): array
    {
        
$headers       = [];
        
$currentHeader false;

        while (
$line self::getLine($stream)) {
            if (
preg_match(';^(?P<name>[!#$%&\'*+.^_`\|~0-9a-zA-Z-]+):(?P<value>.*)$;'$line$matches)) {
                
$currentHeader $matches['name'];
                if (! isset(
$headers[$currentHeader])) {
                    
$headers[$currentHeader] = [];
                }
                
$headers[$currentHeader][] = trim($matches['value'], "\t ");
                continue;
            }

            if (
$currentHeader === false) {
                throw 
Exception\DeserializationException::forInvalidHeader();
            }

            if (! 
preg_match('#^[ \t]#'$line)) {
                throw 
Exception\DeserializationException::forInvalidHeaderContinuation();
            }

            
// Append continuation to last header value found
            
$value                     array_pop($headers[$currentHeader]);
            
$headers[$currentHeader][] = $value ' ' trim($line"\t ");
        }

        
// use RelativeStream to avoid copying initial stream into memory
        
return [$headers, new RelativeStream($stream$stream->tell())];
    }

    
/**
     * Serialize headers to string values.
     *
     * @psalm-param array<string, string[]> $headers
     */
    
protected static function serializeHeaders(array $headers): string
    
{
        
$lines = [];
        foreach (
$headers as $header => $values) {
            
$normalized self::filterHeader($header);
            foreach (
$values as $value) {
                
$lines[] = sprintf('%s: %s'$normalized$value);
            }
        }

        return 
implode("\r\n"$lines);
    }

    
/**
     * Filter a header name to wordcase
     *
     * @param string $header
     */
    
protected static function filterHeader($header): string
    
{
        
$filtered str_replace('-'' '$header);
        
$filtered ucwords($filtered);
        return 
str_replace(' ''-'$filtered);
    }
}

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