app->singleton('cipher', 'App\Services\Cipher\\'.config('secure.cipher')); $this->app->singleton(\App\Services\Option::class); $this->app->alias(\App\Services\Option::class, 'options'); $this->app->singleton('parsedown', \Parsedown::class); $this->app->singleton(\App\Services\Webpack::class); $this->app->singleton(\App\Services\Filter::class); $this->app->singleton('oauth.providers', function () { return new \Illuminate\Support\Collection(); }); } /** * Bootstrap any application services. * * @return void */ public function boot(Request $request) { // Control the URL generated by url() function $this->configureUrlGenerator($request); Event::listen(Events\RenderingHeader::class, function ($event) { $blessing = [ 'version' => config('app.version'), 'locale' => config('app.locale'), 'fallback_locale' => config('app.fallback_locale'), 'base_url' => url('/'), 'site_name' => option_localized('site_name'), 'route' => request()->path(), 'extra' => [], ]; $event->addContent(''); }); // @codeCoverageIgnoreStart try { $this->app->make('cipher'); } catch (\Illuminate\Contracts\Container\BindingResolutionException $e) { throw new PrettyPageException(trans('errors.cipher.unsupported', ['cipher' => config('secure.cipher')])); } try { if (option('enable_redis') && Redis::ping()) { config([ 'cache.default' => 'redis', 'session.driver' => 'redis', 'queue.default' => 'redis', ]); } } catch (\Exception $e) { } // @codeCoverageIgnoreEnd } /** * Configure the \Illuminate\Routing\UrlGenerator. * * @codeCoverageIgnore */ protected function configureUrlGenerator(Request $request): void { if (!option('auto_detect_asset_url')) { $rootUrl = option('site_url'); // Replace HTTP_HOST with site_url set in options, // to prevent CDN source problems. if ($this->app['url']->isValidUrl($rootUrl)) { $this->app['url']->forceRootUrl($rootUrl); } } /** * Check whether the request is secure or not. * True is always returned when "X-Forwarded-Proto" header is set. * * We define this function because Symfony's "Request::isSecure()" method * needs "setTrustedProxies()" which sucks when load balancer is enabled. */ $isRequestSecure = $request->server('HTTPS') === 'on' || $request->server('HTTP_X_FORWARDED_PROTO') === 'https' || $request->server('HTTP_X_FORWARDED_SSL') === 'on'; if (option('force_ssl') || $isRequestSecure) { $this->app['url']->forceScheme('https'); } } }