aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxiphon <xiphon@protonmail.com>2020-07-30 21:26:40 +0000
committerxiphon <xiphon@protonmail.com>2020-09-07 20:35:20 +0000
commit749c166b10a0b7942cff1e7d0463f40d17b6d37a (patch)
tree22f65b984734c8491612380607eb5bee694ca253
parenta563582d95c0048a64e7edad8f6c6cc3d4ace812 (diff)
downloadmonzero-gui-749c166b10a0b7942cff1e7d0463f40d17b6d37a.tar.gz
monzero-gui-749c166b10a0b7942cff1e7d0463f40d17b6d37a.tar.xz
monzero-gui-749c166b10a0b7942cff1e7d0463f40d17b6d37a.zip
main: socks5 proxy support
-rw-r--r--components/UpdateDialog.qml1
-rw-r--r--main.qml43
-rw-r--r--pages/settings/SettingsLayout.qml29
3 files changed, 70 insertions, 3 deletions
diff --git a/components/UpdateDialog.qml b/components/UpdateDialog.qml
index 5fbef79e..a5f4ed97 100644
--- a/components/UpdateDialog.qml
+++ b/components/UpdateDialog.qml
@@ -199,5 +199,6 @@ Popup {
Downloader {
id: downloader
+ proxyAddress: persistentSettings.getProxyAddress()
}
}
diff --git a/main.qml b/main.qml
index c1d88d49..9e8e1a84 100644
--- a/main.qml
+++ b/main.qml
@@ -365,6 +365,7 @@ ApplicationWindow {
currentWallet.deviceButtonPressed.connect(onDeviceButtonPressed);
currentWallet.walletPassphraseNeeded.connect(onWalletPassphraseNeededWallet);
currentWallet.transactionCommitted.connect(onTransactionCommitted);
+ currentWallet.proxyAddress = Qt.binding(persistentSettings.getWalletProxyAddress);
middlePanel.paymentClicked.connect(handlePayment);
middlePanel.sweepUnmixableClicked.connect(handleSweepUnmixable);
middlePanel.getProofClicked.connect(handleGetProof);
@@ -389,7 +390,9 @@ ApplicationWindow {
0,
persistentSettings.is_recovering,
persistentSettings.is_recovering_from_device,
- persistentSettings.restore_height);
+ persistentSettings.restore_height,
+ persistentSettings.getWalletProxyAddress());
+
// save wallet keys in case wallet settings have been changed in the init
currentWallet.setPassword(walletPassword);
}
@@ -607,7 +610,14 @@ ApplicationWindow {
const callback = function() {
persistentSettings.useRemoteNode = true;
currentDaemonAddress = persistentSettings.remoteNodeAddress;
- currentWallet.initAsync(currentDaemonAddress, isTrustedDaemon());
+ currentWallet.initAsync(
+ currentDaemonAddress,
+ isTrustedDaemon(),
+ 0,
+ false,
+ false,
+ 0,
+ persistentSettings.getWalletProxyAddress());
walletManager.setDaemonAddressAsync(currentDaemonAddress);
};
@@ -625,7 +635,14 @@ ApplicationWindow {
console.log("disconnecting remote node");
persistentSettings.useRemoteNode = false;
currentDaemonAddress = localDaemonAddress
- currentWallet.initAsync(currentDaemonAddress, isTrustedDaemon());
+ currentWallet.initAsync(
+ currentDaemonAddress,
+ isTrustedDaemon(),
+ 0,
+ false,
+ false,
+ 0,
+ persistentSettings.getWalletProxyAddress());
walletManager.setDaemonAddressAsync(currentDaemonAddress);
firstBlockSeen = 0;
}
@@ -1403,6 +1420,24 @@ ApplicationWindow {
property string fiatPriceProvider: "kraken"
property string fiatPriceCurrency: "xmrusd"
+ property string proxyAddress: "127.0.0.1:9050"
+ property bool proxyEnabled: false
+ function getProxyAddress() {
+ if (!proxyEnabled) {
+ return "";
+ }
+ if (proxyAddress == "") {
+ return "127.0.0.1:0";
+ }
+ return proxyAddress;
+ }
+ function getWalletProxyAddress() {
+ if (!useRemoteNode) {
+ return "";
+ }
+ return getProxyAddress();
+ }
+
Component.onCompleted: {
MoneroComponents.Style.blackTheme = persistentSettings.blackTheme
}
@@ -2240,9 +2275,11 @@ ApplicationWindow {
Network {
id: network
+ proxyAddress: persistentSettings.getProxyAddress()
}
WalletManager {
id: walletManager
+ proxyAddress: persistentSettings.getProxyAddress()
}
}
diff --git a/pages/settings/SettingsLayout.qml b/pages/settings/SettingsLayout.qml
index 22b9ec52..f65b3747 100644
--- a/pages/settings/SettingsLayout.qml
+++ b/pages/settings/SettingsLayout.qml
@@ -251,6 +251,35 @@ Rectangle {
}
}
+ MoneroComponents.CheckBox {
+ id: proxyCheckbox
+ Layout.topMargin: 6
+ checked: persistentSettings.proxyEnabled
+ onClicked: {
+ persistentSettings.proxyEnabled = !persistentSettings.proxyEnabled;
+ }
+ text: qsTr("Socks5 proxy (%1%2)")
+ .arg(appWindow.walletMode >= 2 ? qsTr("remote node connections, ") : "")
+ .arg(qsTr("updates downloading, fetching price sources")) + translationManager.emptyString
+ }
+
+ MoneroComponents.RemoteNodeEdit {
+ id: proxyEdit
+ Layout.leftMargin: 36
+ Layout.topMargin: 6
+ Layout.minimumWidth: 100
+ placeholderFontSize: 15
+ visible: persistentSettings.proxyEnabled
+
+ daemonAddrLabelText: qsTr("IP address") + translationManager.emptyString
+ daemonPortLabelText: qsTr("Port") + translationManager.emptyString
+
+ initialAddress: persistentSettings.proxyAddress
+ onEditingFinished: {
+ persistentSettings.proxyAddress = proxyEdit.getAddress();
+ }
+ }
+
MoneroComponents.StandardButton {
visible: !persistentSettings.customDecorations
Layout.topMargin: 10