Escape rpcauth password.
This commit is contained in:
parent
a17129999c
commit
7caac8a8eb
@ -34,6 +34,7 @@ from .interface import Curves
|
||||
from .interface.part import PARTInterface, PARTInterfaceAnon, PARTInterfaceBlind
|
||||
|
||||
from . import __version__
|
||||
from .rpc import escape_rpcauth
|
||||
from .rpc_xmr import make_xmr_rpc2_func
|
||||
from .ui.util import getCoinName
|
||||
from .util import (
|
||||
@ -644,9 +645,9 @@ class BasicSwap(BaseApp):
|
||||
if os.name != 'nt' or cc['core_version_group'] > 17: # Litecoin on windows doesn't write a pid file
|
||||
assert (datadir_pid == cc['pid']), 'Mismatched pid'
|
||||
with open(authcookiepath, 'rb') as fp:
|
||||
cc['rpcauth'] = fp.read().decode('utf-8')
|
||||
cc['rpcauth'] = escape_rpcauth(fp.read().decode('utf-8'))
|
||||
except Exception as e:
|
||||
self.log.error('Unable to read authcookie for %s, %s, datadir pid %d, daemon pid %s. Error: %s', str(coin), authcookiepath, datadir_pid, cc['pid'], str(e))
|
||||
self.log.error('Unable to read authcookie for %s, %s, datadir pid %d, daemon pid %s. Error: %s', Coins(coin).name, authcookiepath, datadir_pid, cc['pid'], str(e))
|
||||
raise ValueError('Error, terminating')
|
||||
|
||||
def createCoinInterface(self, coin):
|
||||
@ -673,7 +674,7 @@ class BasicSwap(BaseApp):
|
||||
self.createCoinInterface(c)
|
||||
|
||||
if self.coin_clients[c]['connection_type'] == 'rpc':
|
||||
if c == Coins.BTC:
|
||||
if c in (Coins.BTC, ):
|
||||
self.waitForDaemonRPC(c, with_wallet=False)
|
||||
if len(self.callcoinrpc(c, 'listwallets')) >= 1:
|
||||
self.waitForDaemonRPC(c)
|
||||
@ -764,6 +765,7 @@ class BasicSwap(BaseApp):
|
||||
rv = self.callcoincli(coin, 'stop', timeout=10)
|
||||
self.log.debug('Trying to stop %s', Coins(coin).name)
|
||||
stopping = True
|
||||
# self.delay_event will be set here
|
||||
time.sleep(i + 1)
|
||||
except Exception as ex:
|
||||
str_ex = str(ex)
|
||||
@ -789,16 +791,20 @@ class BasicSwap(BaseApp):
|
||||
self.stopDaemon(c)
|
||||
|
||||
def waitForDaemonRPC(self, coin_type, with_wallet: bool = True) -> None:
|
||||
for i in range(self.startup_tries):
|
||||
startup_tries = self.startup_tries
|
||||
chain_client_settings = self.getChainClientSettings(coin_type)
|
||||
if 'startup_tries' in chain_client_settings:
|
||||
startup_tries = chain_client_settings['startup_tries']
|
||||
for i in range(startup_tries):
|
||||
if not self.is_running:
|
||||
return
|
||||
try:
|
||||
self.coin_clients[coin_type]['interface'].testDaemonRPC(with_wallet)
|
||||
return
|
||||
except Exception as ex:
|
||||
self.log.warning('Can\'t connect to %s RPC: %s. Trying again in %d second/s.', coin_type, str(ex), (1 + i))
|
||||
time.sleep(1 + i)
|
||||
self.log.error('Can\'t connect to %s RPC, exiting.', coin_type)
|
||||
self.log.warning('Can\'t connect to %s RPC: %s. Trying again in %d second/s, %d/%d.', Coins(coin_type).name, str(ex), (1 + i), i + 1, startup_tries)
|
||||
self.delay_event.wait(1 + i)
|
||||
self.log.error('Can\'t connect to %s RPC, exiting.', Coins(coin_type).name)
|
||||
self.stopRunning(1) # systemd will try to restart the process if fail_code != 0
|
||||
|
||||
def checkCoinsReady(self, coin_from, coin_to) -> None:
|
||||
@ -5971,7 +5977,7 @@ class BasicSwap(BaseApp):
|
||||
break
|
||||
except Exception as e:
|
||||
if 'Unknown message id' in str(e) and i < num_tries:
|
||||
time.sleep(1)
|
||||
self.delay_event.wait(1)
|
||||
else:
|
||||
raise e
|
||||
|
||||
|
@ -165,3 +165,9 @@ def make_rpc_func(port, auth, wallet=None, host='127.0.0.1'):
|
||||
nonlocal port, auth, wallet, host
|
||||
return callrpc(port, auth, method, params, wallet if wallet_override is None else wallet_override, host)
|
||||
return rpc_func
|
||||
|
||||
|
||||
def escape_rpcauth(auth_str: str) -> str:
|
||||
username, password = auth_str.split(':', 1)
|
||||
password = urllib.parse.quote(password)
|
||||
return f'{username}:{password}'
|
||||
|
@ -1583,6 +1583,7 @@ def main():
|
||||
'conf_target': 2,
|
||||
'core_version_group': 18,
|
||||
'chain_lookups': 'local',
|
||||
'startup_tries': 40,
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user