结合公司用的 pac 使用,获取 apnic 的 geoip 的中国段
var request = require('sync-request');
function convertAddress(ipchars) {
var bytes = ipchars.split('.');
var result = (((bytes[0] & 0xff) << 24) |
((bytes[1] & 0xff) << 16) |
((bytes[2] & 0xff) << 8) |
(bytes[3] & 0xff)) >>> 0;
return result;
}
function convertNetwork(shift) {
var result = (0xffffffff << (32-shift)) >>> 0;
return result;
}
var res = request('GET', 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest');
var s = res.getBody().toString()
var vec = s.split("\n")
var regex = new RegExp("apnic\\|[A-Z]{2}\\|ipv4.*");
//console.log(regex)
console.log("var lists_my = [")
for (index in vec)
{
if (vec[index].match(regex)) {
var vec2 = vec[index].split("|")
if (vec2[1] == "CN") {
var ip_s = vec2[3]
var net_s = vec2[4]
var ip = convertAddress(ip_s)
var tmp = 32 - Math.log2(net_s);
var net = convertNetwork(tmp)
console.log("[" + ip + ", " + net + "],")
}
}
}
console.log("]")