From 0872ac3576bf61448ba95f2afa5fb50ed5106c16 Mon Sep 17 00:00:00 2001 From: Justin Middler Date: Mon, 27 Jul 2026 17:46:52 +1000 Subject: [PATCH] Allow scoped HTTP homelab connectors --- packages/database/src/bootstrap-connectors.test.ts | 11 +++++++++++ packages/database/src/bootstrap-connectors.ts | 6 +++++- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 packages/database/src/bootstrap-connectors.test.ts diff --git a/packages/database/src/bootstrap-connectors.test.ts b/packages/database/src/bootstrap-connectors.test.ts new file mode 100644 index 0000000..287ec68 --- /dev/null +++ b/packages/database/src/bootstrap-connectors.test.ts @@ -0,0 +1,11 @@ +import { describe, expect, it } from "vitest"; +import { environmentConnectorTestMode } from "./bootstrap-connectors.ts"; + +describe("environment connector bootstrap", () => { + it("permits scoped HTTP homelab connectors without weakening HTTPS connectors", () => { + expect(environmentConnectorTestMode("http://tawny.internal:5080")).toBe( + true, + ); + expect(environmentConnectorTestMode("https://unifi.internal")).toBe(false); + }); +}); diff --git a/packages/database/src/bootstrap-connectors.ts b/packages/database/src/bootstrap-connectors.ts index 4e91ff4..c990a7e 100644 --- a/packages/database/src/bootstrap-connectors.ts +++ b/packages/database/src/bootstrap-connectors.ts @@ -24,6 +24,10 @@ type EnvironmentConnector = { auth: ConnectorAuth; }; +export function environmentConnectorTestMode(baseUrl: string) { + return new URL(baseUrl).protocol === "http:"; +} + function optionalEnvironmentConnector(input: { product: "kelpie" | "tawny" | "unifi"; instanceId: string; @@ -47,7 +51,7 @@ function optionalEnvironmentConnector(input: { baseUrl: parsedUrl.toString(), allowedHosts: [parsedUrl.hostname.toLowerCase()], allowPrivateNetwork: true, - testMode: false, + testMode: environmentConnectorTestMode(parsedUrl.toString()), ...(input.tlsCaCertificateBase64?.trim() ? { tlsCaCertificateBase64: input.tlsCaCertificateBase64.trim(),