tor-router/bin/tor-router
2017-03-24 20:19:05 -04:00

60 lines
2 KiB
JavaScript
Executable file

#!/usr/bin/env node
var program = require('commander');
var TorRouter = require('../');
var SOCKSServer = TorRouter.SOCKSServer;
var DNSServer = TorRouter.DNSServer;
var TorPool = TorRouter.TorPool;
var ControlServer = TorRouter.ControlServer;
var winston = require('winston')
process.title = 'tor-router';
program
.version(JSON.parse(require('fs').readFileSync(`${__dirname}/../package.json`, 'utf8')).version)
.option('-c, --controlPort [9077]', 'Control Server port', Number)
.option('-j, --instances <1>', 'Number of tor instances', Number)
.option('-s, --socksPort [9050]', 'SOCKS Server port', Number)
.option('-d, --dnsPort [9053]', 'DNS Server port', Number)
.option('-l, --logLevel [info]', 'Log level (defaults to "info") set to "null" to disable logging', Number)
.parse(process.argv);
var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)({ level: (program.logLevel || 'info') })
]
});
let instances = program.instances || Number(process.env.INSTANCES);
let log_level = program.logLevel || process.env.LOG_LEVEL;
let socks_port = (program.socksPort === true ? 9050 : program.socksPort) || Number(process.env.SOCKS_PORT);
let dns_port = (program.dnsPort === true ? 9053 : program.dnsPort) || Number(process.env.DNS_PORT);
let control_port = (program.controlPort === true ? 9077 : program.controlPort) || Number(process.env.CONTROL_PORT) || 9077;
if (log_level === 'null')
logger = void(0);
let control = new ControlServer(logger);
process.on('SIGHUP', () => {
control.torPool.new_ips();
});
if (socks_port) {
let socks = control.createSOCKSServer(socks_port);
}
if (dns_port) {
let dns = control.createDNSServer(dns_port);
}
if (instances) {
logger && logger.info(`[tor]: starting ${instances} tor instances...`)
control.torPool.create(instances, (err) => {
logger && logger.info('[tor]: tor started');
});
}
control.server.listen(control_port, () => {
logger && logger.info(`[control]: Control Server listening on ${control_port}`);
})