networkInterface() fix secondary and link-local ip
This commit is contained in:
parent
69b406913e
commit
6b160d9a90
@ -872,18 +872,36 @@ function networkInterfaces(callback, rescan, defaultString) {
|
|||||||
let ieee8021xState = '';
|
let ieee8021xState = '';
|
||||||
let type = '';
|
let type = '';
|
||||||
|
|
||||||
|
let ip4link = '';
|
||||||
|
let ip4linksubnet = '';
|
||||||
|
let ip6link = '';
|
||||||
|
let ip6linksubnet = '';
|
||||||
|
|
||||||
if ({}.hasOwnProperty.call(ifaces, dev)) {
|
if ({}.hasOwnProperty.call(ifaces, dev)) {
|
||||||
let ifaceName = dev;
|
const ifaceName = dev;
|
||||||
ifaces[dev].forEach(function (details) {
|
ifaces[dev].forEach((details) => {
|
||||||
if (details.family === 'IPv4' || details.family === 4) {
|
if (details.family === 'IPv4' || details.family === 4) {
|
||||||
|
if (ip4.match(/^169.254/i)) {
|
||||||
|
ip4link = details.address;
|
||||||
|
ip4linksubnet = details.netmask;
|
||||||
|
} else if (!ip4) {
|
||||||
|
ip4 = details.address;
|
||||||
|
ip4subnet = details.netmask;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!ip4 && (details.family === 'IPv4' || details.family === 4)) {
|
||||||
ip4 = details.address;
|
ip4 = details.address;
|
||||||
ip4subnet = details.netmask;
|
ip4subnet = details.netmask;
|
||||||
}
|
}
|
||||||
if (details.family === 'IPv6' || details.family === 6) {
|
if (details.family === 'IPv6' || details.family === 6) {
|
||||||
if (!ip6 || ip6.match(/^fe80::/i)) {
|
if (!ip6 && !ip6.match(/^fe80::/i)) {
|
||||||
ip6 = details.address;
|
ip6 = details.address;
|
||||||
ip6subnet = details.netmask;
|
ip6subnet = details.netmask;
|
||||||
}
|
}
|
||||||
|
if (ip6.match(/^fe80::/i)) {
|
||||||
|
ip6link = details.address;
|
||||||
|
ip6linksubnet = details.netmask;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
mac = details.mac;
|
mac = details.mac;
|
||||||
// fallback due to https://github.com/nodejs/node/issues/13581 (node 8.1 - node 8.2)
|
// fallback due to https://github.com/nodejs/node/issues/13581 (node 8.1 - node 8.2)
|
||||||
@ -895,7 +913,15 @@ function networkInterfaces(callback, rescan, defaultString) {
|
|||||||
mac = _mac[dev] || '';
|
mac = _mac[dev] || '';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
let iface = dev.split(':')[0].trim().toLowerCase();
|
if (!ip4 && ip4link) {
|
||||||
|
ip4 = ip4link;
|
||||||
|
ip4subnet = ip4linksubnet;
|
||||||
|
}
|
||||||
|
if (!ip6 && ip6link) {
|
||||||
|
ip6 = ip6link;
|
||||||
|
ip6subnet = ip6linksubnet;
|
||||||
|
}
|
||||||
|
const iface = dev.split(':')[0].trim().toLowerCase();
|
||||||
let ifaceSanitized = '';
|
let ifaceSanitized = '';
|
||||||
const s = util.isPrototypePolluted() ? '---' : util.sanitizeShellString(iface);
|
const s = util.isPrototypePolluted() ? '---' : util.sanitizeShellString(iface);
|
||||||
const l = util.mathMin(s.length, 2000);
|
const l = util.mathMin(s.length, 2000);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user