32 #include <boost/asio/io_context.hpp> 33 #include <boost/asio/ip/tcp.hpp> 34 #include <boost/asio/strand.hpp> 35 #include <boost/system/error_code.hpp> 36 #include <boost/type_traits/integral_constant.hpp> 37 #include <boost/utility/string_ref.hpp> 48 class ipv4_network_address;
96 boost::asio::strand<boost::asio::ip::tcp::socket::executor_type>
strand_;
112 virtual void done(boost::system::error_code
error, std::shared_ptr<client>
self) = 0;
180 static bool connect_and_send(std::shared_ptr<client>
self,
const stream_type::endpoint& proxy_address);
195 static bool send(std::shared_ptr<client>
self);
202 void operator()(boost::system::error_code
error = boost::system::error_code{});
208 std::shared_ptr<client>
self;
213 template<
typename Handler>
218 virtual void done(boost::system::error_code
error, std::shared_ptr<client>)
override 231 template<
typename Handler>
232 inline std::shared_ptr<client>
235 return std::make_shared<connect_client<Handler>>(
std::move(proxy), ver,
std::move(handler));
std::error_category const & error_category() noexcept
Definition: error.cpp:92
epee::span< const std::uint8_t > buffer() const noexcept
Definition: socks.h:143
socks::version socks_version() const noexcept
Definition: socks.h:140
static bool connect_and_send(std::shared_ptr< client > self, const stream_type::endpoint &proxy_address)
Definition: socks.cpp:295
Definition: portable_binary_archive.hpp:29
b32 i2p address; internal format not condensed/decoded.
Definition: i2p_address.h:51
bool set_resolve_command(boost::string_ref domain)
Try to set domain as remote DNS A record lookup request.
Definition: socks.cpp:285
Definition: net_utils_base.h:68
std::unique_ptr< void, close > socket
Unique ZMQ socket handle, calls zmq_close on destruction.
Definition: zmq.h:108
unsigned short uint16_t
Definition: stdint.h:125
void clear_command() noexcept
Definition: socks.h:149
std::uint16_t buffer_size_
Definition: socks.h:97
unsigned char uint8_t
Definition: stdint.h:124
std::shared_ptr< client > make_connect_client(client::stream_type::socket &&proxy, socks::version ver, Handler handler)
Definition: socks.h:233
stream_type::socket take_socket()
Definition: socks.h:134
Definition: socks.cpp:177
Extensions defined in Tor codebase.
bool_constant< true > true_type
Definition: gtest-port.h:2210
boost::asio::ip::tcp stream_type
Definition: socks.h:115
bool set_connect_command(const epee::net_utils::ipv4_network_address &address)
Try to set address as remote connection request.
Definition: socks.cpp:230
void operator()(boost::system::error_code error=boost::system::error_code{})
Definition: socks.cpp:317
virtual ~connect_client() override
Definition: socks.h:228
boost::asio::ip::tcp::socket proxy_
Definition: socks.h:95
virtual void done(boost::system::error_code error, std::shared_ptr< client >) override
Definition: socks.h:218
Definition: net_utils_base.h:58
Handler handler_
Definition: socks.h:216
std::uint8_t buffer_[1024]
Definition: socks.h:98
int
Definition: pymoduletest.py:17
std::shared_ptr< client > self_
Definition: socks.h:201
virtual ~client()
Definition: socks.cpp:228
version
Supported socks variants.
Definition: socks.h:57
socks::version ver_
Definition: socks.h:99
boost::endian::big_uint16_t port
Definition: socks.cpp:61
Client support for socks connect and resolve commands.
Definition: socks.h:93
boost::system::error_code make_error_code(error value) noexcept
Definition: socks.h:87
TODO: (mj-xmr) This will be reduced in an another PR.
Definition: byte_slice.h:39
uint32_t address
Definition: getifaddr.c:269
error
Possible errors with socks communication. Defined in https://www.openssh.com/txt/socks4.protocol.
Definition: socks.h:65
const T & move(const T &t)
Definition: gtest-port.h:1317
Tor onion address; internal format not condensed/decoded.
Definition: tor_address.h:52
client & operator=(const client &)=delete
client(stream_type::socket &&proxy, socks::version ver)
Definition: socks.cpp:224
const GenericPointer< typename T::ValueType > T2 value
Definition: pointer.h:1225
const boost::system::error_category & error_category() noexcept
Definition: socks.cpp:144
virtual void done(boost::system::error_code error, std::shared_ptr< client > self)=0
boost::asio::strand< boost::asio::ip::tcp::socket::executor_type > strand_
Definition: socks.h:96
Calls async_close on self at destruction. NOP if nullptr.
Definition: socks.h:206
~close_on_exit()
Definition: socks.h:209
connect_client(stream_type::socket &&proxy, socks::version ver, Handler &&handler)
Definition: socks.h:224
Definition: socks.cpp:202
#define const
Definition: ipfrdr.c:80
Definition: socks.cpp:150
static bool send(std::shared_ptr< client > self)
Definition: socks.cpp:306
#define inline
Definition: inline_c.h:34