Merge pull request #5 from jogli5er/master
Fix issue for dynamically created Tor instances
This commit is contained in:
commit
8ccbd3a1f7
5752
package-lock.json
generated
Normal file
5752
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
|
@ -11,7 +11,8 @@
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "bin/tor-router -s -d -j 1",
|
"start": "bin/tor-router -s -d -j 1",
|
||||||
"test": "mocha test/test.js"
|
"test": "mocha test/test.js",
|
||||||
|
"debug": "node --inspect-brk bin/tor-router"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "^3.2.0",
|
"mocha": "^3.2.0",
|
||||||
|
|
|
@ -6,7 +6,7 @@ const rpc = require('jrpc2');
|
||||||
|
|
||||||
class ControlServer {
|
class ControlServer {
|
||||||
constructor(logger) {
|
constructor(logger) {
|
||||||
var torPool = this.torPool = new TorPool(null, null, logger);
|
this.torPool = this.torPool = new TorPool(null, null, logger);
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
|
|
||||||
let server = this.server = new rpc.Server();
|
let server = this.server = new rpc.Server();
|
||||||
|
@ -15,47 +15,47 @@ class ControlServer {
|
||||||
server.expose('createDNSServer', this.createDNSServer.bind(this));
|
server.expose('createDNSServer', this.createDNSServer.bind(this));
|
||||||
server.expose('createHTTPServer', this.createHTTPServer.bind(this));
|
server.expose('createHTTPServer', this.createHTTPServer.bind(this));
|
||||||
|
|
||||||
server.expose('queryInstances', function () {
|
server.expose('queryInstances', (function () {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if (!torPool)
|
if (!this.torPool)
|
||||||
return reject({ message: 'No pool created' });
|
return reject({ message: 'No pool created' });
|
||||||
|
|
||||||
resolve(torPool.instances.map((i) => ( { dns_port: i.dns_port, socks_port: i.socks_port, process_id: i.process.pid } )) );
|
resolve(this.torPool.instances.map((i) => ( { dns_port: i.dns_port, socks_port: i.socks_port, process_id: i.process.pid } )) );
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
}).bind(this));
|
||||||
|
|
||||||
server.expose('createInstances', function (instances) {
|
server.expose('createInstances', (function (instances) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
torPool.create(instances, (error, instances) => {
|
this.torPool.create(instances, (error, instances) => {
|
||||||
if (error) reject(error);
|
if (error) reject(error);
|
||||||
else resolve();
|
else resolve();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
}).bind(this) );
|
||||||
|
|
||||||
server.expose('removeInstances', function (instances) {
|
server.expose('removeInstances', (function (instances) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
torPool.remove(instances, (error) => {
|
this.torPool.remove(instances, (error) => {
|
||||||
if (error) reject(error);
|
if (error) reject(error);
|
||||||
else resolve();
|
else resolve();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
}).bind(this) );
|
||||||
|
|
||||||
server.expose('newIps', function () {
|
server.expose('newIps', (function() {
|
||||||
torPool.new_ips();
|
this.torPool.new_ips();
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
});
|
}).bind(this) );
|
||||||
|
|
||||||
server.expose('nextInstance', function () {
|
server.expose('nextInstance', (function () {
|
||||||
torPool.next();
|
this.torPool.next();
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
});
|
}).bind(this) );
|
||||||
|
|
||||||
server.expose('closeInstances', function () {
|
server.expose('closeInstances', (function () {
|
||||||
torPool.exit();
|
this.torPool.exit();
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
});
|
}).bind(this) );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,9 @@ class TorPool extends EventEmitter {
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
get instances() { return this._instances.filter((tor) => tor.ready).slice(0); }
|
get instances() {
|
||||||
|
return this._instances.filter((tor) => tor.ready).slice(0);
|
||||||
|
}
|
||||||
|
|
||||||
create_instance(callback) {
|
create_instance(callback) {
|
||||||
let config = _.extend({}, this.tor_config)
|
let config = _.extend({}, this.tor_config)
|
||||||
|
|
Loading…
Reference in a new issue