'use strict'; var os = require('os'); module.exports.find = function (opts) { opts = opts || {}; opts.externals = opts.externals || []; var ifaceMap = os.networkInterfaces(); var newMap = {}; Object.keys(ifaceMap).forEach(function (iname) { var ifaces = ifaceMap[iname]; ifaces = ifaces.filter(function (iface) { return opts.externals.some(function (ip) { if (ip.address === iface.address) { ip.external = true; return true; } }) || (!iface.internal && !/^fe80/.test(iface.address) && !/^[0:]+$/.test(iface.mac)); }); if (!ifaces.length) { return; } newMap[iname] = newMap[iname] || { ipv4: [], ipv6: [] }; ifaces.forEach(function (addr) { addr.iface = iname; if ('IPv4' === addr.family) { newMap[iname].ipv4.push(addr); } else if ('IPv6' === addr.family) { newMap[iname].ipv6.push(addr); } }); }); return newMap; /* https://[2601:681:300:92c0:2477:d58a:d69e:51a0]:8443 console.log(''); console.log(''); console.log(iname); console.log(ifaces); console.log(''); */ };