better checkTor middleware
This commit is contained in:
		
							parent
							
								
									fdfba24a4f
								
							
						
					
					
						commit
						55106bb40d
					
				@ -1,29 +1,15 @@
 | 
				
			|||||||
var express = require('express');
 | 
					const { promisify } = require('util')
 | 
				
			||||||
var router = express.Router();
 | 
					const dns = require('dns')
 | 
				
			||||||
const dns = require('dns').promises;
 | 
					const lookup = promisify(dns.lookup)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function isExitNode (ip) {
 | 
					// https://www.torproject.org/projects/tordnsel.html.en
 | 
				
			||||||
    ip = ip.split('.').reverse().join('.');
 | 
					// check if request comes from tor
 | 
				
			||||||
    const domain = ip + '.8080.235.126.68.51.ip-port.exitlist.torproject.org'
 | 
					module.exports = async (req, res, next) => {
 | 
				
			||||||
    console.log(domain);
 | 
					    const source_ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress
 | 
				
			||||||
    return dns.lookup(domain, {}).then(ret => {
 | 
					    const ip = source_ip.split('.').reverse().join('.')
 | 
				
			||||||
	if (ret.address === '127.0.0.2') return true;
 | 
					    const server_ip = '51.68.126.235'.split('.').reverse().join('.')
 | 
				
			||||||
	return false;
 | 
					    const domain = `${ip}.80.${server_ip}.ip-port.exitlist.torproject.org`
 | 
				
			||||||
    }).catch( e => false )
 | 
					    const ret = await lookup(domain, {})
 | 
				
			||||||
 | 
					    req.fromTor = (ret.address === '127.0.0.2')
 | 
				
			||||||
 | 
					    next()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
router.get('/', (req, res) => {
 | 
					 | 
				
			||||||
  const source_ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
  isExitNode(source_ip).then( isExit => {
 | 
					 | 
				
			||||||
	  if (isExit) {
 | 
					 | 
				
			||||||
      res.render('torok');
 | 
					 | 
				
			||||||
	  } else {
 | 
					 | 
				
			||||||
		  res.render('tornook');
 | 
					 | 
				
			||||||
	  }
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
module.exports = router;
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user