From c96edcdc79e73bd15a0d752021ea0c8b4ee0d332 Mon Sep 17 00:00:00 2001 From: DIYgod Date: Wed, 17 Aug 2022 01:40:00 +0100 Subject: [PATCH] feat: custom domain dns check --- src/lib/tenant.server.ts | 13 +++++++++++-- src/pages/_middleware.ts | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/lib/tenant.server.ts b/src/lib/tenant.server.ts index 683d315f..bb06e671 100644 --- a/src/lib/tenant.server.ts +++ b/src/lib/tenant.server.ts @@ -1,6 +1,6 @@ import { OUR_DOMAIN } from "./env" -export const getTenant = (request: Request, search: URLSearchParams) => { +export const getTenant = async (request: Request, search: URLSearchParams) => { const host = request.headers.get("host") if (!OUR_DOMAIN) { @@ -21,7 +21,16 @@ export const getTenant = (request: Request, search: URLSearchParams) => { return subdomain } if (host !== OUR_DOMAIN) { - return host + const res = await fetch( + `https://cloudflare-dns.com/dns-query?name=_xlog-challenge.${host}&type=TXT`, + { + headers: { + accept: "application/dns-json", + }, + }, + ) + const txt = await res.json() + return txt?.Answer?.[0]?.data.replace(/^"|"$/g, "") } } return diff --git a/src/pages/_middleware.ts b/src/pages/_middleware.ts index 9abefe10..5a2ca1ac 100644 --- a/src/pages/_middleware.ts +++ b/src/pages/_middleware.ts @@ -12,7 +12,7 @@ const ALWAYS_REPLAY_ROUTES = [ "/api/logout", ] -export default function middleware(req: NextRequest) { +export default async function middleware(req: NextRequest) { const { pathname } = req.nextUrl if (pathname === "/favicon.ico") { @@ -39,7 +39,7 @@ export default function middleware(req: NextRequest) { }) } - const tenant = getTenant(req, req.nextUrl.searchParams) + const tenant = await getTenant(req, req.nextUrl.searchParams) if (pathname.startsWith("/api/") || pathname.startsWith("/dashboard")) { return NextResponse.next()