diff --git a/electrum b/electrum index efe1f24a0..4b3796267 100755 --- a/electrum +++ b/electrum @@ -73,7 +73,7 @@ from electrum import util from electrum import SimpleConfig, Network, Wallet, WalletStorage, NetworkProxy from electrum.util import print_msg, print_error, print_stderr, print_json, set_verbosity, InvalidPassword from electrum.daemon import get_daemon -from electrum.plugins import init_plugins +from electrum.plugins import init_plugins, run_hook, always_hook from electrum.commands import get_parser, known_commands, Commands, config_variables @@ -263,6 +263,9 @@ def run_cmdline(config): # create wallet instance wallet = Wallet(storage) if cmd.requires_wallet else None + # notify plugins + always_hook('cmdline_load_wallet', wallet) + # important warning if cmd.name in ['dumpprivkey', 'dumpprivkeys']: print_stderr("WARNING: ALL your private keys are secret.") diff --git a/plugins/trezor.py b/plugins/trezor.py index 7f9dae85c..77574cc95 100644 --- a/plugins/trezor.py +++ b/plugins/trezor.py @@ -93,8 +93,11 @@ class Plugin(BasePlugin): self.wallet = None @hook - def init_cmdline(self): - self.handler = TrezorCmdLineHandler() + def cmdline_load_wallet(self, wallet): + self.wallet = wallet + self.wallet.plugin = self + if self.handler is None: + self.handler = TrezorCmdLineHandler() @hook def load_wallet(self, wallet, window): @@ -493,12 +496,22 @@ class TrezorGuiMixin(object): class TrezorCmdLineHandler: def get_passphrase(self, msg): + import getpass print_msg(msg) - return raw_input() + return getpass.getpass('') def get_pin(self, msg): + t = { 'a':'7', 'b':'8', 'c':'9', 'd':'4', 'e':'5', 'f':'6', 'g':'1', 'h':'2', 'i':'3'} + print_msg(msg) + print_msg("a b c\nd e f\ng h i\n-----") + o = raw_input() + return ''.join(map(lambda x: t[x], o)) + + def stop(self): + pass + + def show_message(self, msg): print_msg(msg) - return raw_input() class TrezorQtHandler: