tor-router/bin/tor-router
2017-01-31 18:16:12 -05:00

54 lines
1.6 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 winston = require('winston')
program
.version('0.0.1')
.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 || Number(process.env.SOCKS_PORT);
let dns_port = program.dnsPort || Number(process.env.DNS_PORT);
if (!instances) {
logger.error('Number of instances not specified');
process.exit(1);
}
let pool = new TorPool('tor', null, logger);
if (log_level === 'null')
logger = void(0);
if (socks_port) {
let socks = new SOCKSServer(pool, logger);
logger && logger.info(`[socks]: Listening on ${socks_port}`);
socks.listen((socks_port));
}
if (dns_port) {
let dns = new DNSServer(pool, logger);
logger && logger.info(`[dns]: Listening on ${dns_port}`);
dns.serve((dns_port));
}
logger && logger.info('[tor]: starting tor...')
pool.create(instances, (err) => {
logger && logger.info('[tor]: tor started');
});