From 5c6a211712502ac923665c9526b8a058852a3208 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Wed, 1 Apr 2026 10:44:25 -0700 Subject: [PATCH] Fix isRelayUrl --- packages/util/src/Relay.ts | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/util/src/Relay.ts b/packages/util/src/Relay.ts index 9ada356..d8b05af 100644 --- a/packages/util/src/Relay.ts +++ b/packages/util/src/Relay.ts @@ -41,21 +41,22 @@ export const isRelayUrl = (url: string) => { url = "wss://" + url } - // Skip non-ws urls - if (!url.match(/^wss?:\/\//)) return false - - // Skip urls with a slash before the dot - if (url.match(/\\.*\./)) return false - - // Skip non-localhost urls without a dot - if (!url.match(/\./) && !url.includes("localhost")) return false - + let parsed: URL try { - new URL(url) + parsed = new URL(url) } catch (e) { return false } + // Skip non-ws urls + if (!parsed.protocol.match(/^wss?:$/)) return false + + // Host is required (rejects local file paths like /home/foo/bar.png) + if (!parsed.hostname) return false + + // Skip non-localhost hosts without a dot (checks host, not path) + if (!parsed.hostname.includes(".") && parsed.hostname !== "localhost") return false + return true }