diff --git a/electrum/commands.py b/electrum/commands.py index 869ece79c..8ed1201d1 100644 --- a/electrum/commands.py +++ b/electrum/commands.py @@ -293,6 +293,7 @@ class Commands: def _setconfig_normalize_value(cls, key, value): if key not in ('rpcuser', 'rpcpassword'): value = json_decode(value) + # call literal_eval for backward compatibility (see #4225) try: value = ast.literal_eval(value) except: @@ -303,6 +304,10 @@ class Commands: async def setconfig(self, key, value): """Set a configuration variable. 'value' may be a string or a Python expression.""" value = self._setconfig_normalize_value(key, value) + if self.daemon and key == 'rpcuser': + self.daemon.commands_server.rpc_user = value + if self.daemon and key == 'rpcpassword': + self.daemon.commands_server.rpc_password = value self.config.set_key(key, value) return True diff --git a/electrum/daemon.py b/electrum/daemon.py index e2a29b16d..8d926fbd9 100644 --- a/electrum/daemon.py +++ b/electrum/daemon.py @@ -120,6 +120,10 @@ def request(config: SimpleConfig, endpoint, args=(), timeout=60): def get_rpc_credentials(config: SimpleConfig) -> Tuple[str, str]: rpc_user = config.get('rpcuser', None) rpc_password = config.get('rpcpassword', None) + if rpc_user == '': + rpc_user = None + if rpc_password == '': + rpc_password = None if rpc_user is None or rpc_password is None: rpc_user = 'user' bits = 128 @@ -130,8 +134,6 @@ def get_rpc_credentials(config: SimpleConfig) -> Tuple[str, str]: rpc_password = to_string(pw_b64, 'ascii') config.set_key('rpcuser', rpc_user) config.set_key('rpcpassword', rpc_password, save=True) - elif rpc_password == '': - _logger.warning('RPC authentication is disabled.') return rpc_user, rpc_password