mirror of
				https://github.com/taixingyiji/openit.git
				synced 2025-11-03 01:32:22 +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'
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |