CasperSecurity

Current Path : /var/www/DbSyncProject_Uiet_Library_DB/vendor/facade/ignition/src/Actions/
Upload File :
Current File : /var/www/DbSyncProject_Uiet_Library_DB/vendor/facade/ignition/src/Actions/ShareReportAction.php

<?php

namespace Facade\Ignition\Actions;

use Exception;
use Facade\FlareClient\Http\Client;
use Facade\FlareClient\Truncation\ReportTrimmer;
use Facade\Ignition\Exceptions\UnableToShareErrorException;
use Illuminate\Support\Arr;
use Illuminate\Support\Collection;

class ShareReportAction
{
    /** @var array */
    protected $tabs;

    /** @var \Facade\FlareClient\Http\Client */
    protected $client;

    public function __construct(Client $client)
    {
        $this->client = $client;
    }

    public function handle(array $report, array $tabs, ?string $lineSelection = null)
    {
        $this->tabs = $tabs;

        $report = $this->filterReport($report);

        try {
            return $this->client->post('public-reports', [
                'report' => $this->trimReport($report),
                'tabs' => $tabs,
                'lineSelection' => $lineSelection,
            ]);
        } catch (Exception $exception) {
            throw new UnableToShareErrorException($exception->getMessage());
        }
    }

    public function filterReport(array $report): array
    {
        if (! $this->hasTab('stackTraceTab')) {
            $report['stacktrace'] = array_slice($report['stacktrace'], 0, 1);
        }

        if (! $this->hasTab('debugTab')) {
            $report['glows'] = [];
        }

        $report['context'] = $this->filterContextItems($report['context']);

        return $report;
    }

    protected function hasTab(string $tab): bool
    {
        return in_array($tab, $this->tabs);
    }

    protected function filterContextItems(array $contextItems): array
    {
        if (! $this->hasTab('requestTab')) {
            $contextItems = $this->removeRequestInformation($contextItems);
        }

        if (! $this->hasTab('appTab')) {
            $contextItems = $this->removeAppInformation($contextItems);
        }

        if (! $this->hasTab('userTab')) {
            $contextItems = $this->removeUserInformation($contextItems);
        }

        if (! $this->hasTab('contextTab')) {
            $contextItems = $this->removeContextInformation($contextItems);
        }

        if (! $this->hasTab('debugTab')) {
            $contextItems = $this->removeDebugInformation($contextItems);
        }

        return $contextItems;
    }

    protected function removeRequestInformation(array $contextItems): array
    {
        Arr::forget($contextItems, 'request');
        Arr::forget($contextItems, 'request_data');
        Arr::forget($contextItems, 'headers');
        Arr::forget($contextItems, 'session');
        Arr::forget($contextItems, 'cookies');

        return $contextItems;
    }

    protected function removeAppInformation(array $contextItems): array
    {
        Arr::forget($contextItems, 'view');
        Arr::forget($contextItems, 'route');

        return $contextItems;
    }

    protected function removeUserInformation(array $contextItems): array
    {
        Arr::forget($contextItems, 'user');
        Arr::forget($contextItems, 'request.ip');
        Arr::forget($contextItems, 'request.useragent');

        return $contextItems;
    }

    protected function removeContextInformation(array $contextItems): array
    {
        Arr::forget($contextItems, 'env');
        Arr::forget($contextItems, 'git');
        Arr::forget($contextItems, 'context');

        Arr::forget($contextItems, $this->getCustomContextGroups($contextItems));

        return $contextItems;
    }

    protected function removeDebugInformation(array $contextItems): array
    {
        Arr::forget($contextItems, 'dumps');
        Arr::forget($contextItems, 'glows');
        Arr::forget($contextItems, 'logs');
        Arr::forget($contextItems, 'queries');

        return $contextItems;
    }

    protected function getCustomContextGroups(array $contextItems): array
    {
        $predefinedContextItemGroups = [
            'request',
            'request_data',
            'headers',
            'session',
            'cookies',
            'view',
            'queries',
            'route',
            'user',
            'env',
            'git',
            'context',
            'logs',
            'dumps',
        ];

        return Collection::make($contextItems)
            ->reject(function ($value, $group) use ($predefinedContextItemGroups) {
                return in_array($group, $predefinedContextItemGroups);
            })
            ->keys()
            ->toArray();
    }

    protected function trimReport(array $report): array
    {
        return (new ReportTrimmer())->trim($report);
    }
}
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY