aboutsummaryrefslogtreecommitdiff
path: root/setup
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2022-05-04 19:04:28 +0200
committerGitHub <noreply@github.com>2022-05-04 19:04:28 +0200
commit3c940c428d529476b6fa2cbf1ba28d53ec011584 (patch)
treea8963fc8b69c123947d126d0c64f12d1c3d48957 /setup
parentb0a9e85c4a02f39880682d9d682f9cc7af13a93c (diff)
Add opt-in anonymous stats reporting (#2249)
* Initial phone home stats queries * Add userAgent to UpdateDeviceLastSeen Add new Table for tracking daily user vists * Add user_daily_visits table * Fix queries * userapi stats tables & queries * userapi interface and internal api * sycnapi stats queries * testing phone home stats * Add complete config to syncapi * add missing files * Fix queries * Send empty request * Add version & monolith stats * Add configuration for phone home stats * Move WASM to its own file, add config and comments * Add tracing methods * Add total rooms * Add more fields, actually send data somewhere * Move stats to the userapi * Move phone home stats to util package * Cleanup * Linter & parts of GH comments * More GH comments changes - Move comments to SQL statements - Shrink interface, add struct for stats - No fatal errors, use defaults * Be more explicit when querying * Fix wrong calculation & wrong query params Add tests * Add Windows stats * ADd build constraint * Use new testing structure Fix issues with getting values when using SQLite Fix wrong AddDate value Export UpdateUserDailyVisits * Fix query params * Fix test * Add comment about countR30UsersSQL and countR30UsersV2SQL; fix test * Update config * Also update example config file * Use OS level proxy, update logging Co-authored-by: kegsay <kegan@matrix.org>
Diffstat (limited to 'setup')
-rw-r--r--setup/config/config.go3
-rw-r--r--setup/config/config_global.go25
2 files changed, 28 insertions, 0 deletions
diff --git a/setup/config/config.go b/setup/config/config.go
index e03518e2..9b9000a6 100644
--- a/setup/config/config.go
+++ b/setup/config/config.go
@@ -78,6 +78,8 @@ type Dendrite struct {
// Any information derived from the configuration options for later use.
Derived Derived `yaml:"-"`
+
+ IsMonolith bool `yaml:"-"`
}
// TODO: Kill Derived
@@ -210,6 +212,7 @@ func loadConfig(
) (*Dendrite, error) {
var c Dendrite
c.Defaults(false)
+ c.IsMonolith = monolithic
var err error
if err = yaml.Unmarshal(configData, &c); err != nil {
diff --git a/setup/config/config_global.go b/setup/config/config_global.go
index d609e246..9d4c1485 100644
--- a/setup/config/config_global.go
+++ b/setup/config/config_global.go
@@ -70,6 +70,9 @@ type Global struct {
// ServerNotices configuration used for sending server notices
ServerNotices ServerNotices `yaml:"server_notices"`
+
+ // ReportStats configures opt-in anonymous stats reporting.
+ ReportStats ReportStats `yaml:"report_stats"`
}
func (c *Global) Defaults(generate bool) {
@@ -86,6 +89,7 @@ func (c *Global) Defaults(generate bool) {
c.DNSCache.Defaults()
c.Sentry.Defaults()
c.ServerNotices.Defaults(generate)
+ c.ReportStats.Defaults()
}
func (c *Global) Verify(configErrs *ConfigErrors, isMonolith bool) {
@@ -97,6 +101,7 @@ func (c *Global) Verify(configErrs *ConfigErrors, isMonolith bool) {
c.Sentry.Verify(configErrs, isMonolith)
c.DNSCache.Verify(configErrs, isMonolith)
c.ServerNotices.Verify(configErrs, isMonolith)
+ c.ReportStats.Verify(configErrs, isMonolith)
}
type OldVerifyKeys struct {
@@ -163,6 +168,26 @@ func (c *ServerNotices) Defaults(generate bool) {
func (c *ServerNotices) Verify(errors *ConfigErrors, isMonolith bool) {}
+// ReportStats configures opt-in anonymous stats reporting.
+type ReportStats struct {
+ // Enabled configures anonymous usage stats of the server
+ Enabled bool `yaml:"enabled"`
+
+ // Endpoint the endpoint to report stats to
+ Endpoint string `yaml:"endpoint"`
+}
+
+func (c *ReportStats) Defaults() {
+ c.Enabled = false
+ c.Endpoint = "https://matrix.org/report-usage-stats/push"
+}
+
+func (c *ReportStats) Verify(configErrs *ConfigErrors, isMonolith bool) {
+ if c.Enabled {
+ checkNotEmpty(configErrs, "global.report_stats.endpoint", c.Endpoint)
+ }
+}
+
// The configuration to use for Sentry error reporting
type Sentry struct {
Enabled bool `yaml:"enabled"`