Browse Source

Add support for core's multiwallet feature

master
chris-belcher 8 years ago
parent
commit
91ffa6cb6c
No known key found for this signature in database
GPG Key ID: EF734EA677F31129
  1. 19
      jmclient/jmclient/configure.py
  2. 9
      jmclient/jmclient/jsonrpc.py

19
jmclient/jmclient/configure.py

@ -117,6 +117,7 @@ rpc_host = localhost
rpc_port = 8332 rpc_port = 8332
rpc_user = bitcoin rpc_user = bitcoin
rpc_password = password rpc_password = password
rpc_wallet_file =
[MESSAGING] [MESSAGING]
host = irc.cyberguerrilla.org, agora.anarplex.net host = irc.cyberguerrilla.org, agora.anarplex.net
@ -395,19 +396,17 @@ def get_blockchain_interface_instance(_config):
source = _config.get("BLOCKCHAIN", "blockchain_source") source = _config.get("BLOCKCHAIN", "blockchain_source")
network = get_network() network = get_network()
testnet = network == 'testnet' testnet = network == 'testnet'
if source == 'bitcoin-rpc': #pragma: no cover if source in ('bitcoin-rpc', 'regtest'):
#This cannot be tested without mainnet or testnet blockchain (not regtest)
rpc_host = _config.get("BLOCKCHAIN", "rpc_host") rpc_host = _config.get("BLOCKCHAIN", "rpc_host")
rpc_port = _config.get("BLOCKCHAIN", "rpc_port") rpc_port = _config.get("BLOCKCHAIN", "rpc_port")
rpc_user, rpc_password = get_bitcoin_rpc_credentials(_config) rpc_user, rpc_password = get_bitcoin_rpc_credentials(_config)
rpc = JsonRpc(rpc_host, rpc_port, rpc_user, rpc_password) rpc_wallet_file = _config.get("BLOCKCHAIN", "rpc_wallet_file")
bc_interface = BitcoinCoreInterface(rpc, network) rpc = JsonRpc(rpc_host, rpc_port, rpc_user, rpc_password,
elif source == 'regtest': rpc_wallet_file)
rpc_host = _config.get("BLOCKCHAIN", "rpc_host") if source == 'bitcoin-rpc': #pragma: no cover
rpc_port = _config.get("BLOCKCHAIN", "rpc_port") bc_interface = BitcoinCoreInterface(rpc, network)
rpc_user, rpc_password = get_bitcoin_rpc_credentials(_config) else:
rpc = JsonRpc(rpc_host, rpc_port, rpc_user, rpc_password) bc_interface = RegtestBitcoinCoreInterface(rpc)
bc_interface = RegtestBitcoinCoreInterface(rpc)
elif source == 'electrum': elif source == 'electrum':
bc_interface = ElectrumWalletInterface(testnet) bc_interface = ElectrumWalletInterface(testnet)
elif source == 'electrum-server': elif source == 'electrum-server':

9
jmclient/jmclient/jsonrpc.py

@ -51,12 +51,15 @@ class JsonRpc(object):
to connect to Bitcoin. to connect to Bitcoin.
""" """
def __init__(self, host, port, user, password): def __init__(self, host, port, user, password, wallet_file=""):
self.host = host self.host = host
self.port = port self.port = port
self.conn = httplib.HTTPConnection(self.host, self.port) self.conn = httplib.HTTPConnection(self.host, self.port)
self.authstr = "%s:%s" % (user, password) self.authstr = "%s:%s" % (user, password)
if len(wallet_file) > 0:
self.url = "/wallet/" + wallet_file
else:
self.url = ""
self.queryId = 1 self.queryId = 1
def queryHTTP(self, obj): def queryHTTP(self, obj):
@ -76,7 +79,7 @@ class JsonRpc(object):
while True: while True:
try: try:
self.conn.request("POST", "", body, headers) self.conn.request("POST", self.url, body, headers)
response = self.conn.getresponse() response = self.conn.getresponse()
if response.status == 401: if response.status == 401:

Loading…
Cancel
Save