diff --git a/rust/telemetry/src/analytics.rs b/rust/telemetry/src/analytics.rs index d4c87851e..b7d595097 100644 --- a/rust/telemetry/src/analytics.rs +++ b/rust/telemetry/src/analytics.rs @@ -48,8 +48,14 @@ async fn capture
(
where
P: Serialize,
{
+ let event = event.into();
+
let env = Env::from_api_url(&api_url);
- let api_key = crate::posthog::api_key_for_env(env);
+ let Some(api_key) = crate::posthog::api_key_for_env(env) else {
+ tracing::debug!(%event, %env, "Not sending event because we don't have an API key");
+
+ return Ok(());
+ };
let response = reqwest::ClientBuilder::new()
.connection_verbose(true)
@@ -58,7 +64,7 @@ where
.json(&CaptureRequest {
api_key: api_key.to_string(),
distinct_id,
- event: event.into(),
+ event,
properties,
})
.send()
diff --git a/rust/telemetry/src/feature_flags.rs b/rust/telemetry/src/feature_flags.rs
index 1aaeeb6e8..950e01418 100644
--- a/rust/telemetry/src/feature_flags.rs
+++ b/rust/telemetry/src/feature_flags.rs
@@ -28,7 +28,7 @@ pub(crate) fn reevaluate(user_id: String, env: &str) {
let api_key = match env.parse() {
Ok(Env::Production) => POSTHOG_API_KEY_PROD,
Ok(Env::Staging) => POSTHOG_API_KEY_STAGING,
- Ok(Env::OnPrem) | Err(_) => return,
+ Ok(Env::OnPrem | Env::DockerCompose | Env::Localhost) | Err(_) => return,
};
RUNTIME.spawn(async move {
diff --git a/rust/telemetry/src/lib.rs b/rust/telemetry/src/lib.rs
index ff08d5519..5ca65f94f 100644
--- a/rust/telemetry/src/lib.rs
+++ b/rust/telemetry/src/lib.rs
@@ -44,14 +44,18 @@ pub const TESTING: Dsn = Dsn(
pub(crate) enum Env {
Production,
Staging,
+ DockerCompose,
+ Localhost,
OnPrem,
}
impl Env {
pub(crate) fn from_api_url(api_url: &str) -> Self {
- match api_url {
- "wss://api.firezone.dev" | "wss://api.firezone.dev/" => Self::Production,
- "wss://api.firez.one" | "wss://api.firez.one/" => Self::Staging,
+ match api_url.trim_end_matches('/') {
+ "wss://api.firezone.dev" => Self::Production,
+ "wss://api.firez.one" => Self::Staging,
+ "ws://api:8081" => Self::DockerCompose,
+ "ws://localhost:8081" => Self::DockerCompose,
_ => Self::OnPrem,
}
}
@@ -60,6 +64,8 @@ impl Env {
match self {
Env::Production => "production",
Env::Staging => "staging",
+ Env::DockerCompose => "docker-compose",
+ Env::Localhost => "localhost",
Env::OnPrem => "on-prem",
}
}
@@ -72,6 +78,8 @@ impl FromStr for Env {
match s {
"production" => Ok(Self::Production),
"staging" => Ok(Self::Staging),
+ "docker-compose" => Ok(Self::DockerCompose),
+ "localhost" => Ok(Self::Localhost),
"on-prem" => Ok(Self::OnPrem),
other => bail!("Unknown env `{other}`"),
}
diff --git a/rust/telemetry/src/posthog.rs b/rust/telemetry/src/posthog.rs
index 2fd29bcf4..8dcdb55e5 100644
--- a/rust/telemetry/src/posthog.rs
+++ b/rust/telemetry/src/posthog.rs
@@ -9,11 +9,12 @@ pub(crate) const POSTHOG_API_KEY_ON_PREM: &str = "phc_4R9Ii6q4SEofVkH7LvajwuJ3ns
pub(crate) static RUNTIME: LazyLock