diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 5a5a89984..bcf3c4635 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -159,7 +159,9 @@ SCRIPTS_ROOT = getattr(configuration, 'SCRIPTS_ROOT', os.path.join(BASE_DIR, 'sc SEARCH_BACKEND = getattr(configuration, 'SEARCH_BACKEND', 'netbox.search.backends.CachedValueSearchBackend') SECURE_SSL_REDIRECT = getattr(configuration, 'SECURE_SSL_REDIRECT', False) SENTRY_DSN = getattr(configuration, 'SENTRY_DSN', DEFAULT_SENTRY_DSN) +SENTRY_DSN_JS = getattr(configuration, 'SENTRY_DSN_JS', SENTRY_DSN) SENTRY_ENABLED = getattr(configuration, 'SENTRY_ENABLED', False) +SENTRY_ENABLED_JS = getattr(configuration, 'SENTRY_ENABLED_JS', SENTRY_ENABLED) SENTRY_SAMPLE_RATE = getattr(configuration, 'SENTRY_SAMPLE_RATE', 1.0) SENTRY_TRACES_SAMPLE_RATE = getattr(configuration, 'SENTRY_TRACES_SAMPLE_RATE', 0) SENTRY_TAGS = getattr(configuration, 'SENTRY_TAGS', {}) diff --git a/netbox/project-static/bundle.js b/netbox/project-static/bundle.js index 6f651cd05..49444301f 100644 --- a/netbox/project-static/bundle.js +++ b/netbox/project-static/bundle.js @@ -40,6 +40,7 @@ async function bundleGraphIQL() { async function bundleNetBox() { const entryPoints = { netbox: 'src/index.ts', + sentry: 'src/sentry.ts', }; try { const result = await esbuild.build({ diff --git a/netbox/project-static/dist/sentry.js b/netbox/project-static/dist/sentry.js new file mode 100644 index 000000000..dbc57e04d Binary files /dev/null and b/netbox/project-static/dist/sentry.js differ diff --git a/netbox/project-static/dist/sentry.js.map b/netbox/project-static/dist/sentry.js.map new file mode 100644 index 000000000..308adb7ad Binary files /dev/null and b/netbox/project-static/dist/sentry.js.map differ diff --git a/netbox/project-static/package.json b/netbox/project-static/package.json index 98e1a5c60..17931ac95 100644 --- a/netbox/project-static/package.json +++ b/netbox/project-static/package.json @@ -24,6 +24,7 @@ "dependencies": { "@mdi/font": "^7.0.96", "@popperjs/core": "^2.11.6", + "@sentry/browser": "^7.80.1", "bootstrap": "~5.0.2", "clipboard": "^2.0.11", "color2k": "^2.0.0", diff --git a/netbox/project-static/src/sentry.ts b/netbox/project-static/src/sentry.ts new file mode 100644 index 000000000..14a1c963d --- /dev/null +++ b/netbox/project-static/src/sentry.ts @@ -0,0 +1 @@ +export * as Sentry from '@sentry/browser'; diff --git a/netbox/project-static/yarn.lock b/netbox/project-static/yarn.lock index 583b434f8..2f0b5a481 100644 --- a/netbox/project-static/yarn.lock +++ b/netbox/project-static/yarn.lock @@ -107,6 +107,56 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== +"@sentry-internal/tracing@7.80.1": + version "7.80.1" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.80.1.tgz#b0e993265aa75743787d84e6c0655ed17e4bac0f" + integrity sha512-5gZ4LPIj2vpQl2/dHBM4uXMi9OI5E0VlOhJQt0foiuN6JJeiOjdpJFcfVqJk69wrc0deVENTtgKKktxqMwVeWQ== + dependencies: + "@sentry/core" "7.80.1" + "@sentry/types" "7.80.1" + "@sentry/utils" "7.80.1" + +"@sentry/browser@^7.80.1": + version "7.80.1" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.80.1.tgz#3e63a122846a4d5dec04237b97ae064b80546da4" + integrity sha512-1dPR6vPJ9vOTzgXff9HGheb178XeEv5hyjBNhCO1f6rjCgnVj99XGNZIgO1Ee1ALJbqlfPWaeV+uSWbbcmgJMA== + dependencies: + "@sentry-internal/tracing" "7.80.1" + "@sentry/core" "7.80.1" + "@sentry/replay" "7.80.1" + "@sentry/types" "7.80.1" + "@sentry/utils" "7.80.1" + +"@sentry/core@7.80.1": + version "7.80.1" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.80.1.tgz#ccb85e15495bf0c8b142ca1713408c64e38c9f4c" + integrity sha512-3Yh+O9Q86MxwIuJFYtuSSoUCpdx99P1xDAqL0FIPTJ+ekaVMiUJq9NmyaNh9uN2myPSmxvEXW6q3z37zta9ZHg== + dependencies: + "@sentry/types" "7.80.1" + "@sentry/utils" "7.80.1" + +"@sentry/replay@7.80.1": + version "7.80.1" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.80.1.tgz#1f47d3e52bfd0ad531f3032ae1eda8528c947c44" + integrity sha512-yjpftIyybQeWD2i0Nd7C96tZwjNbSMRW515EL9jwlNxYbQtGtMs0HavP9Y7uQvQrzwSHY0Wp+ooe9PMuvzqbHw== + dependencies: + "@sentry-internal/tracing" "7.80.1" + "@sentry/core" "7.80.1" + "@sentry/types" "7.80.1" + "@sentry/utils" "7.80.1" + +"@sentry/types@7.80.1": + version "7.80.1" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.80.1.tgz#dc720d6f2da0b510d586814451a04a2cdd2f4a9d" + integrity sha512-CVu4uPVTOI3U9kYiOdA085R7jX5H1oVODbs9y+A8opJ0dtJTMueCXgZyE8oXQ0NjGVs6HEeaLkOuiV0mj8X3yw== + +"@sentry/utils@7.80.1": + version "7.80.1" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.80.1.tgz#1c719f41b4d2c818363551fc40776a274b71efff" + integrity sha512-bfFm2e/nEn+b9++QwjNEYCbS7EqmteT8uf0XUs7PljusSimIqqxDtK1pfD9zjynPgC8kW/fVBKv0pe2LufomeA== + dependencies: + "@sentry/types" "7.80.1" + "@types/bootstrap@^5.0.17": version "5.2.5" resolved "https://registry.yarnpkg.com/@types/bootstrap/-/bootstrap-5.2.5.tgz#0bb5dea7720611b2bb7ba16bd8a64fafd86fb658" diff --git a/netbox/templates/base/base.html b/netbox/templates/base/base.html index 0f6c9d9be..05a2e9bf1 100644 --- a/netbox/templates/base/base.html +++ b/netbox/templates/base/base.html @@ -23,6 +23,8 @@ name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width, viewport-fit=cover" /> + + {# Page title #} {% block title %}{% trans "Home" %}{% endblock %} | NetBox @@ -65,6 +67,27 @@ + {# Sentry loader #} + {% if settings.SENTRY_ENABLED_JS %} + + + {% endif %} + {# Javascript #}