wallet2_api: implement runtime proxy configuration

This commit is contained in:
xiphon
2020-07-20 04:31:58 +00:00
parent 5d850dde99
commit 76c16822d0
19 changed files with 212 additions and 54 deletions

View File

@@ -122,4 +122,39 @@ namespace net
return {epee::net_utils::ipv4_network_subnet{ip, (uint8_t)mask}};
}
expect<boost::asio::ip::tcp::endpoint> get_tcp_endpoint(const boost::string_ref address)
{
uint16_t port = 0;
expect<epee::net_utils::network_address> parsed = get_network_address(address, port);
if (!parsed)
{
return parsed.error();
}
boost::asio::ip::tcp::endpoint result;
switch (parsed->get_type_id())
{
case epee::net_utils::ipv4_network_address::get_type_id():
{
const auto &ipv4 = parsed->as<epee::net_utils::ipv4_network_address>();
result = boost::asio::ip::tcp::endpoint(boost::asio::ip::address_v4(ipv4.ip()), ipv4.port());
break;
}
case epee::net_utils::ipv6_network_address::get_type_id():
{
const auto &ipv6 = parsed->as<epee::net_utils::ipv6_network_address>();
result = boost::asio::ip::tcp::endpoint(ipv6.ip(), ipv6.port());
break;
}
default:
return make_error_code(net::error::unsupported_address);
}
if (result.port() == 0)
{
return make_error_code(net::error::invalid_port);
}
return result;
}
}