From 9b5bf90ecfa625255b55a748df99236f79275e5a Mon Sep 17 00:00:00 2001 From: Hans Ott Date: Mon, 17 Aug 2026 16:09:02 +0200 Subject: [PATCH] Use guard hostname for realtime and config polling --- .../agent_api/background/RealtimeTask.java | 2 +- .../background/cloud/RealtimeAPI.java | 2 +- .../agent_api/helpers/env/Endpoints.java | 9 +++-- .../test/java/helpers/env/EndpointsTest.java | 37 +++++++++++++++---- 4 files changed, 37 insertions(+), 13 deletions(-) diff --git a/agent_api/src/main/java/dev/aikido/agent_api/background/RealtimeTask.java b/agent_api/src/main/java/dev/aikido/agent_api/background/RealtimeTask.java index 8077f210e..0962507b2 100644 --- a/agent_api/src/main/java/dev/aikido/agent_api/background/RealtimeTask.java +++ b/agent_api/src/main/java/dev/aikido/agent_api/background/RealtimeTask.java @@ -13,7 +13,7 @@ /** * This tasks runs every x seconds to poll for config changes at the realtime endpoint, - * normally runtime.aikido.dev but can be specified with AIKIDO_REALTIME_ENDPOINT. + * normally guard.aikido.dev but can be specified with AIKIDO_REALTIME_ENDPOINT. * If it notices that the config was updated (i.e. time of last change is more recent) it will * fetch the new config from the Zen API (guard.aikido.dev). */ diff --git a/agent_api/src/main/java/dev/aikido/agent_api/background/cloud/RealtimeAPI.java b/agent_api/src/main/java/dev/aikido/agent_api/background/cloud/RealtimeAPI.java index 0ccf9d6b3..cf9ad7cab 100644 --- a/agent_api/src/main/java/dev/aikido/agent_api/background/cloud/RealtimeAPI.java +++ b/agent_api/src/main/java/dev/aikido/agent_api/background/cloud/RealtimeAPI.java @@ -25,7 +25,7 @@ public class RealtimeAPI { private final Token token; public RealtimeAPI(Token token) { - endpoint = getAikidoRealtimeEndpoint(); + endpoint = getAikidoRealtimeEndpoint(token); this.token = token; } public record ConfigResponse(long configUpdatedAt) {} diff --git a/agent_api/src/main/java/dev/aikido/agent_api/helpers/env/Endpoints.java b/agent_api/src/main/java/dev/aikido/agent_api/helpers/env/Endpoints.java index 463689edb..fe27829a7 100644 --- a/agent_api/src/main/java/dev/aikido/agent_api/helpers/env/Endpoints.java +++ b/agent_api/src/main/java/dev/aikido/agent_api/helpers/env/Endpoints.java @@ -11,6 +11,10 @@ public static String getAikidoAPIEndpoint(Token token) { return endpoint; } + return getDefaultAikidoAPIEndpoint(token); + } + + private static String getDefaultAikidoAPIEndpoint(Token token) { String region = token != null ? token.getRegion() : "EU"; return switch (region) { case "US" -> "https://guard.us.aikido.dev/"; @@ -20,7 +24,7 @@ public static String getAikidoAPIEndpoint(Token token) { }; } - public static String getAikidoRealtimeEndpoint() { + public static String getAikidoRealtimeEndpoint(Token token) { String endpoint = System.getenv("AIKIDO_REALTIME_ENDPOINT"); if (endpoint != null && !endpoint.isEmpty()) { if (!endpoint.endsWith("/")) { @@ -29,7 +33,6 @@ public static String getAikidoRealtimeEndpoint() { return endpoint; } - // Default option : - return "https://runtime.aikido.dev/"; + return getDefaultAikidoAPIEndpoint(token); } } diff --git a/agent_api/src/test/java/helpers/env/EndpointsTest.java b/agent_api/src/test/java/helpers/env/EndpointsTest.java index 2d65f9cb2..4619186db 100644 --- a/agent_api/src/test/java/helpers/env/EndpointsTest.java +++ b/agent_api/src/test/java/helpers/env/EndpointsTest.java @@ -43,35 +43,56 @@ public void testGetAikidoAPIEndpoint_WithNullEnvironmentVariable() { @Test @SetEnvironmentVariable(key = "AIKIDO_REALTIME_ENDPOINT", value = "https://realtime.aikido.dev") public void testGetAikidoRealtimeEndpoint_WithCustomEndpoint() { - String result = Endpoints.getAikidoRealtimeEndpoint(); + String result = Endpoints.getAikidoRealtimeEndpoint(null); assertEquals("https://realtime.aikido.dev/", result); } @Test @SetEnvironmentVariable(key = "AIKIDO_REALTIME_ENDPOINT", value = "https://realtime.aikido.dev") public void testGetAikidoRealtimeEndpoint_WithCustomEndpointWithoutTrailingSlash() { - String result = Endpoints.getAikidoRealtimeEndpoint(); + String result = Endpoints.getAikidoRealtimeEndpoint(null); assertEquals("https://realtime.aikido.dev/", result); } @Test public void testGetAikidoRealtimeEndpoint_WithNullEnvironmentVariable() { - // No environment variable set, should return default - String result = Endpoints.getAikidoRealtimeEndpoint(); - assertEquals("https://runtime.aikido.dev/", result); + String result = Endpoints.getAikidoRealtimeEndpoint(null); + assertEquals("https://guard.aikido.dev/", result); } @Test @SetEnvironmentVariable(key = "AIKIDO_REALTIME_ENDPOINT", value = "https://realtime.aikido.dev/") public void testGetAikidoRealtimeEndpoint_WithCustomEndpointWithTrailingSlash() { - String result = Endpoints.getAikidoRealtimeEndpoint(); + String result = Endpoints.getAikidoRealtimeEndpoint(null); assertEquals("https://realtime.aikido.dev/", result); } @Test @SetEnvironmentVariable(key = "AIKIDO_REALTIME_ENDPOINT", value = "") public void testGetAikidoRealtimeEndpoint_WithEmptyEnvironmentVariable() { - String result = Endpoints.getAikidoRealtimeEndpoint(); - assertEquals("https://runtime.aikido.dev/", result); + String result = Endpoints.getAikidoRealtimeEndpoint(null); + assertEquals("https://guard.aikido.dev/", result); + } + + @Test + public void testGetAikidoRealtimeEndpoint_WithUSRegionToken() { + Token token = new Token("AIK_RUNTIME_1_2_US_random"); + String result = Endpoints.getAikidoRealtimeEndpoint(token); + assertEquals("https://guard.us.aikido.dev/", result); + } + + @Test + public void testGetAikidoRealtimeEndpoint_WithMERegionToken() { + Token token = new Token("AIK_RUNTIME_1_2_ME_random"); + String result = Endpoints.getAikidoRealtimeEndpoint(token); + assertEquals("https://guard.me.aikido.dev/", result); + } + + @Test + @SetEnvironmentVariable(key = "AIKIDO_ENDPOINT", value = "https://custom.aikido.dev") + public void testGetAikidoRealtimeEndpoint_IgnoresAPIEndpointOverride() { + Token token = new Token("AIK_RUNTIME_1_2_US_random"); + String result = Endpoints.getAikidoRealtimeEndpoint(token); + assertEquals("https://guard.us.aikido.dev/", result); } // Additional tests