Uses the Control Protocol to request a new identity. Replaces 'new_ip' with 'new_identity' and deprecates 'new_ip'
This commit is contained in:
parent
4bc4c15dd7
commit
5f8fde9039
10
README.md
10
README.md
|
@ -93,10 +93,10 @@ A JSON-RPC 2 TCP Server will listen on port 9077 by default. Using the rpc serve
|
||||||
Example (in node):
|
Example (in node):
|
||||||
|
|
||||||
```
|
```
|
||||||
var net = require('net');
|
const net = require('net');
|
||||||
|
|
||||||
const client = net.createConnection({ port: 9077 }, () => {
|
let client = net.createConnection({ port: 9077 }, () => {
|
||||||
var rpcRequest = {
|
let rpcRequest = {
|
||||||
"method": "createInstances",
|
"method": "createInstances",
|
||||||
"params": [3],
|
"params": [3],
|
||||||
"jsonrpc":"2.0",
|
"jsonrpc":"2.0",
|
||||||
|
@ -106,8 +106,8 @@ Example (in node):
|
||||||
});
|
});
|
||||||
|
|
||||||
client.on('data', (chunk) => {
|
client.on('data', (chunk) => {
|
||||||
var rawResponse = chunk.toString('utf8');
|
let rawResponse = chunk.toString('utf8');
|
||||||
var rpcResponse = JSON.parse(rawResponse);
|
let rpcResponse = JSON.parse(rawResponse);
|
||||||
console.log(rpcResponse)
|
console.log(rpcResponse)
|
||||||
if (rpcResponse.id === 1) {
|
if (rpcResponse.id === 1) {
|
||||||
console.log('Three instances have been created!')
|
console.log('Three instances have been created!')
|
||||||
|
|
|
@ -61,15 +61,45 @@ class ControlServer {
|
||||||
});
|
});
|
||||||
}).bind(this) );
|
}).bind(this) );
|
||||||
|
|
||||||
|
server.expose('newIdentites', (function() {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
this.torPool.new_identites((error) => {
|
||||||
|
if (error) reject(error);
|
||||||
|
else resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}).bind(this));
|
||||||
|
|
||||||
|
server.expose('newIdentityAt', (function(index) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
this.torPool.new_identity_at(index, (error) => {
|
||||||
|
if (error) reject(error);
|
||||||
|
else resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}).bind(this));
|
||||||
|
|
||||||
|
/* Begin Deprecated */
|
||||||
|
|
||||||
server.expose('newIps', (function() {
|
server.expose('newIps', (function() {
|
||||||
this.torPool.new_ips();
|
return new Promise((resolve, reject) => {
|
||||||
return Promise.resolve();
|
this.torPool.new_ips((error) => {
|
||||||
}).bind(this) );
|
if (error) reject(error);
|
||||||
|
else resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}).bind(this));
|
||||||
|
|
||||||
server.expose('newIpAt', (function(index) {
|
server.expose('newIpAt', (function(index) {
|
||||||
this.torPool.new_ip_at(index);
|
return new Promise((resolve, reject) => {
|
||||||
return Promise.resolve();
|
this.torPool.new_ip_at(index, (error) => {
|
||||||
}).bind(this) );
|
if (error) reject(error);
|
||||||
|
else resolve();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}).bind(this));
|
||||||
|
|
||||||
|
/* End Deprecated */
|
||||||
|
|
||||||
server.expose('nextInstance', (function () {
|
server.expose('nextInstance', (function () {
|
||||||
this.torPool.next();
|
this.torPool.next();
|
||||||
|
|
|
@ -124,13 +124,31 @@ class TorPool extends EventEmitter {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
new_ips() {
|
new_identites(callback) {
|
||||||
this.instances.forEach((tor) => tor.new_ip());
|
async.each(this.instances, (tor, next) => {
|
||||||
|
tor.new_identity(next);
|
||||||
|
}, (error) => {
|
||||||
|
callback && callback(error);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
new_ip_at(index) {
|
new_identity_at(index, callback) {
|
||||||
this.instances[index].new_ip();
|
this.instances[index].new_identity(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Begin Deprecated */
|
||||||
|
|
||||||
|
new_ips(callback) {
|
||||||
|
this.logger && this.logger.warn(`TorPool.new_ips is deprecated, use TorPool.new_identites`);
|
||||||
|
return this.new_identites(callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
new_ip_at(index, callback) {
|
||||||
|
this.logger && this.logger.warn(`TorPool.new_ip_at is deprecated, use TorPool.new_identity_at`);
|
||||||
|
return this.new_identity_at(inde, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* End Deprecated */
|
||||||
};
|
};
|
||||||
|
|
||||||
TorPool.LoadBalanceMethods = load_balance_methods;
|
TorPool.LoadBalanceMethods = load_balance_methods;
|
||||||
|
|
|
@ -34,9 +34,18 @@ class TorProcess extends EventEmitter {
|
||||||
this.process.kill('SIGINT');
|
this.process.kill('SIGINT');
|
||||||
}
|
}
|
||||||
|
|
||||||
new_ip() {
|
/* Begin Deprecated */
|
||||||
this.logger.info(`[tor-${this.instance_name}]: has requested a new identity`);
|
|
||||||
this.process.kill('SIGHUP');
|
new_ip(callback) {
|
||||||
|
this.logger && this.logger.warn(`TorProcess.new_ip is deprecated, use TorProcess.new_identity`);
|
||||||
|
return this.new_identity(callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* End Deprecated */
|
||||||
|
|
||||||
|
new_identity(callback) {
|
||||||
|
this.logger.info(`[tor-${this.instance_name}]: requested a new identity`);
|
||||||
|
this.controller.cleanCircuits(callback || (() => {}));
|
||||||
}
|
}
|
||||||
|
|
||||||
get instance_name() {
|
get instance_name() {
|
||||||
|
@ -56,7 +65,7 @@ class TorProcess extends EventEmitter {
|
||||||
}
|
}
|
||||||
|
|
||||||
get controller() {
|
get controller() {
|
||||||
return this._controller;
|
return this._controller || null;
|
||||||
}
|
}
|
||||||
|
|
||||||
create(callback) {
|
create(callback) {
|
||||||
|
|
Loading…
Reference in a new issue