123456789101112131415161718192021222324252627282930313233343536373839 |
- const { promisify } = require('util')
- const dns = require('dns')
- const lookup = promisify(dns.lookup)
- const request = require('request')
- // https://www.torproject.org/projects/tordnsel.html.en
- // check if request comes from tor
- const fromTor = async (req, res, next) => {
- const sourceIp = req.headers['x-forwarded-for'] || req.connection.remoteAddress
- const ip = sourceIp.split('.').reverse().join('.')
- const serverIp = '51.68.126.235'.split('.').reverse().join('.')
- const domain = `${ip}.80.${serverIp}.ip-port.exitlist.torproject.org`
- try {
- const ret = await lookup(domain, {})
- req.fromTor = (ret.address === '127.0.0.2')
- } catch(e) {
- req.fromTor = false
- }
- next()
- }
- // check if request comes from proxy/VPN/tor
- const fromVpn = async (req, res, next) => {
- const sourceIp = req.headers['x-forwarded-for'] || req.connection.remoteAddress
- const baseUrl = 'https://check.getipintel.net/check.php?ip='
- const url = `${baseUrl}${sourceIp}&contact=anna@fugadalcontrollo.org`
- console.log(url);
- request(url,
- (err, res, body) => {
- if (!err && res.statusCode === 200) {
- console.log(body)
- } else {
- console.log(err, body)
- }
- })
- }
- module.exports = { fromTor, fromVpn }
|