diff --git a/ee/initialize.go b/ee/initialize.go index a83ad354..8d95c3ce 100644 --- a/ee/initialize.go +++ b/ee/initialize.go @@ -22,8 +22,10 @@ func InitEE() { ValidateLicense() if Limits.FreeTier { logger.Log(0, "proceeding with Free Tier license") + logic.SetFreeTierForTelemetry(true) } else { logger.Log(0, "proceeding with Paid Tier license") + logic.SetFreeTierForTelemetry(false) } // == End License Handling == AddLicenseHooks() diff --git a/ee/util.go b/ee/util.go index 7e923aaf..570e6b2b 100644 --- a/ee/util.go +++ b/ee/util.go @@ -10,12 +10,14 @@ var isEnterprise bool // IsEnterprise - checks if enterprise binary or not func IsEnterprise() bool { + logic.SetEEForTelemetry(isEnterprise) return isEnterprise } // setIsEnterprise - sets server to use enterprise features func setIsEnterprise() { isEnterprise = true + logic.SetEEForTelemetry(isEnterprise) } // base64encode - base64 encode helper function diff --git a/logic/telemetry.go b/logic/telemetry.go index 2eeef79e..0408ffad 100644 --- a/logic/telemetry.go +++ b/logic/telemetry.go @@ -10,12 +10,28 @@ import ( "github.com/posthog/posthog-go" ) +// flags to keep for telemetry +var isFreeTier bool +var isEE bool + // posthog_pub_key - Key for sending data to PostHog const posthog_pub_key = "phc_1vEXhPOA1P7HP5jP2dVU9xDTUqXHAelmtravyZ1vvES" // posthog_endpoint - Endpoint of PostHog server const posthog_endpoint = "https://app.posthog.com" +// setEEForTelemetry - store EE flag without having an import cycle when used for telemetry +// (as the ee package needs the logic package as currently written). +func SetEEForTelemetry(eeFlag bool) { + isEE = eeFlag +} + +// setFreeTierForTelemetry - store free tier flag without having an import cycle when used for telemetry +// (as the ee package needs the logic package as currently written). +func SetFreeTierForTelemetry(freeTierFlag bool) { + isFreeTier = freeTierFlag +} + // sendTelemetry - gathers telemetry data and sends to posthog func sendTelemetry() error { if servercfg.Telemetry() == "off" { @@ -54,7 +70,9 @@ func sendTelemetry() error { Set("freebsd", d.Count.FreeBSD). Set("docker", d.Count.Docker). Set("k8s", d.Count.K8S). - Set("version", d.Version), + Set("version", d.Version). + Set("is_ee", isEE). + Set("is_free_tier", isFreeTier), }) } @@ -144,6 +162,8 @@ type telemetryData struct { Networks int Servers int Version string + IsEE bool + IsFreeTier bool } // clientCount - What types of netclients we're tallying