Files
openit/utils/rm/location.js
2022-07-20 13:34:29 +08:00

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'
}
}
}