feat: custom domain dns check

This commit is contained in:
DIYgod 2022-08-17 01:40:00 +01:00
parent 741fec5910
commit c96edcdc79
No known key found for this signature in database
GPG Key ID: D159328F47A80DCA
2 changed files with 13 additions and 4 deletions

View File

@ -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

View File

@ -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()