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

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/var/www/html/queuepro/vendor/spatie/laravel-ignition/src/   drwxrwxr-x
Free 13.06 GB of 57.97 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:     IgnitionServiceProvider.php (11.67 KB)      -rwxrwxr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace Spatie\LaravelIgnition;

use 
Illuminate\Contracts\Debug\ExceptionHandler;
use 
Illuminate\Foundation\Application;
use 
Illuminate\Support\Facades\Log;
use 
Illuminate\Support\Facades\Route;
use 
Illuminate\Support\ServiceProvider;
use 
Illuminate\View\ViewException;
use 
Laravel\Octane\Events\RequestReceived;
use 
Laravel\Octane\Events\TaskReceived;
use 
Laravel\Octane\Events\TickReceived;
use 
Monolog\Logger;
use 
Spatie\FlareClient\Flare;
use 
Spatie\FlareClient\FlareMiddleware\AddSolutions;
use 
Spatie\Ignition\Config\IgnitionConfig;
use 
Spatie\Ignition\Contracts\SolutionProviderRepository as SolutionProviderRepositoryContract;
use 
Spatie\Ignition\Ignition;
use 
Spatie\LaravelIgnition\Commands\SolutionMakeCommand;
use 
Spatie\LaravelIgnition\Commands\SolutionProviderMakeCommand;
use 
Spatie\LaravelIgnition\Commands\TestCommand;
use 
Spatie\LaravelIgnition\Exceptions\InvalidConfig;
use 
Spatie\LaravelIgnition\FlareMiddleware\AddJobs;
use 
Spatie\LaravelIgnition\FlareMiddleware\AddLogs;
use 
Spatie\LaravelIgnition\FlareMiddleware\AddQueries;
use 
Spatie\LaravelIgnition\Http\Controllers\ExecuteSolutionController;
use 
Spatie\LaravelIgnition\Http\Controllers\HealthCheckController;
use 
Spatie\LaravelIgnition\Http\Controllers\UpdateConfigController;
use 
Spatie\LaravelIgnition\Http\Middleware\RunnableSolutionsEnabled;
use 
Spatie\LaravelIgnition\Recorders\DumpRecorder\DumpRecorder;
use 
Spatie\LaravelIgnition\Recorders\JobRecorder\JobRecorder;
use 
Spatie\LaravelIgnition\Recorders\LogRecorder\LogRecorder;
use 
Spatie\LaravelIgnition\Recorders\QueryRecorder\QueryRecorder;
use 
Spatie\LaravelIgnition\Renderers\IgnitionExceptionRenderer;
use 
Spatie\LaravelIgnition\Renderers\IgnitionWhoopsHandler;
use 
Spatie\LaravelIgnition\Solutions\SolutionProviders\SolutionProviderRepository;
use 
Spatie\LaravelIgnition\Support\FlareLogHandler;
use 
Spatie\LaravelIgnition\Support\SentReports;
use 
Spatie\LaravelIgnition\Views\ViewExceptionMapper;

