mirror of
				https://github.com/taixingyiji/openit.git
				synced 2025-10-31 14:12:19 +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'
 | |
|         }
 | |
|     }
 | |
| }
 |