mirror of
https://github.com/taixingyiji/openit.git
synced 2025-10-26 22:52:20 +00:00
41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
const dns = require('dns').promises;
|
|
const geoip = require('geoip-lite');
|
|
const config = require('./config')
|
|
|
|
Resolver = dns.Resolver;
|
|
resolver = new Resolver();
|
|
resolver.setServers(config.dnsServers);
|
|
|
|
module.exports={
|
|
async get(name){
|
|
let domainReg = /[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.?/g
|
|
let ipReg = /((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d)(\.((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d)){3}/
|
|
if(ipReg.test(name)){
|
|
let geo = geoip.lookup(name);
|
|
if(geo == null){
|
|
return 'unknown'
|
|
}else{
|
|
return geo.country
|
|
}
|
|
}else if(domainReg.test(name)){
|
|
try{
|
|
let address = await resolver.resolve4(name);
|
|
if(address !== null){
|
|
let geo = geoip.lookup(address[0])
|
|
if(geo == null){
|
|
return 'unknown'
|
|
}else{
|
|
return geo.country
|
|
}
|
|
}else{
|
|
return 'unknown'
|
|
}
|
|
}catch(e){
|
|
return 'unknown'
|
|
}
|
|
}else{
|
|
return 'unknown'
|
|
}
|
|
}
|
|
}
|