From ce502876eb0057e35ef0bce108337988223c792e Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Mon, 2 Mar 2026 08:33:53 -0500 Subject: allow vanity urls --- packages/backend/src/config.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'packages/backend/src/config.ts') diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index c2e7efd456..9d82694a40 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -89,6 +89,8 @@ type Source = { allowedPrivateNetworks?: PrivateNetworkSource[]; disallowExternalApRedirect?: boolean; + allowedHosts?: string[]; + maxFileSize?: number; maxNoteLength?: number; maxCwLength?: number; @@ -202,6 +204,19 @@ export function parsePrivateNetworks(patterns: PrivateNetworkSource[] | undefine .filter(p => p != null); } +export function parseAllowedHosts(hosts: string[] | undefined): string[] { + if (!hosts) + return []; + + return hosts.map(host => { + try { + return (new URL(host)).origin.toLowerCase(); + } catch (e) { + return null; + } + }).filter(host => !!host); +} + function parseIpOrMask(ipOrMask: string): CIDR | null { if (ipaddr.isValidCIDR(ipOrMask)) { return ipaddr.parseCIDR(ipOrMask); @@ -253,6 +268,7 @@ export type Config = { proxySmtp: string | undefined; proxyBypassHosts: string[] | undefined; allowedPrivateNetworks: PrivateNetwork[] | undefined; + allowedHosts: string[]; disallowExternalApRedirect: boolean; maxFileSize: number; maxNoteLength: number; @@ -453,6 +469,7 @@ export function loadConfig(): Config { proxySmtp: config.proxySmtp, proxyBypassHosts: config.proxyBypassHosts, allowedPrivateNetworks: parsePrivateNetworks(config.allowedPrivateNetworks), + allowedHosts: parseAllowedHosts(config.allowedHosts), disallowExternalApRedirect: config.disallowExternalApRedirect ?? false, maxFileSize: config.maxFileSize ?? 262144000, maxNoteLength: config.maxNoteLength ?? 3000, -- cgit v1.2.3-freya