diff options
| author | tobtoht <tob@featherwallet.org> | 2026-07-01 17:41:58 +0000 |
|---|---|---|
| committer | tobtoht <tob@featherwallet.org> | 2026-07-01 17:41:58 +0000 |
| commit | 239a5350cf15b59278e3152a1982a0ac5cb185ff (patch) | |
| tree | 76ddfab43ae3d9a07d6f79b8a6bfee6bdd13fe6c /pages | |
| parent | 76d5f8cd68b39b5b744775cb04e8e86a0013760a (diff) | |
| parent | 23930cb0e909a503171535a0a62b74debba1b885 (diff) | |
| download | monzero-gui-239a5350cf15b59278e3152a1982a0ac5cb185ff.tar.gz monzero-gui-239a5350cf15b59278e3152a1982a0ac5cb185ff.tar.xz monzero-gui-239a5350cf15b59278e3152a1982a0ac5cb185ff.zip | |
Merge pull request #4618
23930cb Transfer, AddressBook: confirm unauthenticated OpenAlias (selsta)
ACKs: plowsof
Diffstat (limited to 'pages')
| -rw-r--r-- | pages/AddressBook.qml | 26 | ||||
| -rw-r--r-- | pages/Transfer.qml | 27 |
2 files changed, 53 insertions, 0 deletions
diff --git a/pages/AddressBook.qml b/pages/AddressBook.qml index 396f6bed..65e315e2 100644 --- a/pages/AddressBook.qml +++ b/pages/AddressBook.qml @@ -387,8 +387,20 @@ Rectangle { visible: TxUtils.isValidOpenAliasAddress(addressLine.text) enabled : visible onClicked: { + const openAlias = addressLine.text; const response = TxUtils.handleOpenAliasResolution(addressLine.text, descriptionLine.text); if (response) { + if (response.confirm && response.address) { + const resolvedAddress = response.address; + const resolvedDescription = response.description; + oa_confirm(openAlias, resolvedAddress, function() { + addressLine.text = resolvedAddress; + if (resolvedDescription) { + descriptionLine.text = resolvedDescription; + } + }); + return; + } if (response.message) { oa_message(response.message); } @@ -532,6 +544,20 @@ Rectangle { oaPopup.open() } + function oa_confirm(openAlias, resolvedAddress, onAccepted) { + confirmationDialog.title = qsTr("OpenAlias warning") + translationManager.emptyString + confirmationDialog.text = qsTr("Address found, but the DNSSEC signatures could not be verified, so this address may be spoofed.") + "\n\n" + + qsTr("OpenAlias: ") + openAlias + "\n\n" + + qsTr("Resolved address: ") + resolvedAddress + "\n\n" + + qsTr("Only use this address if you trust this OpenAlias result.") + translationManager.emptyString + confirmationDialog.icon = StandardIcon.Question + confirmationDialog.cancelText = qsTr("Cancel") + translationManager.emptyString + confirmationDialog.okText = qsTr("Use address") + translationManager.emptyString + confirmationDialog.onAcceptedCallback = onAccepted + confirmationDialog.onRejectedCallback = null + confirmationDialog.open() + } + MoneroComponents.StandardDialog { // dynamically change onclose handler property var onCloseCallback diff --git a/pages/Transfer.qml b/pages/Transfer.qml index 48ce4b82..9641139f 100644 --- a/pages/Transfer.qml +++ b/pages/Transfer.qml @@ -105,6 +105,20 @@ Rectangle { oaPopup.open() } + function oa_confirm(openAlias, resolvedAddress, onAccepted) { + confirmationDialog.title = qsTr("OpenAlias warning") + translationManager.emptyString + confirmationDialog.text = qsTr("Address found, but the DNSSEC signatures could not be verified, so this address may be spoofed.") + "\n\n" + + qsTr("OpenAlias: ") + openAlias + "\n\n" + + qsTr("Resolved address: ") + resolvedAddress + "\n\n" + + qsTr("Only use this address if you trust this OpenAlias result.") + translationManager.emptyString + confirmationDialog.icon = StandardIcon.Question + confirmationDialog.cancelText = qsTr("Cancel") + translationManager.emptyString + confirmationDialog.okText = qsTr("Use address") + translationManager.emptyString + confirmationDialog.onAcceptedCallback = onAccepted + confirmationDialog.onRejectedCallback = null + confirmationDialog.open() + } + function fillPaymentDetails(address, payment_id, amount, tx_description, recipient_name) { if (recipientModel.count > 0) { const last = recipientModel.count - 1; @@ -428,8 +442,21 @@ Rectangle { text: qsTr("Resolve") + translationManager.emptyString visible: TxUtils.isValidOpenAliasAddress(address) onClicked: { + const openAlias = address; const response = TxUtils.handleOpenAliasResolution(address, descriptionLine.text); if (response) { + if (response.confirm && response.address) { + const resolvedAddress = response.address; + const resolvedDescription = response.description; + oa_confirm(openAlias, resolvedAddress, function() { + recipientRepeater.itemAt(index).children[1].children[0].text = resolvedAddress; + if (resolvedDescription) { + descriptionLine.text = resolvedDescription; + descriptionCheckbox.checked = true; + } + }); + return; + } if (response.message) { oa_message(response.message); } |
