Browse Source

Add new RPC method: add_peer

master
Neil Booth 8 years ago
parent
commit
ead68ebe34
  1. 11
      docs/RPC-INTERFACE.rst
  2. 12
      server/controller.py

11
docs/RPC-INTERFACE.rst

@ -156,6 +156,17 @@ The following commands are available:
Currently peer data is obtained via a peer discovery protocol; it
used to be taken from IRC.
* **add_peer**
Add a peer to the peers list. ElectrumX will schdule an immediate
connection attempt. This command takes a single argument: the
peer's "real name" as it would advertise itself on IRC.
.. code::
$ ./electrumx_rpc.py add_peer "ecdsa.net v1.0 s110 t"
"peer 'ecdsa.net v1.0 s110 t' added"
* **daemon_url**
This command takes an optional argument that is interpreted

12
server/controller.py

@ -21,6 +21,7 @@ import pylru
from lib.jsonrpc import JSONRPC, JSONSessionBase, RPCError
from lib.hash import double_sha256, hash_to_str, hex_str_to_hash
from lib.peer import Peer
import lib.util as util
from server.block_processor import BlockProcessor
from server.daemon import Daemon, DaemonError
@ -73,7 +74,7 @@ class Controller(util.LoggedClass):
env.max_send = max(350000, env.max_send)
self.setup_bands()
# Set up the RPC request handlers
cmds = ('daemon_url disconnect getinfo groups log peers reorg '
cmds = ('add_peer daemon_url disconnect getinfo groups log peers reorg '
'sessions stop'.split())
self.rpc_handlers = {cmd: getattr(self, 'rpc_' + cmd) for cmd in cmds}
# Set up the ElectrumX request handlers
@ -579,6 +580,15 @@ class Controller(util.LoggedClass):
# Local RPC command handlers
def rpc_add_peer(self, real_name):
'''Add a peer.
real_name: a real name, as would appear on IRC
'''
peer = Peer.from_real_name(real_name, 'RPC')
self.peer_mgr.add_peers([peer])
return "peer '{}' added".format(real_name)
def rpc_disconnect(self, session_ids):
'''Disconnect sesssions.

Loading…
Cancel
Save