Skip to content

Commit 9a1486b

Browse files
authored
fix: avoid error when domain does not exist in iana (#5315)
We use iana registry to find if cloudflare nameserver is used for domain and we can avoid using www.
1 parent 4c2e7cd commit 9a1486b

File tree

3 files changed

+13
-10
lines changed

3 files changed

+13
-10
lines changed

apps/builder/app/builder/features/topbar/add-domain.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export const AddDomain = ({
5454
});
5555
// enforce www subdomain when no support for cname flattening
5656
// and root cname can conflict with MX or NS
57-
if (!registrar.cnameFlattening) {
57+
if (registrar.known && !registrar.cnameFlattening) {
5858
domain = `www.${domain}`;
5959
}
6060
}

packages/domain/src/rdap.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -88,18 +88,17 @@ export const isDomainUsingCloudflareNameservers = async (domain: string) => {
8888

8989
const rdapServer = await findRdapServer(topLevelDomain);
9090
if (!rdapServer) {
91-
throw new Error(
91+
console.error(
9292
"RDAP Server for the given top level domain could not be found."
9393
);
94+
return undefined;
9495
}
9596

96-
if (rdapServer) {
97-
const data = await fetchRdap(rdapServer, domain);
98-
if (data) {
99-
// detect by nameservers rather than registrar url
100-
// sometimes stored as *.NS.CLOUDFLARE.COM
101-
return data.toLowerCase().includes(".ns.cloudflare.com");
102-
}
97+
const data = await fetchRdap(rdapServer, domain);
98+
if (data) {
99+
// detect by nameservers rather than registrar url
100+
// sometimes stored as *.NS.CLOUDFLARE.COM
101+
return data.toLowerCase().includes(".ns.cloudflare.com");
103102
}
104103
return false;
105104
};

packages/domain/src/trpc/domain.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,12 @@ export const domainRouter = router({
2828
findDomainRegistrar: procedure
2929
.input(z.object({ domain: z.string() }))
3030
.query(async ({ input }) => {
31+
const isCloudflare = await isDomainUsingCloudflareNameservers(
32+
input.domain
33+
);
3134
return {
32-
cnameFlattening: await isDomainUsingCloudflareNameservers(input.domain),
35+
known: isCloudflare !== undefined,
36+
cnameFlattening: isCloudflare === true,
3337
};
3438
}),
3539

0 commit comments

Comments
 (0)