Please pardon for this trival question
Given a set of Ip the set is quite large and might increase
https://github.com/client9/ipcat/blob/master/datacenters.csv#L4
Small example set - first column start ip second - end ip range
I will get the user ip from the request . I need to check if the ip falls in these set of ranges . How do i accomplish this.
I have looked into ip_range_check and range_check.
But they donot check for a ip given given range . How is thhis possible in node js with utmost performance. I dont want to go for a exhaustive search as performance is a hight priority.
Please help something new and quite challenging so far to me.
This is quite easy if we convert the ips to simple numbers:
function IPtoNum(ip){
return Number(
ip.split(".")
.map(d => ("000"+d).substr(-3) )
.join("")
);
}
Then we can check a certain range as:
if( IPtoNum(min) < IPtoNum(val) && IPtoNum(max) > IPtoNum(val) ) alert("in range");
That can also be applied to a table:
const ranges = [
["..41", "192.168.45"],
["123.124.125"," 126.124.123"]
];
const ip = "125.12.125";
const inRange = ranges.some(
([min,max]) => IPtoNum(min) < IPtoNum(ip) && IPtoNum(max) > IPtoNum(ip)
);
//Use getCIDR from rangecalc
getCIDR("5.9.0.0", "5.9.255.255")
//This return 5.9.0.0/16
//You can then use ipRangeCheck from ip_range_check
ipRangeCheck("IP TO BE CHECKED", "5.9.0.0/16")
//returns true or false
Pretty sure there's other way to do this.