class 
IgnitionServiceProvider extends ServiceProvider
{
    public function 
register(): void
    
{
        
$this->registerConfig();
        
$this->registerFlare();
        
$this->registerIgnition();
        
$this->registerRenderer();
        
$this->registerRecorders();
    }

    public function 
boot()
    {
        if (
$this->app->runningInConsole()) {
            
$this->registerCommands();
            
$this->publishConfigs();
        }

        
$this->configureTinker();
        
$this->configureOctane();
        
$this->registerViewExceptionMapper();
        
$this->registerRoutes();
        
$this->registerLogHandler();
        
$this->startRecorders();
        
$this->configureQueue();
    }

    protected function 
registerConfig(): void
    
{
        
$this->mergeConfigFrom(__DIR__ '/../config/flare.php''flare');
        
$this->mergeConfigFrom(__DIR__ '/../config/ignition.php''ignition');
    }

    protected function 
registerCommands(): void
    
{
        if (
$this->app['config']->get('flare.key')) {
            
$this->commands([
                
TestCommand::class,
            ]);
        }

        if (
$this->app['config']->get('ignition.register_commands')) {
            
$this->commands([
                
SolutionMakeCommand::class,
                
SolutionProviderMakeCommand::class,
            ]);
        }
    }

    protected function 
publishConfigs(): void
    
{
        
$this->publishes([
            
__DIR__ '/../config/flare.php' => config_path('flare.php'),
            
__DIR__ '/../config/ignition.php' => config_path('ignition.php'),
        ]);
    }

    protected function 
registerRenderer(): void
    
{
        if (
interface_exists('Whoops\Handler\HandlerInterface')) {
            
$this->app->bind(
                
'Whoops\Handler\HandlerInterface',
                fn (
Application $app) => $app->make(IgnitionWhoopsHandler::class)
            );
        }


        if (
interface_exists('Illuminate\Contracts\Foundation\ExceptionRenderer')) {
            
$this->app->bind(
                
'Illuminate\Contracts\Foundation\ExceptionRenderer',
                fn (
Application $app) => $app->make(IgnitionExceptionRenderer::class)
            );
        }
    }

    protected function 
registerFlare(): void
    
{
        
$this->app->singleton(Flare::class, function () {
            return 
Flare::make()
                ->
setApiToken(config('flare.key') ?? '')
                ->
setBaseUrl(config('flare.base_url''https://flareapp.io/api'))
                ->
setStage(config('app.env'))
                ->
registerMiddleware($this->getFlareMiddleware())
                ->
registerMiddleware(new AddSolutions(new SolutionProviderRepository($this->getSolutionProviders())));
        });

        
$this->app->singleton(SentReports::class);
    }

    protected function 
registerIgnition(): void
    
{
        
$ignitionConfig = (new IgnitionConfig())
            ->
merge(config('ignition'))
            ->
loadConfigFile();

        
$solutionProviders $this->getSolutionProviders();
        
$solutionProviderRepository = new SolutionProviderRepository($solutionProviders);

        
$this->app->singleton(IgnitionConfig::class, fn () => $ignitionConfig);

        
$this->app->singleton(SolutionProviderRepositoryContract::class, fn () => $solutionProviderRepository);

        
$this->app->singleton(Ignition::class, fn () => (new Ignition()));
    }

    protected function 
registerRecorders(): void
    
{
        
$this->app->singleton(DumpRecorder::class);

        
$this->app->singleton(LogRecorder::class, function (Application $app): LogRecorder {
            return new 
LogRecorder(
                
$app,
                
config()->get('flare.flare_middleware' AddLogs::class . 'maximum_number_of_collected_logs')
            );
        });

        
$this->app->singleton(
            
QueryRecorder::class,
            function (
Application $app): QueryRecorder {
                return new 
QueryRecorder(
                    
$app,
                    
config()->get('flare.flare_middleware.' AddQueries::class . '.report_query_bindings'),
                    
config()->get('flare.flare_middleware.' AddQueries::class . '.maximum_number_of_collected_queries')
                );
            }
        );

        
$this->app->singleton(JobRecorder::class, function (Application $app): JobRecorder {
            return new 
JobRecorder(
                
$app,
                
config()->get('flare.flare_middleware.' AddJobs::class . '.max_chained_job_reporting_depth')
            );
        });
    }

    public function 
configureTinker(): void
    
{
        if (! 
$this->app->runningInConsole()) {
            if (isset(
$_SERVER['argv']) && ['artisan''tinker'] === $_SERVER['argv']) {
                
app(Flare::class)->sendReportsImmediately();
            }
        }
    }

    protected function 
configureOctane(): void
    
{
        if (isset(
$_SERVER['LARAVEL_OCTANE'])) {
            
$this->setupOctane();
        }
    }

    protected function 
registerViewExceptionMapper(): void
    
{
        
$handler $this->app->make(ExceptionHandler::class);

        if (! 
method_exists($handler'map')) {
            return;
        }

        
$handler->map(function (ViewException $viewException) {
            return 
$this->app->make(ViewExceptionMapper::class)->map($viewException);
        });
    }

    protected function 
registerRoutes(): void
    
{
        
Route::group([
            
'as' => 'ignition.',
            
'prefix' => config('ignition.housekeeping_endpoint_prefix'),
            
'middleware' => [RunnableSolutionsEnabled::class],
        ], function () {
            
Route::get('health-check'HealthCheckController::class)->name('healthCheck');

            
Route::post('execute-solution'ExecuteSolutionController::class)
                ->
name('executeSolution');

            
Route::post('update-config'UpdateConfigController::class)->name('updateConfig');
        });
    }

    protected function 
registerLogHandler(): void
    
{
        
$this->app->singleton('flare.logger', function ($app) {
            
$handler = new FlareLogHandler(
                
$app->make(Flare::class),
                
$app->make(SentReports::class),
            );

            
$logLevelString config('logging.channels.flare.level''error');

            
$logLevel $this->getLogLevel($logLevelString);

            
$handler->setMinimumReportLogLevel($logLevel);

            return 
tap(
                new 
Logger('Flare'),
                fn (
Logger $logger) => $logger->pushHandler($handler)
            );
        });

        
Log::extend('flare', fn ($app) => $app['flare.logger']);
    }

    protected function 
startRecorders(): void
    
{
        
// TODO: Ignition feature toggles

        
$this->app->make(DumpRecorder::class)->start();

        
$this->app->make(LogRecorder::class)->start();

        
$this->app->make(QueryRecorder::class)->start();

        
$this->app->make(JobRecorder::class)->start();
    }

    protected function 
configureQueue(): void
    
{
        if (! 
$this->app->bound('queue')) {
            return;
        }

        
$queue $this->app->get('queue');

        
// Reset before executing a queue job to make sure the job's log/query/dump recorders are empty.
        // When using a sync queue this also reports the queued reports from previous exceptions.
        
$queue->before(function () {
            
$this->resetFlareAndLaravelIgnition();
        });

        
// Send queued reports (and reset) after executing a queue job.
        
$queue->after(function () {
            
$this->resetFlareAndLaravelIgnition();
        });

        
// Note: the $queue->looping() event can't be used because it's not triggered on Vapor
    
}

    protected function 
getLogLevel(string $logLevelString): int
    
{
        
$logLevel Logger::getLevels()[strtoupper($logLevelString)] ?? null;

        if (! 
$logLevel) {
            throw 
InvalidConfig::invalidLogLevel($logLevelString);
        }

        return 
$logLevel;
    }

    protected function 
getFlareMiddleware(): array
    {
        return 
collect(config('flare.flare_middleware'))
            ->
map(function ($value$key) {
                if (
is_string($key)) {
                    
$middlewareClass $key;
                    
$parameters $value ?? [];
                } else {
                    
$middlewareClass $value;
                    
$parameters = [];
                }

                return new 
$middlewareClass(...array_values($parameters));
            })
            ->
values()
            ->
toArray();
    }

    protected function 
getSolutionProviders(): array
    {
        return 
collect(config('ignition.solution_providers'))
            ->
reject(
                fn (
string $class) => in_array($classconfig('ignition.ignored_solution_providers'))
            )
            ->
toArray();
    }

    protected function 
setupOctane(): void
    
{
        
$this->app['events']->listen(RequestReceived::class, function () {
            
$this->resetFlareAndLaravelIgnition();
        });

        
$this->app['events']->listen(TaskReceived::class, function () {
            
$this->resetFlareAndLaravelIgnition();
        });

        
$this->app['events']->listen(TickReceived::class, function () {
            
$this->resetFlareAndLaravelIgnition();
        });
    }

    protected function 
resetFlareAndLaravelIgnition(): void
    
{
        
$this->app->get(SentReports::class)->clear();
        
$this->app->get(Ignition::class)->reset();

        if (
config('flare.flare_middleware.' AddLogs::class)) {
            
$this->app->make(LogRecorder::class)->reset();
        }

        if (
config('flare.flare_middleware.' AddQueries::class)) {
            
$this->app->make(QueryRecorder::class)->reset();
        }

        if (
config('flare.flare_middleware.' AddJobs::class)) {
            
$this->app->make(JobRecorder::class)->reset();
        }

        
$this->app->make(DumpRecorder::class)->reset();
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0064 ]--