iptocc
Version:
look up country code from ip (ipv4)
29 lines (24 loc) • 869 B
JavaScript
const fs = require('fs');
const path = require('path');
const ipBuffer = fs.readFileSync(path.resolve(__dirname,'./ipBuffer'));
const indexBuffer = fs.readFileSync(path.resolve(__dirname,'./ipIndexBuffer'));
const cc = require(path.resolve(__dirname,'./country.json'));
let ccmap = {};
for(let key in cc){
ccmap[cc[key]] = key.toUpperCase();
}
const ipBufferLength = ipBuffer.length;
module.exports = function(ip){
let ipInfo = ip.trim().split('.') ;
let ipInt = new Buffer(ipInfo).readUInt32BE(0);
const preIp = (ipInfo[0]<<8)+parseInt(ipInfo[1]);
let start = indexBuffer.slice(preIp*4,preIp*4+4).readUInt32BE(0);
let result = '--';
for(let i = start*5;i<ipBufferLength;i= i+5){
if(ipBuffer.slice(i,i+4).readUInt32BE(0)>=ipInt){
result = ccmap[ipBuffer[i+4]];
break;
}
}
return result;
}