tor-router/docs/rpc-methods.md
2018-05-10 22:56:55 -07:00

124 lines
2.8 KiB
Markdown

## RPC Functions
The following functions are available via the RPC
# queryInstances()
Returns an array containing information on the instances currently running under the router.
# createInstances(Array or Integrer)
If passed an integrer, creates thats many Tor instances. An array can also be passed describing the names, weights and configurations of prospective instances. :
```
var rpcRequest = {
"method": "createInstances",
"params": [
{
"Config": {
},
"Name": "instance-1",
"Weight": 10
},
...
],
"jsonrpc":"2.0",
"id": 1
};
```
Will wait until the Tor Instance has fully connected to the network before returning
# addInstances(Array)
Serves the same purpose as "createInstances" but only takes an Array
# removeInstances(Integrer)
Removes a number of instances
# removeInstanceAt(Integrer)
Remove a specific instance from the pool by its index
# removeInstanceByName(String)
Remove a specific instance from the pool by its name
# newIdentites()
Get new identites for all instances
# newIdentityAt(Integrer)
Get a new identity for a specific instance by its index
# newIdentityByName(String)
Get a new identity for a specific instance by its name
# nextInstance()
Cycle to the next instance using the load balancing method
# closeInstances()
Shutdown all Tor instances
# getTorConfig()
Retrieve the default Tor Config
# setTorConfig(Object)
Set the default Tor Config
# getLoadBalanceMethod()
Get the current load balance method
# setLoadBalanceMethod(String)
Set the current load balance method
# getInstanceConfigAt(Integrer: index, String: keyword)
Retrieves the current value of an option set in the configuration by the index of the instance using the control protocol.
Example:
The following would retrieve the path to the data directory of the instance
```
var rpcRequest = {
"method": "getInstanceConfigAt",
"params": [0, "DataDirectory"],
"jsonrpc":"2.0",
"id": 1
};
```
# getInstanceConfigByName(String: name, String: keyword)
Works the same way as `getInstanceConfigAt` except takes an instance name instead of an index
# setInstanceConfigAt(Integrer: index, String: keyword, String: value)
Sets the value in the configuration of an instance using the control protocol. Changes will be applied immediately.
# setInstanceConfigByName(Integrer: index, String: keyword, String: value)
Works the same way as `setInstanceConfigAt` except takes an instance name instead of an index
# signalAllInstances(String)
Sends a signal using the control protocol to all instances
# signalInstanceAt(Integrer: index, String: signal)
Sends a signal using the control protocol to an instance identified by its index
# signalInstanceByName(String: name, String: signal)
Sends a signal using the control protocol to an instance identified by its name