Merge pull request #3932

8962f00 simplewallet: add optional trusted/untrusted argument to set_daemon (moneromooo-monero)
941a608 util: consider Tor/I2P addresses to be non local (moneromooo-monero)
2b3357e README: mention --untrusted-daemon (moneromooo-monero)
This commit is contained in:
luigi1111 2018-06-20 14:44:54 -05:00
commit 3721298cf6
No known key found for this signature in database
GPG Key ID: F4ACA0183641E010
3 changed files with 37 additions and 1 deletions

View File

@ -567,6 +567,8 @@ setting the following configuration parameters and environment variables:
as well. as well.
* Do NOT pass `--detach` when running through torsocks with systemd, (see * Do NOT pass `--detach` when running through torsocks with systemd, (see
[utils/systemd/monerod.service](utils/systemd/monerod.service) for details). [utils/systemd/monerod.service](utils/systemd/monerod.service) for details).
* If you use the wallet with a Tor daemon via the loopback IP (eg, 127.0.0.1:9050),
then use `--untrusted-daemon` unless it is your own hidden service.
Example command line to start monerod through Tor: Example command line to start monerod through Tor:

View File

@ -727,6 +727,13 @@ std::string get_nix_version_display_string()
bool is_local_address(const std::string &address) bool is_local_address(const std::string &address)
{ {
// always assume Tor/I2P addresses to be untrusted by default
if (boost::ends_with(address, ".onion") || boost::ends_with(address, ".i2p"))
{
MDEBUG("Address '" << address << "' is Tor/I2P, non local");
return false;
}
// extract host // extract host
epee::net_utils::http::url_content u_c; epee::net_utils::http::url_content u_c;
if (!epee::net_utils::parse_url(address, u_c)) if (!epee::net_utils::parse_url(address, u_c))

View File

@ -2134,7 +2134,7 @@ simple_wallet::simple_wallet()
tr("Stop mining in the daemon.")); tr("Stop mining in the daemon."));
m_cmd_binder.set_handler("set_daemon", m_cmd_binder.set_handler("set_daemon",
boost::bind(&simple_wallet::set_daemon, this, _1), boost::bind(&simple_wallet::set_daemon, this, _1),
tr("set_daemon <host>[:<port>]"), tr("set_daemon <host>[:<port>] [trusted|untrusted]"),
tr("Set another daemon to connect to.")); tr("Set another daemon to connect to."));
m_cmd_binder.set_handler("save_bc", m_cmd_binder.set_handler("save_bc",
boost::bind(&simple_wallet::save_bc, this, _1), boost::bind(&simple_wallet::save_bc, this, _1),
@ -3900,6 +3900,33 @@ bool simple_wallet::set_daemon(const std::vector<std::string>& args)
} }
LOCK_IDLE_SCOPE(); LOCK_IDLE_SCOPE();
m_wallet->init(daemon_url); m_wallet->init(daemon_url);
if (args.size() == 2)
{
if (args[1] == "trusted")
m_trusted_daemon = true;
else if (args[1] == "untrusted")
m_trusted_daemon = false;
else
{
fail_msg_writer() << tr("Expected trusted or untrusted, got ") << args[1] << ": assuming untrusted";
m_trusted_daemon = false;
}
}
else
{
m_trusted_daemon = false;
try
{
if (tools::is_local_address(m_wallet->get_daemon_address()))
{
MINFO(tr("Daemon is local, assuming trusted"));
m_trusted_daemon = true;
}
}
catch (const std::exception &e) { }
}
success_msg_writer() << boost::format("Daemon set to %s, %s") % daemon_url % (*m_trusted_daemon ? tr("trusted") : tr("untrusted"));
} else { } else {
fail_msg_writer() << tr("This does not seem to be a valid daemon URL."); fail_msg_writer() << tr("This does not seem to be a valid daemon URL.");
} }