diff options
| author | Freya Murphy <freya@freyacat.org> | 2026-03-02 08:33:53 -0500 |
|---|---|---|
| committer | Freya Murphy <freya@freyacat.org> | 2026-03-02 08:33:53 -0500 |
| commit | ce502876eb0057e35ef0bce108337988223c792e (patch) | |
| tree | b95e1dac6b08bd863888dc482c29b3bc6b26bd4b /packages/backend/src/config.ts | |
| parent | merge: Release/2025.4.5 (!1258) (diff) | |
| download | sharkey-ce502876eb0057e35ef0bce108337988223c792e.tar.gz sharkey-ce502876eb0057e35ef0bce108337988223c792e.tar.bz2 sharkey-ce502876eb0057e35ef0bce108337988223c792e.zip | |
allow vanity urls
Diffstat (limited to 'packages/backend/src/config.ts')
| -rw-r--r-- | packages/backend/src/config.ts | 17 |
1 files changed, 17 insertions, 0 deletions
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, |