forked from LBRYCommunity/lbry-sdk
move scripts into scripts dir
This commit is contained in:
parent
850f51140e
commit
c20ba29c7a
5 changed files with 0 additions and 0 deletions
scripts
84
scripts/rpc_node.py
Normal file
84
scripts/rpc_node.py
Normal file
|
@ -0,0 +1,84 @@
|
|||
#!/usr/bin/env python
|
||||
#
|
||||
# This library is free software, distributed under the terms of
|
||||
# the GNU Lesser General Public License Version 3, or any later version.
|
||||
# See the COPYING file included in this archive
|
||||
#
|
||||
|
||||
# Thanks to Paul Cannon for IP-address resolution functions (taken from aspn.activestate.com)
|
||||
|
||||
|
||||
"""
|
||||
Launch a DHT node which can respond to RPC commands.
|
||||
"""
|
||||
|
||||
|
||||
import argparse
|
||||
from lbrynet.dht.node import Node
|
||||
from txjsonrpc.web import jsonrpc
|
||||
from twisted.web import server
|
||||
from twisted.internet import reactor, defer
|
||||
|
||||
|
||||
class RPCNode(jsonrpc.JSONRPC):
|
||||
def __init__(self, node, shut_down_cb):
|
||||
jsonrpc.JSONRPC.__init__(self)
|
||||
self.node = node
|
||||
self.shut_down_cb = shut_down_cb
|
||||
|
||||
def jsonrpc_total_dht_nodes(self):
|
||||
return self.node.getApproximateTotalDHTNodes()
|
||||
|
||||
def jsonrpc_total_dht_hashes(self):
|
||||
return self.node.getApproximateTotalHashes()
|
||||
|
||||
def jsonrpc_stop(self):
|
||||
self.shut_down_cb()
|
||||
return "fine"
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
parser = argparse.ArgumentParser(description="Launch a dht node which responds to rpc commands")
|
||||
|
||||
parser.add_argument("node_port",
|
||||
help=("The UDP port on which the node will listen for connections "
|
||||
"from other dht nodes"),
|
||||
type=int)
|
||||
parser.add_argument("rpc_port",
|
||||
help="The TCP port on which the node will listen for rpc commands",
|
||||
type=int)
|
||||
parser.add_argument("dht_bootstrap_host",
|
||||
help="The IP of a DHT node to be used to bootstrap into the network",
|
||||
nargs='?')
|
||||
parser.add_argument("dht_bootstrap_port",
|
||||
help="The port of a DHT node to be used to bootstrap into the network",
|
||||
nargs='?', default=4000, type=int)
|
||||
parser.add_argument("--rpc_ip_address",
|
||||
help="The network interface on which to listen for rpc connections",
|
||||
default="127.0.0.1")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
def start_rpc():
|
||||
rpc_node = RPCNode(node, shut_down)
|
||||
reactor.listenTCP(args.rpc_port, server.Site(rpc_node), interface=args.rpc_ip_address)
|
||||
|
||||
def shut_down():
|
||||
d = defer.maybeDeferred(node.stop)
|
||||
d.addBoth(lambda _: reactor.stop())
|
||||
return d
|
||||
|
||||
known_nodes = []
|
||||
if args.dht_bootstrap_host:
|
||||
known_nodes.append((args.dht_bootstrap_host, args.dht_bootstrap_port))
|
||||
|
||||
node = Node(udpPort=args.node_port)
|
||||
node.joinNetwork(known_nodes)
|
||||
d = node._joinDeferred
|
||||
d.addCallback(lambda _: start_rpc())
|
||||
reactor.run()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Add table
Add a link
Reference in a new issue