diff --git a/contrib/tor-connect b/contrib/tor-connect index a917f7ef..afe293d2 160000 --- a/contrib/tor-connect +++ b/contrib/tor-connect @@ -1 +1 @@ -Subproject commit a917f7ef44080955eaf09c2cf9e6336758a4dd97 +Subproject commit afe293d266d148a28806a50a3db27601d1a5d718 diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp index 1d24c32d..53b458b0 100644 --- a/src/simplewallet/simplewallet.cpp +++ b/src/simplewallet/simplewallet.cpp @@ -55,6 +55,7 @@ namespace const command_line::arg_descriptor arg_offline_mode = { "offline-mode", "Don't connect to daemon, work offline (for cold-signing process)", false, true }; const command_line::arg_descriptor arg_scan_for_wallet = { "scan-for-wallet", "", "", true }; const command_line::arg_descriptor arg_addr_to_compare = { "addr-to-compare", "", "", true }; + const command_line::arg_descriptor arg_disable_tor_relay = { "disable-tor-relay", "Do PoS mining", false, false }; const command_line::arg_descriptor< std::vector > arg_command = {"command", ""}; @@ -123,17 +124,9 @@ namespace m_flush = false; LOG_PRINT(m_oss.str(), m_log_level) - - if (epee::log_space::console_color_default == m_color) - { - std::cout << m_oss.str(); - } - else - { - epee::log_space::set_console_color(m_color, m_bright); - std::cout << m_oss.str(); - epee::log_space::reset_console_color(); - } + epee::log_space::set_console_color(m_color, m_bright); + std::cout << m_oss.str(); + epee::log_space::reset_console_color(); std::cout << std::endl; } @@ -229,6 +222,8 @@ simple_wallet::simple_wallet() m_cmd_binder.set_handler("sign_transfer", boost::bind(&simple_wallet::sign_transfer, this, _1), "sign_transfer - sign unsigned tx from a watch-only wallet"); m_cmd_binder.set_handler("submit_transfer", boost::bind(&simple_wallet::submit_transfer, this, _1), "submit_transfer - broadcast signed tx"); m_cmd_binder.set_handler("export_history", boost::bind(&simple_wallet::submit_transfer, this, _1), "Export transaction history in CSV file"); + m_cmd_binder.set_handler("tor_enable", boost::bind(&simple_wallet::tor_enable, this, _1), "Enable relaying transactions over TOR network(enabled by default)"); + m_cmd_binder.set_handler("tor_disable", boost::bind(&simple_wallet::tor_disable, this, _1), "Enable relaying transactions over TOR network(enabled by default)"); } //---------------------------------------------------------------------------------------------------- simple_wallet::~simple_wallet() @@ -361,6 +356,11 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm) bool r = open_wallet(m_wallet_file, pwd_container.password()); CHECK_AND_ASSERT_MES(r, false, "could not open account"); } + if (m_disable_tor) + { + m_wallet->set_disable_tor_relay(true); + message_writer(epee::log_space::console_color_default, true, std::string(), LOG_LEVEL_0) << "Notice: Relaying transactions over TOR disabled with command line parameter"; + } return true; } @@ -384,6 +384,7 @@ void simple_wallet::handle_command_line(const boost::program_options::variables_ m_do_not_set_date = command_line::get_arg(vm, arg_dont_set_date); m_do_pos_mining = command_line::get_arg(vm, arg_do_pos_mining); m_restore_wallet = command_line::get_arg(vm, arg_restore_wallet); + m_disable_tor = command_line::get_arg(vm, arg_disable_tor_relay); } //---------------------------------------------------------------------------------------------------- bool simple_wallet::try_connect_to_daemon() @@ -1738,6 +1739,21 @@ bool simple_wallet::submit_transfer(const std::vector &args) } return true; } +//---------------------------------------------------------------------------------------------------- +bool simple_wallet::tor_enable(const std::vector &args) +{ + success_msg_writer(true) << "TOR relaying enabled"; + m_wallet->set_disable_tor_relay(false); + return true; +} +//---------------------------------------------------------------------------------------------------- +bool simple_wallet::tor_disable(const std::vector &args) +{ + m_wallet->set_disable_tor_relay(true); + success_msg_writer(true) << "TOR relaying disabled"; + return true; +} + //---------------------------------------------------------------------------------------------------- bool simple_wallet::sweep_below(const std::vector &args) { @@ -1988,6 +2004,8 @@ int main(int argc, char* argv[]) command_line::add_arg(desc_params, command_line::arg_log_level); command_line::add_arg(desc_params, arg_scan_for_wallet); command_line::add_arg(desc_params, arg_addr_to_compare); + command_line::add_arg(desc_params, arg_disable_tor_relay); + tools::wallet_rpc_server::init_options(desc_params); diff --git a/src/simplewallet/simplewallet.h b/src/simplewallet/simplewallet.h index c0c0124d..f5138544 100644 --- a/src/simplewallet/simplewallet.h +++ b/src/simplewallet/simplewallet.h @@ -86,6 +86,8 @@ namespace currency bool sign_transfer(const std::vector &args); bool submit_transfer(const std::vector &args); bool sweep_below(const std::vector &args); + bool tor_enable(const std::vector &args); + bool tor_disable(const std::vector &args); bool validate_wrap_status(uint64_t amount); bool get_alias_from_daemon(const std::string& alias_name, currency::extra_alias_entry_base& ai); @@ -167,6 +169,7 @@ namespace currency bool m_do_not_set_date; bool m_do_pos_mining; bool m_offline_mode; + bool m_disable_tor; std::string m_restore_wallet; epee::console_handlers_binder m_cmd_binder; diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 07a098b7..272cfcb6 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -4618,6 +4618,8 @@ void wallet2::send_transaction_to_network(const transaction& tx) { continue;//THROW_IF_FALSE_WALLET_EX(false, error::no_connection_to_daemon, "Failed to connect to TOR node"); } + + currency::NOTIFY_OR_INVOKE_NEW_TRANSACTIONS::request p2p_req = AUTO_VAL_INIT(p2p_req); currency::NOTIFY_OR_INVOKE_NEW_TRANSACTIONS::response p2p_rsp = AUTO_VAL_INIT(p2p_rsp); p2p_req.txs.push_back(t_serializable_object_to_blob(tx));