Files
web-check/api/dnssec.js
2026-05-10 20:27:40 +01:00

38 lines
1.1 KiB
JavaScript

import middleware from './_common/middleware.js';
import { httpGet } from './_common/http.js';
import { parseTarget } from './_common/parse-target.js';
// Query Google's public DNS JSON API for a given record type
const queryDns = async (domain, type) => {
const res = await httpGet('https://dns.google/resolve', {
params: { name: domain, type },
headers: { Accept: 'application/dns-json' },
});
return res.data;
};
const dnsSecHandler = async (url) => {
const { hostname } = parseTarget(url);
const [dnskey, ds, aRecord] = await Promise.all([
queryDns(hostname, 'DNSKEY'),
queryDns(hostname, 'DS'),
queryDns(hostname, 'A'),
]);
return {
DNSKEY: dnskey.Answer
? { isFound: true, answer: dnskey.Answer, response: dnskey.Answer }
: { isFound: false, answer: null, response: dnskey },
DS: ds.Answer
? { isFound: true, answer: ds.Answer, response: ds.Answer }
: { isFound: false, answer: null, response: ds },
RRSIG: {
isFound: !!aRecord.AD,
answer: null,
response: aRecord,
},
};
};
export const handler = middleware(dnsSecHandler);
export default handler;