diff --git a/electrum/commands.py b/electrum/commands.py index be7fc030090e..605bc9e2c643 100644 --- a/electrum/commands.py +++ b/electrum/commands.py @@ -246,16 +246,13 @@ async def list_wallets(self): ] @command('n') - async def load_wallet(self, wallet_path=None, unlock=False, password=None): + async def load_wallet(self, wallet_path=None, password=None): """ Load the wallet in memory """ wallet = self.daemon.load_wallet(wallet_path, password, upgrade=True) if wallet is None: raise UserFacingException('could not load wallet') - if unlock: - # FIXME if this raises, load_wallet() above still succeeded... - wallet.unlock(password) run_hook('load_wallet', wallet, None) @command('n') @@ -368,6 +365,11 @@ async def getaddresshistory(self, address): sh = bitcoin.address_to_scripthash(address) return await self.network.get_history_for_scripthash(sh) + @command('wp') + async def unlock(self, wallet: Abstract_Wallet = None, password=None): + """Unlock the wallet (store the password in memory).""" + wallet.unlock(password) + @command('w') async def listunspent(self, wallet: Abstract_Wallet = None): """List unspent outputs. Returns the list of unspent transaction @@ -1470,7 +1472,6 @@ def eval_bool(x: str) -> bool: 'from_amount': (None, "Amount to convert (default: 1)"), 'from_ccy': (None, "Currency to convert from"), 'to_ccy': (None, "Currency to convert to"), - 'unlock': (None, "Unlock the wallet (store the password in memory)."), 'public': (None, 'Channel will be announced'), } diff --git a/electrum/plugins/swapserver/server.py b/electrum/plugins/swapserver/server.py index 1e0b0daaa3c1..c15e997274d1 100644 --- a/electrum/plugins/swapserver/server.py +++ b/electrum/plugins/swapserver/server.py @@ -38,6 +38,11 @@ def __init__(self, config: 'SimpleConfig', wallet: 'Abstract_Wallet'): @ignore_exceptions @log_exceptions async def run(self): + + while self.wallet.has_password() and self.wallet.get_unlocked_password() is None: + self.logger.info("This wallet is password-protected. Please unlock it to start the swapserver plugin") + await asyncio.sleep(10) + app = web.Application() app.add_routes([web.get('/getpairs', self.get_pairs)]) app.add_routes([web.post('/createswap', self.create_swap)]) diff --git a/electrum/wallet.py b/electrum/wallet.py index 9c4cc9482d77..767106a75282 100644 --- a/electrum/wallet.py +++ b/electrum/wallet.py @@ -3274,8 +3274,7 @@ def synchronize(self) -> int: def unlock(self, password): self.logger.info(f'unlocking wallet') - if self.has_password(): - self.check_password(password) + self.check_password(password) self._password_in_memory = password def get_unlocked_password(self):