networkInterfaces() catch errors
This commit is contained in:
parent
2bc1ee6621
commit
4f60a4c947
@ -30,6 +30,7 @@ For major (breaking) changes - version 3 and 2 see end of page.
|
|||||||
|
|
||||||
| Version | Date | Comment |
|
| Version | Date | Comment |
|
||||||
| -------------- | -------------- | -------- |
|
| -------------- | -------------- | -------- |
|
||||||
|
| 4.34.6 | 2020-01-12 | `networkInterfaces()` catch errors |
|
||||||
| 4.34.5 | 2020-01-07 | `networkInterfaceDefault()` fixed CMD popup (windows) |
|
| 4.34.5 | 2020-01-07 | `networkInterfaceDefault()` fixed CMD popup (windows) |
|
||||||
| 4.34.4 | 2020-01-06 | `system()` fixed vitrual catch error |
|
| 4.34.4 | 2020-01-06 | `system()` fixed vitrual catch error |
|
||||||
| 4.34.3 | 2020-01-06 | `graphics()` fixed non nvidia-smi controllers (win) |
|
| 4.34.3 | 2020-01-06 | `graphics()` fixed non nvidia-smi controllers (win) |
|
||||||
|
|||||||
@ -83,6 +83,11 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">4.34.6</th>
|
||||||
|
<td>2020-01-12</td>
|
||||||
|
<td><span class="code">networkInterfaces()</span> catch errors</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">4.34.5</th>
|
<th scope="row">4.34.5</th>
|
||||||
<td>2020-01-07</td>
|
<td>2020-01-07</td>
|
||||||
@ -2059,4 +2064,4 @@
|
|||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -169,7 +169,7 @@
|
|||||||
<img class="logo" src="assets/logo.png">
|
<img class="logo" src="assets/logo.png">
|
||||||
<div class="title">systeminformation</div>
|
<div class="title">systeminformation</div>
|
||||||
<div class="subtitle"><span id="typed"></span></div>
|
<div class="subtitle"><span id="typed"></span></div>
|
||||||
<div class="version">Current Version: <span id="version">4.34.5</span></div>
|
<div class="version">Current Version: <span id="version">4.34.6</span></div>
|
||||||
<button class="btn btn-light" onclick="location.href='https://github.com/sebhildebrandt/systeminformation'">View on Github <i class=" fab fa-github"></i></button>
|
<button class="btn btn-light" onclick="location.href='https://github.com/sebhildebrandt/systeminformation'">View on Github <i class=" fab fa-github"></i></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="down">
|
<div class="down">
|
||||||
@ -208,7 +208,7 @@
|
|||||||
<div class="title">Downloads last month</div>
|
<div class="title">Downloads last month</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xl-4 col-lg-4 col-md-4 col-12">
|
<div class="col-xl-4 col-lg-4 col-md-4 col-12">
|
||||||
<div class="numbers">366</div>
|
<div class="numbers">367</div>
|
||||||
<div class="title">Dependents</div>
|
<div class="title">Dependents</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
369
lib/network.js
369
lib/network.js
@ -685,132 +685,133 @@ function networkInterfaces(callback, rescan = true) {
|
|||||||
}
|
}
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
process.nextTick(() => {
|
process.nextTick(() => {
|
||||||
let ifaces = os.networkInterfaces();
|
|
||||||
|
|
||||||
let result = [];
|
let result = [];
|
||||||
let nics = [];
|
let nics = [];
|
||||||
let dnsSuffixes = [];
|
let dnsSuffixes = [];
|
||||||
let nics8021xInfo = [];
|
let nics8021xInfo = [];
|
||||||
// seperate handling in OSX
|
try {
|
||||||
if (_darwin || _freebsd || _openbsd || _netbsd) {
|
let ifaces = os.networkInterfaces();
|
||||||
nics = getDarwinNics();
|
|
||||||
|
// seperate handling in OSX
|
||||||
|
if (_darwin || _freebsd || _openbsd || _netbsd) {
|
||||||
|
nics = getDarwinNics();
|
||||||
|
|
||||||
|
|
||||||
nics.forEach(nic => {
|
nics.forEach(nic => {
|
||||||
|
|
||||||
if ({}.hasOwnProperty.call(ifaces, nic.iface)) {
|
if ({}.hasOwnProperty.call(ifaces, nic.iface)) {
|
||||||
ifaces[nic.iface].forEach(function (details) {
|
ifaces[nic.iface].forEach(function (details) {
|
||||||
if (details.family === 'IPv4') {
|
if (details.family === 'IPv4') {
|
||||||
nic.ip4subnet = details.netmask;
|
nic.ip4subnet = details.netmask;
|
||||||
}
|
}
|
||||||
if (details.family === 'IPv6') {
|
if (details.family === 'IPv6') {
|
||||||
nic.ip6subnet = details.netmask;
|
nic.ip6subnet = details.netmask;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
result.push({
|
||||||
|
iface: nic.iface,
|
||||||
|
ifaceName: nic.iface,
|
||||||
|
ip4: nic.ip4,
|
||||||
|
ip4subnet: nic.ip4subnet || '',
|
||||||
|
ip6: nic.ip6,
|
||||||
|
ip6subnet: nic.ip6subnet || '',
|
||||||
|
mac: nic.mac,
|
||||||
|
internal: nic.internal,
|
||||||
|
virtual: nic.internal ? false : testVirtualNic(nic.iface, nic.iface, nic.mac),
|
||||||
|
operstate: nic.operstate,
|
||||||
|
type: nic.type,
|
||||||
|
duplex: nic.duplex,
|
||||||
|
mtu: nic.mtu,
|
||||||
|
speed: nic.speed,
|
||||||
|
dhcp: getDarwinIfaceDHCPstatus(nic.iface),
|
||||||
|
dnsSuffix: '',
|
||||||
|
ieee8021xAuth: '',
|
||||||
|
ieee8021xState: '',
|
||||||
|
carrierChanges: 0
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
result.push({
|
|
||||||
iface: nic.iface,
|
|
||||||
ifaceName: nic.iface,
|
|
||||||
ip4: nic.ip4,
|
|
||||||
ip4subnet: nic.ip4subnet || '',
|
|
||||||
ip6: nic.ip6,
|
|
||||||
ip6subnet: nic.ip6subnet || '',
|
|
||||||
mac: nic.mac,
|
|
||||||
internal: nic.internal,
|
|
||||||
virtual: nic.internal ? false : testVirtualNic(nic.iface, nic.iface, nic.mac),
|
|
||||||
operstate: nic.operstate,
|
|
||||||
type: nic.type,
|
|
||||||
duplex: nic.duplex,
|
|
||||||
mtu: nic.mtu,
|
|
||||||
speed: nic.speed,
|
|
||||||
dhcp: getDarwinIfaceDHCPstatus(nic.iface),
|
|
||||||
dnsSuffix: '',
|
|
||||||
ieee8021xAuth: '',
|
|
||||||
ieee8021xState: '',
|
|
||||||
carrierChanges: 0
|
|
||||||
});
|
});
|
||||||
});
|
_networkInterfaces = result;
|
||||||
_networkInterfaces = result;
|
|
||||||
if (callback) { callback(result); }
|
|
||||||
resolve(result);
|
|
||||||
} else {
|
|
||||||
if ((JSON.stringify(ifaces) === JSON.stringify(_ifaces)) && !rescan) {
|
|
||||||
// no changes - just return object
|
|
||||||
result = _networkInterfaces;
|
|
||||||
|
|
||||||
if (callback) { callback(result); }
|
if (callback) { callback(result); }
|
||||||
resolve(result);
|
resolve(result);
|
||||||
} else {
|
} else {
|
||||||
_ifaces = Object.assign({}, ifaces);
|
if ((JSON.stringify(ifaces) === JSON.stringify(_ifaces)) && !rescan) {
|
||||||
|
// no changes - just return object
|
||||||
|
result = _networkInterfaces;
|
||||||
|
|
||||||
|
if (callback) { callback(result); }
|
||||||
|
resolve(result);
|
||||||
|
} else {
|
||||||
|
_ifaces = Object.assign({}, ifaces);
|
||||||
|
|
||||||
|
if (_windows) {
|
||||||
|
nics = getWindowsNics();
|
||||||
|
nics.forEach(nic => {
|
||||||
|
let found = false;
|
||||||
|
Object.keys(ifaces).forEach(key => {
|
||||||
|
if (!found) {
|
||||||
|
ifaces[key].forEach(value => {
|
||||||
|
if (Object.keys(value).indexOf('mac') >= 0) {
|
||||||
|
found = value['mac'] === nic.mac;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (_windows) {
|
|
||||||
nics = getWindowsNics();
|
|
||||||
nics.forEach(nic => {
|
|
||||||
let found = false;
|
|
||||||
Object.keys(ifaces).forEach(key => {
|
|
||||||
if (!found) {
|
if (!found) {
|
||||||
ifaces[key].forEach(value => {
|
ifaces[nic.name] = [{ mac: nic.mac }];
|
||||||
if (Object.keys(value).indexOf('mac') >= 0) {
|
}
|
||||||
found = value['mac'] === nic.mac;
|
});
|
||||||
|
|
||||||
|
nics8021xInfo = getWindowsWiredProfilesInformation();
|
||||||
|
dnsSuffixes = getWindowsDNSsuffixes();
|
||||||
|
}
|
||||||
|
if (_linux) {
|
||||||
|
_dhcpNics = getLinuxDHCPNics();
|
||||||
|
}
|
||||||
|
for (let dev in ifaces) {
|
||||||
|
let ip4 = '';
|
||||||
|
let ip4subnet = '';
|
||||||
|
let ip6 = '';
|
||||||
|
let ip6subnet = '';
|
||||||
|
let mac = '';
|
||||||
|
let duplex = '';
|
||||||
|
let mtu = '';
|
||||||
|
let speed = -1;
|
||||||
|
let carrierChanges = 0;
|
||||||
|
let operstate = 'down';
|
||||||
|
let dhcp = false;
|
||||||
|
let dnsSuffix = '';
|
||||||
|
let ieee8021xAuth = '';
|
||||||
|
let ieee8021xState = '';
|
||||||
|
let type = '';
|
||||||
|
|
||||||
|
if ({}.hasOwnProperty.call(ifaces, dev)) {
|
||||||
|
let ifaceName = dev;
|
||||||
|
ifaces[dev].forEach(function (details) {
|
||||||
|
if (details.family === 'IPv4') {
|
||||||
|
ip4 = details.address;
|
||||||
|
ip4subnet = details.netmask;
|
||||||
|
}
|
||||||
|
if (details.family === 'IPv6') {
|
||||||
|
if (!ip6 || ip6.match(/^fe80::/i)) {
|
||||||
|
ip6 = details.address;
|
||||||
|
ip6subnet = details.netmask;
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!found) {
|
|
||||||
ifaces[nic.name] = [{ mac: nic.mac }];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
nics8021xInfo = getWindowsWiredProfilesInformation();
|
|
||||||
dnsSuffixes = getWindowsDNSsuffixes();
|
|
||||||
}
|
|
||||||
if (_linux) {
|
|
||||||
_dhcpNics = getLinuxDHCPNics();
|
|
||||||
}
|
|
||||||
for (let dev in ifaces) {
|
|
||||||
let ip4 = '';
|
|
||||||
let ip4subnet = '';
|
|
||||||
let ip6 = '';
|
|
||||||
let ip6subnet = '';
|
|
||||||
let mac = '';
|
|
||||||
let duplex = '';
|
|
||||||
let mtu = '';
|
|
||||||
let speed = -1;
|
|
||||||
let carrierChanges = 0;
|
|
||||||
let operstate = 'down';
|
|
||||||
let dhcp = false;
|
|
||||||
let dnsSuffix = '';
|
|
||||||
let ieee8021xAuth = '';
|
|
||||||
let ieee8021xState = '';
|
|
||||||
let type = '';
|
|
||||||
|
|
||||||
if ({}.hasOwnProperty.call(ifaces, dev)) {
|
|
||||||
let ifaceName = dev;
|
|
||||||
ifaces[dev].forEach(function (details) {
|
|
||||||
if (details.family === 'IPv4') {
|
|
||||||
ip4 = details.address;
|
|
||||||
ip4subnet = details.netmask;
|
|
||||||
}
|
|
||||||
if (details.family === 'IPv6') {
|
|
||||||
if (!ip6 || ip6.match(/^fe80::/i)) {
|
|
||||||
ip6 = details.address;
|
|
||||||
ip6subnet = 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)
|
if (mac.indexOf('00:00:0') > -1 && (_linux || _darwin) && parseInt(process.versions.node.split('.'), 10) === 8) {
|
||||||
if (mac.indexOf('00:00:0') > -1 && (_linux || _darwin) && parseInt(process.versions.node.split('.'), 10) === 8) {
|
if (Object.keys(_mac).length === 0) {
|
||||||
if (Object.keys(_mac).length === 0) {
|
_mac = getMacAddresses();
|
||||||
_mac = getMacAddresses();
|
}
|
||||||
|
mac = _mac[dev] || '';
|
||||||
}
|
}
|
||||||
mac = _mac[dev] || '';
|
});
|
||||||
}
|
if (_linux) {
|
||||||
});
|
let iface = dev.split(':')[0].trim().toLowerCase();
|
||||||
if (_linux) {
|
const cmd = `echo -n "addr_assign_type: "; cat /sys/class/net/${iface}/addr_assign_type 2>/dev/null; echo;
|
||||||
let iface = dev.split(':')[0].trim().toLowerCase();
|
|
||||||
const cmd = `echo -n "addr_assign_type: "; cat /sys/class/net/${iface}/addr_assign_type 2>/dev/null; echo;
|
|
||||||
echo -n "address: "; cat /sys/class/net/${iface}/address 2>/dev/null; echo;
|
echo -n "address: "; cat /sys/class/net/${iface}/address 2>/dev/null; echo;
|
||||||
echo -n "addr_len: "; cat /sys/class/net/${iface}/addr_len 2>/dev/null; echo;
|
echo -n "addr_len: "; cat /sys/class/net/${iface}/addr_len 2>/dev/null; echo;
|
||||||
echo -n "broadcast: "; cat /sys/class/net/${iface}/broadcast 2>/dev/null; echo;
|
echo -n "broadcast: "; cat /sys/class/net/${iface}/broadcast 2>/dev/null; echo;
|
||||||
@ -836,86 +837,90 @@ function networkInterfaces(callback, rescan = true) {
|
|||||||
echo -n "wireless: "; cat /proc/net/wireless 2>/dev/null \| grep ${iface}; echo;
|
echo -n "wireless: "; cat /proc/net/wireless 2>/dev/null \| grep ${iface}; echo;
|
||||||
echo -n "wirelessspeed: "; iw dev ${iface} link 2>&1 \| grep bitrate; echo;`;
|
echo -n "wirelessspeed: "; iw dev ${iface} link 2>&1 \| grep bitrate; echo;`;
|
||||||
|
|
||||||
let lines = [];
|
let lines = [];
|
||||||
try {
|
try {
|
||||||
lines = execSync(cmd).toString().split('\n');
|
lines = execSync(cmd).toString().split('\n');
|
||||||
const connectionName = getLinuxIfaceConnectionName(iface);
|
const connectionName = getLinuxIfaceConnectionName(iface);
|
||||||
dhcp = getLinuxIfaceDHCPstatus(iface, connectionName, _dhcpNics);
|
dhcp = getLinuxIfaceDHCPstatus(iface, connectionName, _dhcpNics);
|
||||||
dnsSuffix = getLinuxIfaceDNSsuffix(connectionName);
|
dnsSuffix = getLinuxIfaceDNSsuffix(connectionName);
|
||||||
ieee8021xAuth = getLinuxIfaceIEEE8021xAuth(connectionName);
|
ieee8021xAuth = getLinuxIfaceIEEE8021xAuth(connectionName);
|
||||||
ieee8021xState = getLinuxIfaceIEEE8021xState(ieee8021xAuth);
|
ieee8021xState = getLinuxIfaceIEEE8021xState(ieee8021xAuth);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
util.noop();
|
util.noop();
|
||||||
}
|
|
||||||
duplex = util.getValue(lines, 'duplex');
|
|
||||||
duplex = duplex.startsWith('cat') ? '' : duplex;
|
|
||||||
mtu = parseInt(util.getValue(lines, 'mtu'), 10);
|
|
||||||
let myspeed = parseInt(util.getValue(lines, 'speed'), 10);
|
|
||||||
speed = isNaN(myspeed) ? -1 : myspeed;
|
|
||||||
let wirelessspeed = util.getValue(lines, 'wirelessspeed').split('tx bitrate: ');
|
|
||||||
if (speed === -1 && wirelessspeed.length === 2) {
|
|
||||||
myspeed = parseFloat(wirelessspeed[1]);
|
|
||||||
speed = isNaN(myspeed) ? -1 : myspeed;
|
|
||||||
}
|
|
||||||
carrierChanges = parseInt(util.getValue(lines, 'carrier_changes'), 10);
|
|
||||||
operstate = util.getValue(lines, 'operstate');
|
|
||||||
type = operstate === 'up' ? (util.getValue(lines, 'wireless').trim() ? 'wireless' : 'wired') : 'unknown';
|
|
||||||
if (iface === 'lo' || iface.startsWith('bond')) { type = 'virtual'; }
|
|
||||||
}
|
|
||||||
if (_windows) {
|
|
||||||
|
|
||||||
|
|
||||||
dnsSuffix = getWindowsIfaceDNSsuffix(dnsSuffixes.ifaces, dev);
|
|
||||||
nics.forEach(detail => {
|
|
||||||
if (detail.mac === mac) {
|
|
||||||
ifaceName = detail.name;
|
|
||||||
dhcp = detail.dhcp;
|
|
||||||
operstate = detail.operstate;
|
|
||||||
speed = detail.speed;
|
|
||||||
type = detail.type;
|
|
||||||
}
|
}
|
||||||
});
|
duplex = util.getValue(lines, 'duplex');
|
||||||
|
duplex = duplex.startsWith('cat') ? '' : duplex;
|
||||||
if (dev.toLowerCase().indexOf('wlan') >= 0 || ifaceName.toLowerCase().indexOf('wlan') >= 0 || ifaceName.toLowerCase().indexOf('802.11n') >= 0 || ifaceName.toLowerCase().indexOf('wireless') >= 0 || ifaceName.toLowerCase().indexOf('wi-fi') >= 0 || ifaceName.toLowerCase().indexOf('wifi') >= 0) {
|
mtu = parseInt(util.getValue(lines, 'mtu'), 10);
|
||||||
type = 'wireless';
|
let myspeed = parseInt(util.getValue(lines, 'speed'), 10);
|
||||||
|
speed = isNaN(myspeed) ? -1 : myspeed;
|
||||||
|
let wirelessspeed = util.getValue(lines, 'wirelessspeed').split('tx bitrate: ');
|
||||||
|
if (speed === -1 && wirelessspeed.length === 2) {
|
||||||
|
myspeed = parseFloat(wirelessspeed[1]);
|
||||||
|
speed = isNaN(myspeed) ? -1 : myspeed;
|
||||||
|
}
|
||||||
|
carrierChanges = parseInt(util.getValue(lines, 'carrier_changes'), 10);
|
||||||
|
operstate = util.getValue(lines, 'operstate');
|
||||||
|
type = operstate === 'up' ? (util.getValue(lines, 'wireless').trim() ? 'wireless' : 'wired') : 'unknown';
|
||||||
|
if (iface === 'lo' || iface.startsWith('bond')) { type = 'virtual'; }
|
||||||
}
|
}
|
||||||
|
if (_windows) {
|
||||||
|
|
||||||
const IEEE8021x = getWindowsIEEE8021x(type, dev, nics8021xInfo);
|
|
||||||
ieee8021xAuth = IEEE8021x.protocol;
|
dnsSuffix = getWindowsIfaceDNSsuffix(dnsSuffixes.ifaces, dev);
|
||||||
ieee8021xState = IEEE8021x.state;
|
nics.forEach(detail => {
|
||||||
|
if (detail.mac === mac) {
|
||||||
|
ifaceName = detail.name;
|
||||||
|
dhcp = detail.dhcp;
|
||||||
|
operstate = detail.operstate;
|
||||||
|
speed = detail.speed;
|
||||||
|
type = detail.type;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (dev.toLowerCase().indexOf('wlan') >= 0 || ifaceName.toLowerCase().indexOf('wlan') >= 0 || ifaceName.toLowerCase().indexOf('802.11n') >= 0 || ifaceName.toLowerCase().indexOf('wireless') >= 0 || ifaceName.toLowerCase().indexOf('wi-fi') >= 0 || ifaceName.toLowerCase().indexOf('wifi') >= 0) {
|
||||||
|
type = 'wireless';
|
||||||
|
}
|
||||||
|
|
||||||
|
const IEEE8021x = getWindowsIEEE8021x(type, dev, nics8021xInfo);
|
||||||
|
ieee8021xAuth = IEEE8021x.protocol;
|
||||||
|
ieee8021xState = IEEE8021x.state;
|
||||||
|
}
|
||||||
|
let internal = (ifaces[dev] && ifaces[dev][0]) ? ifaces[dev][0].internal : false;
|
||||||
|
if (dev.toLowerCase().indexOf('loopback') > -1 || ifaceName.toLowerCase().indexOf('loopback') > -1) {
|
||||||
|
internal = true;
|
||||||
|
}
|
||||||
|
const virtual = internal ? false : testVirtualNic(dev, ifaceName, mac);
|
||||||
|
result.push({
|
||||||
|
iface: dev,
|
||||||
|
ifaceName,
|
||||||
|
ip4,
|
||||||
|
ip4subnet,
|
||||||
|
ip6,
|
||||||
|
ip6subnet,
|
||||||
|
mac,
|
||||||
|
internal,
|
||||||
|
virtual,
|
||||||
|
operstate,
|
||||||
|
type,
|
||||||
|
duplex,
|
||||||
|
mtu,
|
||||||
|
speed,
|
||||||
|
dhcp,
|
||||||
|
dnsSuffix,
|
||||||
|
ieee8021xAuth,
|
||||||
|
ieee8021xState,
|
||||||
|
carrierChanges,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
let internal = (ifaces[dev] && ifaces[dev][0]) ? ifaces[dev][0].internal : false;
|
|
||||||
if (dev.toLowerCase().indexOf('loopback') > -1 || ifaceName.toLowerCase().indexOf('loopback') > -1) {
|
|
||||||
internal = true;
|
|
||||||
}
|
|
||||||
const virtual = internal ? false : testVirtualNic(dev, ifaceName, mac);
|
|
||||||
result.push({
|
|
||||||
iface: dev,
|
|
||||||
ifaceName,
|
|
||||||
ip4,
|
|
||||||
ip4subnet,
|
|
||||||
ip6,
|
|
||||||
ip6subnet,
|
|
||||||
mac,
|
|
||||||
internal,
|
|
||||||
virtual,
|
|
||||||
operstate,
|
|
||||||
type,
|
|
||||||
duplex,
|
|
||||||
mtu,
|
|
||||||
speed,
|
|
||||||
dhcp,
|
|
||||||
dnsSuffix,
|
|
||||||
ieee8021xAuth,
|
|
||||||
ieee8021xState,
|
|
||||||
carrierChanges,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
_networkInterfaces = result;
|
||||||
|
if (callback) { callback(result); }
|
||||||
|
resolve(result);
|
||||||
}
|
}
|
||||||
_networkInterfaces = result;
|
|
||||||
if (callback) { callback(result); }
|
|
||||||
resolve(result);
|
|
||||||
}
|
}
|
||||||
|
} catch (e) {
|
||||||
|
if (callback) { callback(result); }
|
||||||
|
resolve(result);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user