1
0
mirror of https://github.com/Lissy93/web-check.git synced 2025-07-22 14:24:00 +02:00
Files
.github
api
_common
archives.js
block-lists.js
carbon.js
cookies.js
dns-server.js
dns.js
dnssec.js
features.js
firewall.js
get-ip.js
headers.js
hsts.js
http-security.js
legacy-rank.js
linked-pages.js
mail-config.js
ports.js
quality.js
rank.js
redirects.js
robots-txt.js
screenshot.js
security-txt.js
sitemap.js
social-tags.js
ssl.js
status.js
tech-stack.js
threats.js
tls.js
trace-route.js
txt-records.js
whois.js
public
src
.env
.gitignore
Dockerfile
LICENSE
astro.config.mjs
docker-compose.yml
fly.toml
netlify.toml
package.json
server.js
svelte.config.js
tsconfig.json
vercel.json
vite.config.js
yarn.lock
web-check/api/dns.js
2024-05-06 21:51:32 +01:00

56 lines
1.9 KiB
JavaScript

import dns from 'dns';
import util from 'util';
import middleware from './_common/middleware.js';
const dnsHandler = async (url) => {
let hostname = url;
// Handle URLs by extracting hostname
if (hostname.startsWith('http://') || hostname.startsWith('https://')) {
hostname = new URL(hostname).hostname;
}
try {
const lookupPromise = util.promisify(dns.lookup);
const resolve4Promise = util.promisify(dns.resolve4);
const resolve6Promise = util.promisify(dns.resolve6);
const resolveMxPromise = util.promisify(dns.resolveMx);
const resolveTxtPromise = util.promisify(dns.resolveTxt);
const resolveNsPromise = util.promisify(dns.resolveNs);
const resolveCnamePromise = util.promisify(dns.resolveCname);
const resolveSoaPromise = util.promisify(dns.resolveSoa);
const resolveSrvPromise = util.promisify(dns.resolveSrv);
const resolvePtrPromise = util.promisify(dns.resolvePtr);
const [a, aaaa, mx, txt, ns, cname, soa, srv, ptr] = await Promise.all([
lookupPromise(hostname),
resolve4Promise(hostname).catch(() => []), // A record
resolve6Promise(hostname).catch(() => []), // AAAA record
resolveMxPromise(hostname).catch(() => []), // MX record
resolveTxtPromise(hostname).catch(() => []), // TXT record
resolveNsPromise(hostname).catch(() => []), // NS record
resolveCnamePromise(hostname).catch(() => []), // CNAME record
resolveSoaPromise(hostname).catch(() => []), // SOA record
resolveSrvPromise(hostname).catch(() => []), // SRV record
resolvePtrPromise(hostname).catch(() => []) // PTR record
]);
return {
A: a,
AAAA: aaaa,
MX: mx,
TXT: txt,
NS: ns,
CNAME: cname,
SOA: soa,
SRV: srv,
PTR: ptr
};
} catch (error) {
throw new Error(error.message);
}
};
export const handler = middleware(dnsHandler);
export default handler;