From d000879c011b5c9746e2d1c1220c0bb1d34cd44a Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 21 Jul 2025 12:42:50 -0700 Subject: [PATCH] Add config for domains --- server/lib/readConfigFile.ts | 22 ++++++++++++++++++++++ server/routers/domain/createOrgDomain.ts | 7 ++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/server/lib/readConfigFile.ts b/server/lib/readConfigFile.ts index f738b986..9ba21aa4 100644 --- a/server/lib/readConfigFile.ts +++ b/server/lib/readConfigFile.ts @@ -231,7 +231,29 @@ export const configSchema = z disable_config_managed_domains: z.boolean().optional(), enable_clients: z.boolean().optional() }) + .optional(), + dns: z + .object({ + nameservers: z + .array(z.string().url()) + .optional() + .default([ + "ns1.fossorial.io", + "ns2.fossorial.io", + ]), + cname_extension: z + .string() + .optional() + .default("fossorial.io"), + }) .optional() + .default({ + nameservers: [ + "ns1.fossorial.io", + "ns2.fossorial.io", + ], + cname_extension: "fossorial.io" + }), }) .refine( (data) => { diff --git a/server/routers/domain/createOrgDomain.ts b/server/routers/domain/createOrgDomain.ts index b401409b..3e84072f 100644 --- a/server/routers/domain/createOrgDomain.ts +++ b/server/routers/domain/createOrgDomain.ts @@ -11,6 +11,7 @@ import { generateId } from "@server/auth/sessions/app"; import { eq, and } from "drizzle-orm"; import { isValidDomain } from "@server/lib/validators"; import { build } from "@server/build"; +import config from "@server/lib/config"; const paramsSchema = z .object({ @@ -228,15 +229,15 @@ export async function createOrgDomain( // TODO: This needs to be cross region and not hardcoded if (type === "ns") { - nsRecords = ["ns-east.fossorial.io", "ns-west.fossorial.io"]; + nsRecords = config.getRawConfig().dns.nameservers; } else if (type === "cname") { cnameRecords = [ { - value: `${domainId}.cname.fossorial.io`, + value: `${domainId}.${config.getRawConfig().dns.cname_extension}`, baseDomain: baseDomain }, { - value: `_acme-challenge.${domainId}.cname.fossorial.io`, + value: `_acme-challenge.${domainId}.${config.getRawConfig().dns.cname_extension}`, baseDomain: `_acme-challenge.${baseDomain}` } ];