mirror of
https://github.com/fofolee/uTools-quickcommand.git
synced 2025-06-08 22:51:25 +08:00
107 lines
2.4 KiB
JavaScript
107 lines
2.4 KiB
JavaScript
const dns = require("dns");
|
|
const { promisify } = require("util");
|
|
|
|
// 将回调函数转换为 Promise
|
|
const lookup = promisify(dns.lookup);
|
|
const resolve = promisify(dns.resolve);
|
|
const resolve4 = promisify(dns.resolve4);
|
|
const resolve6 = promisify(dns.resolve6);
|
|
const resolveMx = promisify(dns.resolveMx);
|
|
const resolveTxt = promisify(dns.resolveTxt);
|
|
const resolveNs = promisify(dns.resolveNs);
|
|
const resolveCname = promisify(dns.resolveCname);
|
|
const reverse = promisify(dns.reverse);
|
|
|
|
// 解析主机名
|
|
async function lookupHost(hostname, family = 0, all = false) {
|
|
try {
|
|
return await lookup(hostname, { family, all });
|
|
} catch (error) {
|
|
throw new Error(`DNS查询失败: ${error.message}`);
|
|
}
|
|
}
|
|
|
|
// 解析所有记录
|
|
async function resolveAll(hostname) {
|
|
try {
|
|
return await resolve(hostname);
|
|
} catch (error) {
|
|
throw new Error(`DNS解析失败: ${error.message}`);
|
|
}
|
|
}
|
|
|
|
// 解析 IPv4 地址
|
|
async function resolveIpv4(hostname) {
|
|
try {
|
|
return await resolve4(hostname);
|
|
} catch (error) {
|
|
throw new Error(`IPv4解析失败: ${error.message}`);
|
|
}
|
|
}
|
|
|
|
// 解析 IPv6 地址
|
|
async function resolveIpv6(hostname) {
|
|
try {
|
|
return await resolve6(hostname);
|
|
} catch (error) {
|
|
throw new Error(`IPv6解析失败: ${error.message}`);
|
|
}
|
|
}
|
|
|
|
// 解析 MX 记录
|
|
async function resolveMxRecords(hostname) {
|
|
try {
|
|
return await resolveMx(hostname);
|
|
} catch (error) {
|
|
throw new Error(`MX记录解析失败: ${error.message}`);
|
|
}
|
|
}
|
|
|
|
// 解析 TXT 记录
|
|
async function resolveTxtRecords(hostname) {
|
|
try {
|
|
return await resolveTxt(hostname);
|
|
} catch (error) {
|
|
throw new Error(`TXT记录解析失败: ${error.message}`);
|
|
}
|
|
}
|
|
|
|
// 解析 NS 记录
|
|
async function resolveNsRecords(hostname) {
|
|
try {
|
|
return await resolveNs(hostname);
|
|
} catch (error) {
|
|
throw new Error(`NS记录解析失败: ${error.message}`);
|
|
}
|
|
}
|
|
|
|
// 解析 CNAME 记录
|
|
async function resolveCnameRecords(hostname) {
|
|
try {
|
|
return await resolveCname(hostname);
|
|
} catch (error) {
|
|
throw new Error(`CNAME记录解析失败: ${error.message}`);
|
|
}
|
|
}
|
|
|
|
// 反向解析 IP 地址
|
|
async function reverseResolve(ip) {
|
|
try {
|
|
return await reverse(ip);
|
|
} catch (error) {
|
|
throw new Error(`反向解析失败: ${error.message}`);
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
lookupHost,
|
|
resolveAll,
|
|
resolveIpv4,
|
|
resolveIpv6,
|
|
resolveMxRecords,
|
|
resolveTxtRecords,
|
|
resolveNsRecords,
|
|
resolveCnameRecords,
|
|
reverseResolve,
|
|
};
|