UNPKG

af-consul

Version:

A highly specialized function library

41 lines 1.37 kB
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