From e85f3649d78a9a98872418fc194f4610bd826759 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20R=C3=B6thlisberger?= <9606082+PatrickRoethlisberger@users.noreply.github.com> Date: Wed, 27 Jul 2022 14:53:13 +0200 Subject: [PATCH 1/4] Add admin setting for the sentry environment --- js/src/admin/index.ts | 5 +++++ resources/locale/en.yml | 1 + 2 files changed, 6 insertions(+) diff --git a/js/src/admin/index.ts b/js/src/admin/index.ts index ac21484..63bdb32 100644 --- a/js/src/admin/index.ts +++ b/js/src/admin/index.ts @@ -8,6 +8,11 @@ app.initializers.add('fof/sentry', () => { setting: 'fof-sentry.dsn', type: 'url', }) + .registerSetting({ + label: app.translator.trans('fof-sentry.admin.settings.environment_label'), + setting: 'fof-sentry.environment', + type: 'string', + }) .registerSetting({ label: app.translator.trans('fof-sentry.admin.settings.user_feedback_label'), setting: 'fof-sentry.user_feedback', diff --git a/resources/locale/en.yml b/resources/locale/en.yml index 26441df..37e86c5 100644 --- a/resources/locale/en.yml +++ b/resources/locale/en.yml @@ -2,6 +2,7 @@ fof-sentry: admin: settings: dsn_label: Sentry DSN + environment_label: Sentry Environment user_feedback_label: User Feedback javascript_label: Report JavaScript Errors javascript_console_label: Capture JavaScript Console From 7ea0f9b0b70a0a142525473701010618366367d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20R=C3=B6thlisberger?= <9606082+PatrickRoethlisberger@users.noreply.github.com> Date: Wed, 27 Jul 2022 14:57:53 +0200 Subject: [PATCH 2/4] Add default for fof-sentry.environment setting --- composer.json | 2 +- extend.php | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 232bfe2..6ddd7ad 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ } ], "require": { - "flarum/core": "^1.2.0", + "flarum/core": "^1.3.1", "sentry/sdk": "^3.1.0" }, "authors": [ diff --git a/extend.php b/extend.php index 6d6dbb8..bd6316a 100644 --- a/extend.php +++ b/extend.php @@ -13,6 +13,7 @@ use Flarum\Extend as Flarum; use Flarum\Frontend\RecompileFrontendAssets; +use Flarum\Http\UrlGenerator; use Flarum\Locale\LocaleManager; use Flarum\Settings\Event\Saved; use FoF\Sentry\Middleware\HandleErrorsWithSentry; @@ -58,5 +59,6 @@ }), (new Flarum\Settings()) - ->default('fof-sentry.monitor_performance', 0), + ->default('fof-sentry.monitor_performance', 0) + ->default('fof-sentry.environment', resolve(UrlGenerator::class)->to('forum')->base()), ]; From e0248d5a0e31d7399cfb1d12bb2d7f1dc093147c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20R=C3=B6thlisberger?= <9606082+PatrickRoethlisberger@users.noreply.github.com> Date: Wed, 27 Jul 2022 14:58:35 +0200 Subject: [PATCH 3/4] Add environment set in settings to sentry calls --- src/Content/SentryJavaScript.php | 2 ++ src/SentryServiceProvider.php | 6 ++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Content/SentryJavaScript.php b/src/Content/SentryJavaScript.php index 7818b53..c845936 100644 --- a/src/Content/SentryJavaScript.php +++ b/src/Content/SentryJavaScript.php @@ -35,6 +35,7 @@ public function __invoke(Document $document) } $dsn = $this->settings->get('fof-sentry.dsn'); + $environment = $this->settings->get('fof-sentry.environment'); $showFeedback = (bool) (int) $this->settings->get('fof-sentry.user_feedback'); $captureConsole = (bool) (int) $this->settings->get('fof-sentry.javascript.console'); @@ -56,6 +57,7 @@ public function __invoke(Document $document) if (window.Sentry) { Sentry.init({ dsn: '$dsn', + environment: '$environment', beforeSend: function(event) { event.logger = 'javascript'; diff --git a/src/SentryServiceProvider.php b/src/SentryServiceProvider.php index 9c84214..e65bfef 100644 --- a/src/SentryServiceProvider.php +++ b/src/SentryServiceProvider.php @@ -48,6 +48,7 @@ public function register() /** @var SettingsRepositoryInterface $settings */ $settings = $container->make(SettingsRepositoryInterface::class); $dsn = $settings->get('fof-sentry.dsn'); + $environment = $settings->get('fof-sentry.environment'); $performanceMonitoring = (int) $settings->get('fof-sentry.monitor_performance'); /** @var Paths $paths */ @@ -55,14 +56,11 @@ public function register() $tracesSampleRate = $performanceMonitoring > 0 ? round($performanceMonitoring / 100, 2) : 0; - /** @var Config $config */ - $config = $container->make(Config::class); - init([ 'dsn' => $dsn, 'in_app_include' => [$paths->base], 'traces_sample_rate' => $tracesSampleRate, - 'environment' => str_replace(['https://', 'http://'], '', Arr::get($config, 'url')), + 'environment' => $environment, 'release' => Application::VERSION, ]); From 2dd948abe01dc1e4492ecf68f7d4fa60e7801af0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20R=C3=B6thlisberger?= <9606082+PatrickRoethlisberger@users.noreply.github.com> Date: Wed, 3 Aug 2022 15:49:23 +0200 Subject: [PATCH 4/4] Fix issue with urlGenerator in extend.php Moving urlGenerator into SentryServiceProvider and SentryJavaScript so default is not set in extend.php --- extend.php | 4 +--- src/Content/SentryJavaScript.php | 11 +++++++++-- src/SentryServiceProvider.php | 5 ++++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/extend.php b/extend.php index bd6316a..6d6dbb8 100644 --- a/extend.php +++ b/extend.php @@ -13,7 +13,6 @@ use Flarum\Extend as Flarum; use Flarum\Frontend\RecompileFrontendAssets; -use Flarum\Http\UrlGenerator; use Flarum\Locale\LocaleManager; use Flarum\Settings\Event\Saved; use FoF\Sentry\Middleware\HandleErrorsWithSentry; @@ -59,6 +58,5 @@ }), (new Flarum\Settings()) - ->default('fof-sentry.monitor_performance', 0) - ->default('fof-sentry.environment', resolve(UrlGenerator::class)->to('forum')->base()), + ->default('fof-sentry.monitor_performance', 0), ]; diff --git a/src/Content/SentryJavaScript.php b/src/Content/SentryJavaScript.php index c845936..63f5b77 100644 --- a/src/Content/SentryJavaScript.php +++ b/src/Content/SentryJavaScript.php @@ -12,6 +12,7 @@ namespace FoF\Sentry\Content; use Flarum\Frontend\Document; +use Flarum\Http\UrlGenerator; use Flarum\Settings\SettingsRepositoryInterface; class SentryJavaScript @@ -21,9 +22,15 @@ class SentryJavaScript */ private $settings; - public function __construct(SettingsRepositoryInterface $settings) + /** + * @var UrlGenerator + */ + private $url; + + public function __construct(SettingsRepositoryInterface $settings, UrlGenerator $url) { $this->settings = $settings; + $this->url = $url; } public function __invoke(Document $document) @@ -35,7 +42,7 @@ public function __invoke(Document $document) } $dsn = $this->settings->get('fof-sentry.dsn'); - $environment = $this->settings->get('fof-sentry.environment'); + $environment = empty($this->settings->get('fof-sentry.environment')) ? str_replace(['https://', 'http://'], '', $this->url->to('forum')->base()) : $this->settings->get('fof-sentry.environment'); $showFeedback = (bool) (int) $this->settings->get('fof-sentry.user_feedback'); $captureConsole = (bool) (int) $this->settings->get('fof-sentry.javascript.console'); diff --git a/src/SentryServiceProvider.php b/src/SentryServiceProvider.php index e65bfef..050166e 100644 --- a/src/SentryServiceProvider.php +++ b/src/SentryServiceProvider.php @@ -20,6 +20,7 @@ use Flarum\Foundation\Paths; use Flarum\Frontend\Assets; use Flarum\Frontend\Compiler\Source\SourceCollector; +use Flarum\Http\UrlGenerator; use Flarum\Settings\SettingsRepositoryInterface; use FoF\Sentry\Contracts\Measure; use FoF\Sentry\Formatters\SentryFormatter; @@ -47,8 +48,10 @@ public function register() $this->container->singleton(HubInterface::class, function ($container) { /** @var SettingsRepositoryInterface $settings */ $settings = $container->make(SettingsRepositoryInterface::class); + /** @var UrlGenerator $urlGenerator */ + $url = $container->make(UrlGenerator::class); $dsn = $settings->get('fof-sentry.dsn'); - $environment = $settings->get('fof-sentry.environment'); + $environment = empty($settings->get('fof-sentry.environment')) ? str_replace(['https://', 'http://'], '', $url->to('forum')->base()) : $settings->get('fof-sentry.environment'); $performanceMonitoring = (int) $settings->get('fof-sentry.monitor_performance'); /** @var Paths $paths */