From 30a3abedbe7c4e26cfc2da7c84c3300dfae2a254 Mon Sep 17 00:00:00 2001 From: xiphon Date: Tue, 6 Aug 2019 15:36:35 +0000 Subject: [PATCH] Wallet: explicitly set trusted daemon flag --- main.qml | 16 +++++++++++++--- src/libwalletqt/Wallet.cpp | 10 +++++----- src/libwalletqt/Wallet.h | 8 ++++---- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/main.qml b/main.qml index 48fde1a9..be8bf25f 100644 --- a/main.qml +++ b/main.qml @@ -385,11 +385,21 @@ ApplicationWindow { currentDaemonAddress = localDaemonAddress console.log("initializing with daemon address: ", currentDaemonAddress) - currentWallet.initAsync(currentDaemonAddress, 0, persistentSettings.is_recovering, persistentSettings.is_recovering_from_device, persistentSettings.restore_height); + currentWallet.initAsync( + currentDaemonAddress, + isTrustedDaemon(), + 0, + persistentSettings.is_recovering, + persistentSettings.is_recovering_from_device, + persistentSettings.restore_height); // save wallet keys in case wallet settings have been changed in the init currentWallet.setPassword(walletPassword); } + function isTrustedDaemon() { + return !persistentSettings.useRemoteNode || persistentSettings.is_trusted_daemon; + } + function walletPath() { var wallet_path = persistentSettings.wallet_path return wallet_path; @@ -604,7 +614,7 @@ ApplicationWindow { console.log("connecting remote node"); persistentSettings.useRemoteNode = true; currentDaemonAddress = persistentSettings.remoteNodeAddress; - currentWallet.initAsync(currentDaemonAddress); + currentWallet.initAsync(currentDaemonAddress, isTrustedDaemon()); walletManager.setDaemonAddressAsync(currentDaemonAddress); } @@ -615,7 +625,7 @@ ApplicationWindow { console.log("disconnecting remote node"); persistentSettings.useRemoteNode = false; currentDaemonAddress = localDaemonAddress - currentWallet.initAsync(currentDaemonAddress); + currentWallet.initAsync(currentDaemonAddress, isTrustedDaemon()); walletManager.setDaemonAddressAsync(currentDaemonAddress); } diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index 90172d15..6d335b35 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -206,7 +206,7 @@ bool Wallet::store(const QString &path) return m_walletImpl->store(path.toStdString()); } -bool Wallet::init(const QString &daemonAddress, quint64 upperTransactionLimit, bool isRecovering, bool isRecoveringFromDevice, quint64 restoreHeight) +bool Wallet::init(const QString &daemonAddress, bool trustedDaemon, quint64 upperTransactionLimit, bool isRecovering, bool isRecoveringFromDevice, quint64 restoreHeight) { qDebug() << "init non async"; if (isRecovering){ @@ -221,6 +221,7 @@ bool Wallet::init(const QString &daemonAddress, quint64 upperTransactionLimit, b m_walletImpl->setRefreshFromBlockHeight(restoreHeight); } m_walletImpl->init(daemonAddress.toStdString(), upperTransactionLimit, m_daemonUsername.toStdString(), m_daemonPassword.toStdString()); + setTrustedDaemon(trustedDaemon); return true; } @@ -231,7 +232,7 @@ void Wallet::setDaemonLogin(const QString &daemonUsername, const QString &daemon m_daemonPassword = daemonPassword; } -void Wallet::initAsync(const QString &daemonAddress, quint64 upperTransactionLimit, bool isRecovering, bool isRecoveringFromDevice, quint64 restoreHeight) +void Wallet::initAsync(const QString &daemonAddress, bool trustedDaemon, quint64 upperTransactionLimit, bool isRecovering, bool isRecoveringFromDevice, quint64 restoreHeight) { qDebug() << "initAsync: " + daemonAddress; // Change status to disconnected if connected @@ -240,15 +241,14 @@ void Wallet::initAsync(const QString &daemonAddress, quint64 upperTransactionLim emit connectionStatusChanged(m_connectionStatus); } - m_scheduler.run([this, daemonAddress, upperTransactionLimit, isRecovering, isRecoveringFromDevice, restoreHeight] { - bool success = init(daemonAddress, upperTransactionLimit, isRecovering, isRecoveringFromDevice, restoreHeight); + m_scheduler.run([this, daemonAddress, trustedDaemon, upperTransactionLimit, isRecovering, isRecoveringFromDevice, restoreHeight] { + bool success = init(daemonAddress, trustedDaemon, upperTransactionLimit, isRecovering, isRecoveringFromDevice, restoreHeight); if (success) { emit walletCreationHeightChanged(); qDebug() << "init async finished - starting refresh"; connected(true); m_walletImpl->startRefresh(); - } }); } diff --git a/src/libwalletqt/Wallet.h b/src/libwalletqt/Wallet.h index 15da7a80..82f29a71 100644 --- a/src/libwalletqt/Wallet.h +++ b/src/libwalletqt/Wallet.h @@ -144,11 +144,8 @@ public: //! empty path stores in current location Q_INVOKABLE bool store(const QString &path = ""); - //! initializes wallet - Q_INVOKABLE bool init(const QString &daemonAddress, quint64 upperTransactionLimit = 0, bool isRecovering = false, bool isRecoveringFromDevice = false, quint64 restoreHeight = 0); - //! initializes wallet asynchronously - Q_INVOKABLE void initAsync(const QString &daemonAddress, quint64 upperTransactionLimit = 0, bool isRecovering = false, bool isRecoveringFromDevice = false, quint64 restoreHeight = 0); + Q_INVOKABLE void initAsync(const QString &daemonAddress, bool trustedDaemon = false, quint64 upperTransactionLimit = 0, bool isRecovering = false, bool isRecoveringFromDevice = false, quint64 restoreHeight = 0); // Set daemon rpc user/pass Q_INVOKABLE void setDaemonLogin(const QString &daemonUsername = "", const QString &daemonPassword = ""); @@ -374,6 +371,9 @@ private: //! returns daemon's blockchain target height quint64 daemonBlockChainTargetHeight() const; + //! initializes wallet + bool init(const QString &daemonAddress, bool trustedDaemon, quint64 upperTransactionLimit, bool isRecovering, bool isRecoveringFromDevice, quint64 restoreHeight); + private: friend class WalletManager; friend class WalletListenerImpl;