mirror of
https://github.com/monero-project/monero.git
synced 2025-08-23 17:45:05 -04:00
Merge pull request #6716
76c16822d
wallet2_api: implement runtime proxy configuration (xiphon)
This commit is contained in:
commit
01b512f3a9
19 changed files with 212 additions and 54 deletions
|
@ -48,6 +48,7 @@ using namespace epee;
|
|||
#include "wallet_rpc_helpers.h"
|
||||
#include "wallet2.h"
|
||||
#include "cryptonote_basic/cryptonote_format_utils.h"
|
||||
#include "net/parse.h"
|
||||
#include "rpc/core_rpc_server_commands_defs.h"
|
||||
#include "rpc/core_rpc_server_error_codes.h"
|
||||
#include "rpc/rpc_payment_signature.h"
|
||||
|
@ -440,30 +441,14 @@ std::unique_ptr<tools::wallet2> make_basic(const boost::program_options::variabl
|
|||
);
|
||||
}
|
||||
|
||||
boost::asio::ip::tcp::endpoint proxy{};
|
||||
std::string proxy;
|
||||
if (use_proxy)
|
||||
{
|
||||
namespace ip = boost::asio::ip;
|
||||
|
||||
const auto proxy_address = command_line::get_arg(vm, opts.proxy);
|
||||
|
||||
boost::string_ref proxy_port{proxy_address};
|
||||
boost::string_ref proxy_host = proxy_port.substr(0, proxy_port.rfind(":"));
|
||||
if (proxy_port.size() == proxy_host.size())
|
||||
proxy_host = "127.0.0.1";
|
||||
else
|
||||
proxy_port = proxy_port.substr(proxy_host.size() + 1);
|
||||
|
||||
uint16_t port_value = 0;
|
||||
proxy = command_line::get_arg(vm, opts.proxy);
|
||||
THROW_WALLET_EXCEPTION_IF(
|
||||
!epee::string_tools::get_xtype_from_string(port_value, std::string{proxy_port}),
|
||||
!net::get_tcp_endpoint(proxy),
|
||||
tools::error::wallet_internal_error,
|
||||
std::string{"Invalid port specified for --"} + opts.proxy.name
|
||||
);
|
||||
|
||||
boost::system::error_code error{};
|
||||
proxy = ip::tcp::endpoint{ip::address::from_string(std::string{proxy_host}, error), port_value};
|
||||
THROW_WALLET_EXCEPTION_IF(bool(error), tools::error::wallet_internal_error, std::string{"Invalid IP address specified for --"} + opts.proxy.name);
|
||||
std::string{"Invalid address specified for --"} + opts.proxy.name);
|
||||
}
|
||||
|
||||
boost::optional<bool> trusted_daemon;
|
||||
|
@ -1328,18 +1313,17 @@ bool wallet2::set_daemon(std::string daemon_address, boost::optional<epee::net_u
|
|||
return ret;
|
||||
}
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
bool wallet2::init(std::string daemon_address, boost::optional<epee::net_utils::http::login> daemon_login, boost::asio::ip::tcp::endpoint proxy, uint64_t upper_transaction_weight_limit, bool trusted_daemon, epee::net_utils::ssl_options_t ssl_options)
|
||||
bool wallet2::set_proxy(const std::string &address)
|
||||
{
|
||||
return m_http_client->set_proxy(address);
|
||||
}
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
bool wallet2::init(std::string daemon_address, boost::optional<epee::net_utils::http::login> daemon_login, const std::string &proxy_address, uint64_t upper_transaction_weight_limit, bool trusted_daemon, epee::net_utils::ssl_options_t ssl_options)
|
||||
{
|
||||
CHECK_AND_ASSERT_MES(set_proxy(proxy_address), false, "failed to set proxy address");
|
||||
m_checkpoints.init_default_checkpoints(m_nettype);
|
||||
m_is_initialized = true;
|
||||
m_upper_transaction_weight_limit = upper_transaction_weight_limit;
|
||||
if (proxy != boost::asio::ip::tcp::endpoint{})
|
||||
{
|
||||
epee::net_utils::http::abstract_http_client* abstract_http_client = m_http_client.get();
|
||||
epee::net_utils::http::http_simple_client* http_simple_client = dynamic_cast<epee::net_utils::http::http_simple_client*>(abstract_http_client);
|
||||
CHECK_AND_ASSERT_MES(http_simple_client != nullptr, false, "http_simple_client must be used to set proxy");
|
||||
http_simple_client->set_connector(net::socks::connector{std::move(proxy)});
|
||||
}
|
||||
return set_daemon(daemon_address, daemon_login, trusted_daemon, std::move(ssl_options));
|
||||
}
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue