From 7fe851b5ada0dcde5e801fd9a6c981ed150b8235 Mon Sep 17 00:00:00 2001 From: Bogdan Chadkin Date: Sat, 28 Jun 2025 19:52:18 +0300 Subject: [PATCH] fix: detect registrar by nameservers We detect cname flattening by registrar though when nameservers are rerouted legal registar stays the same. So instead we check if nameservers are cloudflare and can use cname flattening. --- packages/domain/src/trpc/domain.ts | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/packages/domain/src/trpc/domain.ts b/packages/domain/src/trpc/domain.ts index 9bc73fbcfb34..8f6bee07b122 100644 --- a/packages/domain/src/trpc/domain.ts +++ b/packages/domain/src/trpc/domain.ts @@ -6,21 +6,10 @@ import { router, procedure } from "@webstudio-is/trpc-interface/index.server"; import { Templates } from "@webstudio-is/sdk"; import { db } from "../db"; -const registrars = { - cloudflare: { - rdap: "https://rdap.cloudflare.com/rdap/v1/domain/", - cnameFlattening: true, - alias: false, - }, - /* - // ALIAS record is not support by cloudflare custom domains service - namecheap: { - rdap: "https://rdap.namecheap.com/domain/", - cnameFlattening: false, - alias: true, - }, - */ -} as const; +const rdap = [ + "https://rdap.cloudflare.com/rdap/v1/domain/", + "https://rdap.namecheap.com/domain/", +]; export const domainRouter = router({ getEntriToken: procedure.query(async ({ ctx }) => { @@ -44,13 +33,13 @@ export const domainRouter = router({ .input(z.object({ domain: z.string() })) .query(async ({ input }) => { try { - for (const [name, meta] of Object.entries(registrars)) { - const response = await fetch(`${meta.rdap}${input.domain}`); + for (const rdapEndpoint of rdap) { + const response = await fetch(`${rdapEndpoint}${input.domain}`); if (response.ok) { + const data = await response.text(); return { - name: name as keyof typeof registrars, - cnameFlattening: meta.cnameFlattening, - alias: meta.alias, + // detect by nameservers rather than registrar url + cnameFlattening: data.includes(".ns.cloudflare.com"), }; } } @@ -60,7 +49,6 @@ export const domainRouter = router({ return { name: "other", cnameFlattening: false, - alias: false, }; }),