aboutsummaryrefslogtreecommitdiff
path: root/src/common/dns_utils.cpp
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-07-27 11:28:53 +0100
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-07-27 11:30:13 +0100
commitcb0b559451466112332e0c251d100c2322803ad7 (patch)
treef6c0041a25fed22802c9005934f6db7310a98555 /src/common/dns_utils.cpp
parentMerge pull request #2159 (diff)
downloadmonero-cb0b559451466112332e0c251d100c2322803ad7.tar.xz
Move OpenAlias console input back from libs
Library code should definitely not ask for console input unless it's clearly an input function. Delegating the user interaction part to the caller means it can now be used by a GUI, or have a decision algorithm better adapted to a particular caller.
Diffstat (limited to '')
-rw-r--r--src/common/dns_utils.cpp46
1 files changed, 3 insertions, 43 deletions
diff --git a/src/common/dns_utils.cpp b/src/common/dns_utils.cpp
index ab38cbbae..b3b464e92 100644
--- a/src/common/dns_utils.cpp
+++ b/src/common/dns_utils.cpp
@@ -26,12 +26,9 @@
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include "common/command_line.h"
-#include "common/i18n.h"
#include "common/dns_utils.h"
+#include "common/i18n.h"
#include "cryptonote_basic/cryptonote_basic_impl.h"
-#include <cstring>
-#include <sstream>
// check local first (in the event of static or in-source compilation of libunbound)
#include "unbound.h"
@@ -405,7 +402,7 @@ std::vector<std::string> addresses_from_url(const std::string& url, bool& dnssec
return addresses;
}
-std::string get_account_address_as_str_from_url(const std::string& url, bool& dnssec_valid, bool cli_confirm)
+std::string get_account_address_as_str_from_url(const std::string& url, bool& dnssec_valid, std::function<std::string(const std::string&, const std::vector<std::string>&, bool)> dns_confirm)
{
// attempt to get address from dns query
auto addresses = addresses_from_url(url, dnssec_valid);
@@ -414,44 +411,7 @@ std::string get_account_address_as_str_from_url(const std::string& url, bool& dn
LOG_ERROR("wrong address: " << url);
return {};
}
- // for now, move on only if one address found
- if (addresses.size() > 1)
- {
- LOG_ERROR("not yet supported: Multiple Monero addresses found for given URL: " << url);
- return {};
- }
- if (!cli_confirm)
- return addresses[0];
- // prompt user for confirmation.
- // inform user of DNSSEC validation status as well.
- std::string dnssec_str;
- if (dnssec_valid)
- {
- dnssec_str = tr("DNSSEC validation passed");
- }
- else
- {
- dnssec_str = tr("WARNING: DNSSEC validation was unsuccessful, this address may not be correct!");
- }
- std::stringstream prompt;
- prompt << tr("For URL: ") << url
- << ", " << dnssec_str << std::endl
- << tr(" Monero Address = ") << addresses[0]
- << std::endl
- << tr("Is this OK? (Y/n) ")
- ;
- // prompt the user for confirmation given the dns query and dnssec status
- std::string confirm_dns_ok = command_line::input_line(prompt.str());
- if (std::cin.eof())
- {
- return {};
- }
- if (!command_line::is_yes(confirm_dns_ok))
- {
- std::cout << tr("you have cancelled the transfer request") << std::endl;
- return {};
- }
- return addresses[0];
+ return dns_confirm(url, addresses, dnssec_valid);
}
namespace