summaryrefslogtreecommitdiffstats
path: root/src/daemon/sentry-native
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/daemon/sentry-native/sentry-native.c50
-rw-r--r--src/daemon/sentry-native/sentry-native.h9
2 files changed, 59 insertions, 0 deletions
diff --git a/src/daemon/sentry-native/sentry-native.c b/src/daemon/sentry-native/sentry-native.c
new file mode 100644
index 000000000..3594c1fff
--- /dev/null
+++ b/src/daemon/sentry-native/sentry-native.c
@@ -0,0 +1,50 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "sentry-native.h"
+#include "daemon/common.h"
+
+#include "sentry.h"
+
+static bool sentry_telemetry_disabled(void)
+{
+ char path[FILENAME_MAX + 1];
+ sprintf(path, "%s/%s", netdata_configured_user_config_dir, ".opt-out-from-anonymous-statistics");
+
+ struct stat buffer;
+ bool opt_out_file_exists = (stat(path, &buffer) == 0);
+
+ if (opt_out_file_exists)
+ return true;
+
+ return getenv("DISABLE_TELEMETRY") != NULL;
+}
+
+void sentry_native_init(void)
+{
+ if (sentry_telemetry_disabled())
+ return;
+
+ // path where sentry should save stuff
+ char path[FILENAME_MAX];
+ snprintfz(path, FILENAME_MAX - 1, "%s/%s", netdata_configured_cache_dir, ".sentry-native");
+
+ sentry_options_t *options = sentry_options_new();
+ sentry_options_set_dsn(options, NETDATA_SENTRY_DSN);
+ sentry_options_set_database_path(options, path);
+ sentry_options_set_environment(options, NETDATA_SENTRY_ENVIRONMENT);
+ sentry_options_set_release(options, NETDATA_SENTRY_RELEASE);
+ sentry_options_set_dist(options, NETDATA_SENTRY_DIST);
+#ifdef NETDATA_INTERNAL_CHECKS
+ sentry_options_set_debug(options, 1);
+#endif
+
+ sentry_init(options);
+}
+
+void sentry_native_fini(void)
+{
+ if (sentry_telemetry_disabled())
+ return;
+
+ sentry_close();
+}
diff --git a/src/daemon/sentry-native/sentry-native.h b/src/daemon/sentry-native/sentry-native.h
new file mode 100644
index 000000000..861c5b959
--- /dev/null
+++ b/src/daemon/sentry-native/sentry-native.h
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#ifndef SENTRY_NATIVE_H
+#define SENTRY_NATIVE_H
+
+void sentry_native_init(void);
+void sentry_native_fini(void);
+
+#endif /* SENTRY_NATIVE_H */