!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/classify.picotech.app/public_html/vendor/arcanedev/log-viewer/src/Entities/   drwxr-xr-x
Free 29.13 GB of 117.98 GB (24.69%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

declare(strict_types=1);

namespace 
Arcanedev\LogViewer\Entities;

use 
Arcanedev\LogViewer\Helpers\LogParser;
use 
Carbon\Carbon;
use 
Illuminate\Contracts\Support\{ArrayableJsonable};
use 
JsonSerializable;

/**
 * Class     LogEntry
 *
 * @author   ARCANEDEV <arcanedev.maroc@gmail.com>
 */
class LogEntry implements ArrayableJsonableJsonSerializable
{
    
/* -----------------------------------------------------------------
     |  Properties
     | -----------------------------------------------------------------
     */

    /** @var string */
    
public $env;

    
/** @var string */
    
public $level;

    
/** @var \Carbon\Carbon */
    
public $datetime;

    
/** @var string */
    
public $header;

    
/** @var string */
    
public $stack;

    
/** @var array */
    
public $context = [];

    
/* -----------------------------------------------------------------
     |  Constructor
     | -----------------------------------------------------------------
     */

    /**
     * Construct the log entry instance.
     *
     * @param  string       $level
     * @param  string       $header
     * @param  string|null  $stack
     */
    
public function __construct($level$header$stack null)
    {
        
$this->setLevel($level);
        
$this->setHeader($header);
        
$this->setStack($stack);
    }

    
/* -----------------------------------------------------------------
     |  Getters & Setters
     | -----------------------------------------------------------------
     */

    /**
     * Set the entry level.
     *
     * @param  string  $level
     *
     * @return self
     */
    
private function setLevel($level)
    {
        
$this->level $level;

        return 
$this;
    }

    
/**
     * Set the entry header.
     *
     * @param  string  $header
     *
     * @return self
     */
    
private function setHeader($header)
    {
        
$this->setDatetime($this->extractDatetime($header));

        
$header $this->cleanHeader($header);

        
$this->header trim($header);

        return 
$this;
    }

    
/**
     * Set the context.
     *
     * @param  array  $context
     *
     * @return $this
     */
    
private function setContext(array $context)
    {
        
$this->context $context;

        return 
$this;
    }

    
/**
     * Set entry environment.
     *
     * @param  string  $env
     *
     * @return self
     */
    
private function setEnv($env)
    {
        
$this->env head(explode('.'$env));

        return 
$this;
    }

    
/**
     * Set the entry date time.
     *
     * @param  string  $datetime
     *
     * @return \Arcanedev\LogViewer\Entities\LogEntry
     */
    
private function setDatetime($datetime)
    {
        
$this->datetime Carbon::createFromFormat('Y-m-d H:i:s'$datetime);

        return 
$this;
    }

    
/**
     * Set the entry stack.
     *
     * @param  string  $stack
     *
     * @return self
     */
    
private function setStack($stack)
    {
        
$this->stack $stack;

        return 
$this;
    }

    
/**
     * Get translated level name with icon.
     *
     * @return string
     */
    
public function level()
    {
        return 
$this->icon()->toHtml().' '.$this->name();
    }

    
/**
     * Get translated level name.
     *
     * @return string
     */
    
public function name()
    {
        return 
log_levels()->get($this->level);
    }

    
/**
     * Get level icon.
     *
     * @return \Illuminate\Support\HtmlString
     */
    
public function icon()
    {
        return 
log_styler()->icon($this->level);
    }

    
/**
     * Get the entry stack.
     *
     * @return string
     */
    
public function stack()
    {
        return 
trim(htmlentities($this->stack));
    }

    
/**
     * Get the entry context as json pretty print.
     */
    
public function context(int $options JSON_PRETTY_PRINT): string
    
{
        return 
json_encode($this->context$options);
    }

    
/* -----------------------------------------------------------------
     |  Check Methods
     | -----------------------------------------------------------------
     */

    /**
     * Check if same log level.
     *
     * @param  string  $level
     *
     * @return bool
     */
    
public function isSameLevel($level)
    {
        return 
$this->level === $level;
    }

    
/* -----------------------------------------------------------------
     |  Convert Methods
     | -----------------------------------------------------------------
     */

    /**
     * Get the log entry as an array.
     *
     * @return array
     */
    
public function toArray()
    {
        return [
            
'level'    => $this->level,
            
'datetime' => $this->datetime->format('Y-m-d H:i:s'),
            
'header'   => $this->header,
            
'stack'    => $this->stack
        
];
    }

    
/**
     * Convert the log entry to its JSON representation.
     *
     * @param  int  $options
     *
     * @return string
     */
    
public function toJson($options 0)
    {
        return 
json_encode($this->toArray(), $options);
    }

    
/**
     * Serialize the log entry object to json data.
     */
    
public function jsonSerialize(): array
    {
        return 
$this->toArray();
    }

    
/* -----------------------------------------------------------------
     |  Check Methods
     | -----------------------------------------------------------------
     */

    /**
     * Check if the entry has a stack.
     *
     * @return bool
     */
    
public function hasStack()
    {
        return 
$this->stack !== "\n";
    }

    
/**
     * Check if the entry has a context.
     *
     * @return bool
     */
    
public function hasContext()
    {
        return ! empty(
$this->context);
    }

    
/* -----------------------------------------------------------------
     |  Other Methods
     | -----------------------------------------------------------------
     */

    /**
     * Clean the entry header.
     *
     * @param  string  $header
     *
     * @return string
     */
    
private function cleanHeader($header)
    {
        
// REMOVE THE DATE
        
$header preg_replace('/\['.LogParser::REGEX_DATETIME_PATTERN.'\][ ]/'''$header);

        
// EXTRACT ENV
        
if (preg_match('/^[a-z]+.[A-Z]+:/'$header$out)) {
            
$this->setEnv($out[0]);
            
$header trim(str_replace($out[0], ''$header));
        }

        
// EXTRACT CONTEXT (Regex from https://stackoverflow.com/a/21995025)
        
preg_match_all('/{(?:[^{}]|(?R))*}/x'$header$out);
        if (isset(
$out[0][0]) && ! is_null($context json_decode($out[0][0], true))) {
            
$header str_replace($out[0][0], ''$header);
            
$this->setContext($context);
        }

        return 
$header;
    }

    
/**
     * Extract datetime from the header.
     *
     * @param  string  $header
     *
     * @return string
     */
    
private function extractDatetime($header)
    {
        return 
preg_replace('/^\[('.LogParser::REGEX_DATETIME_PATTERN.')\].*/''$1'$header);
    }
}

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