mirror of
				https://github.com/taixingyiji/openit.git
				synced 2025-10-31 14:22:14 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.5 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 '火星'
 | |
|                     }else{
 | |
|                 if(geo.country == null){
 | |
|                     return "火星"
 | |
|                 }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 '火星'
 | |
|                     }else{
 | |
|                         if(geo.country == null){
 | |
|                             return "火星"
 | |
|                         }else{
 | |
|                             return geo.country
 | |
|                         }
 | |
|                     }
 | |
|                 }else{
 | |
|                     return '火星'
 | |
|                 }
 | |
|             }catch(e){
 | |
|                 return '火星'
 | |
|             }
 | |
|         }else{
 | |
|             return '火星'
 | |
|         }
 | |
|     }
 | |
| }
 |