nanoleaf-cove
Version:
Simple NanoLeaf Api for Node.js
85 lines (84 loc) • 2.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var mOs = require('os');
var os;
if (typeof window !== 'undefined' && typeof window.os !== undefined)
os = window.os;
else
os = mOs;
var getBroadcastNetworkInterfaces = function () {
var list = [];
var netifs = mOs.networkInterfaces();
for (var dev in netifs) {
netifs[dev].forEach(function (info) {
if (info.family !== 'IPv4' || info.internal === true) {
return;
}
if (/^169\.254\./.test(info.address)) {
return;
}
list.push(getBroadcastAddress(info));
});
}
return list;
};
var getHostIPNetworkInterfaces = function () {
var list = [];
var netifs = mOs.networkInterfaces();
for (var dev in netifs) {
netifs[dev].forEach(function (info) {
if (info.family !== 'IPv4' || info.internal === true) {
return;
}
if (/^169\.254\./.test(info.address)) {
return;
}
list.push(info.address);
});
}
return list;
};
var getNetworkInterfaces = function () {
var list = [];
var netifs = mOs.networkInterfaces();
for (var dev in netifs) {
netifs[dev].forEach(function (info) {
if (info.family !== 'IPv4' || info.internal === true) {
return;
}
if (/^169\.254\./.test(info.address)) {
return;
}
info['broadcast'] = getBroadcastAddress(info);
list.push(info);
});
}
return list;
};
var getBroadcastAddress = function (info) {
var addr_parts = convIPv4ToNumList(info.address);
var mask_parts = convIPv4ToNumList(info.netmask);
var cast_parts = [];
for (var i = 0; i < 4; i++) {
if (mask_parts[i] === 0) {
cast_parts.push(255);
}
else {
cast_parts.push(addr_parts[i]);
}
}
return cast_parts.join('.');
};
var convIPv4ToNumList = function (address) {
var parts = address.split(/\./);
var list = [];
parts.forEach(function (n, i) {
list.push(parseInt(n, 10));
});
return list;
};
exports.default = {
getBroadcastNetworkInterfaces: getBroadcastNetworkInterfaces,
getHostIPNetworkInterfaces: getHostIPNetworkInterfaces,
getNetworkInterfaces: getNetworkInterfaces,
};