domotz-remote-pawn
Version:
Domotz Agent
42 lines (33 loc) • 1.07 kB
JavaScript
var ipManager = function (resourceLocator) {
var lodash = resourceLocator.lodash;
function ipToNumber(ip) {
return lodash.reduce(ip.split('.'), function (acc, octet) {
return ((acc << 8) + parseInt(octet, 10)) >>> 0;
}, 0);
}
function isIpInList(ipList, ip) {
return ipList && ipList.includes(ip);
}
function isIpInRange(ipRange, ip){
var ipNum = ipToNumber(ip);
var parts = ipRange.split('-');
var startIp = parts[0];
var endIp;
if (lodash.includes(parts[1], '.')) {
endIp = parts[1];
} else {
var baseParts = startIp.split('.');
baseParts[3] = parts[1];
endIp = baseParts.join('.');
}
var startIpNum = ipToNumber(startIp);
var endIpNum = ipToNumber(endIp);
return ipNum >= startIpNum && ipNum <= endIpNum;
}
return {
ipToNumber: ipToNumber,
isIpInList: isIpInList,
isIpInRange: isIpInRange,
};
};
module.exports.factory = ipManager;