af-consul
Version:
A highly specialized function library
41 lines • 1.37 kB
JavaScript
import * as os from 'os';
import * as dns from 'dns';
import { minimizeCache } from './utils';
// Returns fully qualified domain name
export const getFQDN = (h, withError, onlyDomain) => {
h = h || os.hostname();
return new Promise((resolve, reject) => {
dns.lookup(h, { hints: dns.ADDRCONFIG }, (err, ip) => {
if (err) {
return withError ? reject(err) : resolve(null);
}
dns.lookupService(ip, 0, (err2, hostname) => {
if (err2) {
return withError ? reject(err2) : resolve(null);
}
if (onlyDomain && !/\.[a-z]+$/i.test(hostname)) {
resolve(null);
return;
}
resolve(hostname);
});
});
});
};
const fqdnCache = {};
export const getFQDNCached = async (...args) => {
var _a;
const hostNameOrIP = args[0] || os.hostname() || '-';
minimizeCache(fqdnCache, 10);
if (!fqdnCache[hostNameOrIP]) {
const fqdn = await getFQDN(...args);
if (fqdn) {
fqdnCache[hostNameOrIP] = {
created: Date.now(),
value: fqdn,
};
}
}
return ((_a = fqdnCache[hostNameOrIP]) === null || _a === void 0 ? void 0 : _a.value) || null;
};
//# sourceMappingURL=fqdn.js.map