spee.ch/server/controllers/api/tor/index.js
2018-06-27 17:39:41 -07:00

51 lines
1.2 KiB
JavaScript

const logger = require('winston');
const db = require('../../../models');
const { details: { ipAddress } } = require('@config/siteConfig');
/*
Route to update and return tor exit nodes that can connect to this ip address
*/
const getTorList = (req, res) => {
return fetch(`https://check.torproject.org/api/bulk?ip=${ipAddress}&port=80`)
.then(response => {
return response.json();
})
.then( jsonResponse => {
const torList = [];
for (let i = 0; i < jsonResponse.length; i++) {
torList.push({
address: jsonResponse[i].Address,
fingerprint: jsonResponse[i].Fingerprint,
});
}
return db.Tor.destroy({
truncate: true,
})
.then(() => {
return db.Tor.bulkCreate(torList)
})
})
.then(() => {
return db.Tor.findAll({
attributes: ['address', 'fingerprint'],
})
.map(el => el.get({ plain: true }));
})
.then( result => {
logger.debug('number of records', result.length);
res.status(200).json(result);
})
.catch((error) => {
logger.error(error);
res.status(500).json({
success: false,
error,
})
});
};
module.exports = getTorList;