diff --git a/server/routers/siteResource/createSiteResource.ts b/server/routers/siteResource/createSiteResource.ts index 01f7a0d9c..1cf9c38d5 100644 --- a/server/routers/siteResource/createSiteResource.ts +++ b/server/routers/siteResource/createSiteResource.ts @@ -74,16 +74,14 @@ const createSiteResourceSchema = z .refine( (data) => { if (data.mode === "host") { - if (data.mode == "host") { - // Check if it's a valid IP address using zod (v4 or v6) - const isValidIP = z - // .union([z.ipv4(), z.ipv6()]) - .union([z.ipv4()]) // for now lets just do ipv4 until we verify ipv6 works everywhere - .safeParse(data.destination).success; + // Check if it's a valid IP address using zod (v4 or v6) + const isValidIP = z + // .union([z.ipv4(), z.ipv6()]) + .union([z.ipv4()]) // for now lets just do ipv4 until we verify ipv6 works everywhere + .safeParse(data.destination).success; - if (isValidIP) { - return true; - } + if (isValidIP) { + return true; } // Check if it's a valid domain (hostname pattern, TLD not required) @@ -96,17 +94,12 @@ const createSiteResourceSchema = z data.alias.trim() !== ""; return isValidDomain && isValidAlias; // require the alias to be set in the case of domain - } - return true; - }, - { - message: - "Destination must be a valid IPV4 address or valid domain AND alias is required" - } - ) - .refine( - (data) => { - if (data.mode === "cidr") { + } else if (data.mode === "http") { + // we have to have a domainId defined + if (!data.domainId) { + return false; + } + } else if (data.mode === "cidr") { // Check if it's a valid CIDR (v4 or v6) const isValidCIDR = z .union([z.cidrv4(), z.cidrv6()]) @@ -116,7 +109,8 @@ const createSiteResourceSchema = z return true; }, { - message: "Destination must be a valid CIDR notation for cidr mode" + message: + "Destination must be a valid IPV4 address or valid domain AND alias is required" } ) .refine( diff --git a/server/routers/siteResource/updateSiteResource.ts b/server/routers/siteResource/updateSiteResource.ts index 8a3f93326..7f8ef3e25 100644 --- a/server/routers/siteResource/updateSiteResource.ts +++ b/server/routers/siteResource/updateSiteResource.ts @@ -104,6 +104,17 @@ const updateSiteResourceSchema = z data.alias.trim() !== ""; return isValidDomain && isValidAlias; // require the alias to be set in the case of domain + } else if (data.mode === "cidr" && data.destination) { + // Check if it's a valid CIDR (v4 or v6) + const isValidCIDR = z + .union([z.cidrv4(), z.cidrv6()]) + .safeParse(data.destination).success; + return isValidCIDR; + } else if (data.mode === "http") { + // we have to have a domainId defined + if (!data.domainId) { + return false; + } } return true; }, @@ -112,21 +123,6 @@ const updateSiteResourceSchema = z "Destination must be a valid IP address or valid domain AND alias is required" } ) - .refine( - (data) => { - if (data.mode === "cidr" && data.destination) { - // Check if it's a valid CIDR (v4 or v6) - const isValidCIDR = z - .union([z.cidrv4(), z.cidrv6()]) - .safeParse(data.destination).success; - return isValidCIDR; - } - return true; - }, - { - message: "Destination must be a valid CIDR notation for cidr mode" - } - ) .refine( (data) => { if (data.mode !== "http") return true;