Allows Tor configuration to be modified at runtime via the rpc interface
This commit is contained in:
parent
38bf4d7c6a
commit
48373e3c71
|
@ -146,6 +146,40 @@ class ControlServer {
|
|||
this.nconf.set('loadBalanceMethod', loadBalanceMethod);
|
||||
return Promise.resolve();
|
||||
}).bind(this));
|
||||
|
||||
server.expose('getInstanceConfigByName', (function (name, keyword) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.torPool.get_config_by_name(name, keyword, (error, value) => {
|
||||
if (error) reject(error);
|
||||
else resolve(value);
|
||||
});
|
||||
});
|
||||
}).bind(this));
|
||||
|
||||
server.expose('getInstanceConfigAt', (function (index, keyword) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.torPool.get_config_at(index, keyword, (error, value) => {
|
||||
if (error) reject(error);
|
||||
else resolve(value);
|
||||
});
|
||||
});
|
||||
}).bind(this));
|
||||
|
||||
server.expose('setInstanceConfigByName', (function (name, keyword, value) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.torPool.set_config_by_name(name, keyword, value, (error) => {
|
||||
if (error) reject(error);
|
||||
});
|
||||
});
|
||||
}).bind(this));
|
||||
|
||||
server.expose('setInstanceConfigAt', (function (index, keyword, value) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.torPool.set_config_at(index, keyword, value, (error) => {
|
||||
if (error) reject(error);
|
||||
});
|
||||
});
|
||||
}).bind(this));
|
||||
}
|
||||
|
||||
listen(port, callback) {
|
||||
|
|
|
@ -164,6 +164,30 @@ class TorPool extends EventEmitter {
|
|||
}
|
||||
|
||||
/* End Deprecated */
|
||||
|
||||
get_config_by_name(name, keyword, callback) {
|
||||
let instance = this.instance_by_name(name);
|
||||
if (!instance) return callback && callback(new Error(`Instance "${name}" not found`));
|
||||
instance.get_config(keyword, callback);
|
||||
}
|
||||
|
||||
set_config_by_name(name, keyword, value, callback) {
|
||||
let instance = this.instance_by_name(name);
|
||||
if (!instance) return callback && callback(new Error(`Instance "${name}" not found`));
|
||||
instance.set_config(keyword, value, callback);
|
||||
}
|
||||
|
||||
get_config_at(index, keyword, callback) {
|
||||
let instance = this.instances[index];
|
||||
if (!instance) return callback && callback(new Error(`Instance at ${index} not found`));
|
||||
instance.get_config(keyword, callback);
|
||||
}
|
||||
|
||||
set_config_at(index, keyword, value, callback) {
|
||||
let instance = this.instances[index];
|
||||
if (!instance) return callback && callback(new Error(`Instance at ${index} not found`));
|
||||
instance.set_config(keyword, value, callback);
|
||||
}
|
||||
};
|
||||
|
||||
TorPool.LoadBalanceMethods = load_balance_methods;
|
||||
|
|
|
@ -68,12 +68,21 @@ class TorProcess extends EventEmitter {
|
|||
return this._controller || null;
|
||||
}
|
||||
|
||||
getConfig(callback) {
|
||||
/* Passthrough to granax */
|
||||
get_config(keyword, callback) {
|
||||
if (!this.controller) {
|
||||
return callback(new Error(`Controller is not connected`));
|
||||
}
|
||||
|
||||
this.controller.getConfig(keyword, callback);
|
||||
}
|
||||
|
||||
set_config(keyword, value, callback) {
|
||||
if (!this.controller) {
|
||||
return callback(new Error(`Controller is not connected`));
|
||||
}
|
||||
|
||||
this.controller.setConfig(keyword, value, callback);
|
||||
}
|
||||
|
||||
create(callback) {
|
||||
|
|
Loading…
Reference in a new issue