xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
xrpld
app
misc
detail
WorkSSL.cpp
1
#include <xrpld/app/misc/detail/WorkSSL.h>
2
3
#include <xrpld/app/misc/detail/WorkBase.h>
4
#include <xrpld/core/Config.h>
5
6
#include <xrpl/basics/contract.h>
7
#include <xrpl/beast/utility/Journal.h>
8
9
#include <boost/asio/bind_executor.hpp>
10
#include <boost/asio/io_context.hpp>
11
#include <boost/asio/ssl/context.hpp>
12
#include <boost/asio/ssl/stream_base.hpp>
13
14
#include <format>
15
#include <
stdexcept
>
16
#include <
string
>
17
18
namespace
xrpl::detail
{
19
20
WorkSSL::WorkSSL
(
21
std::string
const
& host,
22
std::string
const
&
path
,
23
std::string
const
& port,
24
boost::asio::io_context& ios,
25
beast::Journal
j,
26
Config
const
& config,
27
EndpointType
const
& lastEndpoint,
28
bool
lastStatus,
29
CallbackType
cb)
30
:
WorkBase
(host,
path
, port, ios, lastEndpoint, lastStatus, cb)
31
,
context_
(
32
config.sslVerifyDir,
33
config.sslVerifyFile,
34
config.sslVerify,
35
j,
36
boost
::asio::ssl::context::tlsv12_client)
37
,
stream_
(
socket_
,
context_
.context())
38
{
39
auto
ec =
context_
.preConnectVerify(
stream_
,
host_
);
40
if
(ec)
41
Throw<std::runtime_error>
(
std::format
(
"preConnectVerify: {}"
, ec.message()));
42
}
43
44
void
45
WorkSSL::onConnect
(
ErrorCode
const
& ec)
46
{
47
auto
err = ec ? ec :
context_
.postConnectVerify(
stream_
,
host_
);
48
if
(err)
49
{
50
fail
(err);
51
return
;
52
}
53
54
stream_
.async_handshake(
55
boost::asio::ssl::stream_base::client,
56
boost::asio::bind_executor(
57
strand_
, [self =
shared_from_this
()](
ErrorCode
const
& ec) { self->onHandshake(ec); }));
58
}
59
60
void
61
WorkSSL::onHandshake
(
ErrorCode
const
& ec)
62
{
63
if
(ec)
64
{
65
fail
(ec);
66
return
;
67
}
68
69
onStart
();
70
}
71
72
}
// namespace xrpl::detail
std::string
beast::Journal
A generic endpoint for log messages.
Definition
Journal.h:44
xrpl::Config
Definition
src/xrpld/core/Config.h:89
xrpl::detail::WorkBase< WorkSSL >::fail
void fail(ErrorCode const &ec)
Definition
WorkBase.h:175
xrpl::detail::WorkBase< WorkSSL >::ErrorCode
boost::system::error_code ErrorCode
Definition
WorkBase.h:26
xrpl::detail::WorkBase< WorkSSL >::WorkBase
WorkBase(std::string host, std::string path, std::string port, boost::asio::io_context &ios, EndpointType lastEndpoint, bool lastStatus, CallbackType cb)
Definition
WorkBase.h:105
xrpl::detail::WorkBase< WorkSSL >::EndpointType
boost::asio::ip::tcp::endpoint EndpointType
Definition
WorkBase.h:27
xrpl::detail::WorkBase< WorkSSL >::socket_
SocketType socket_
Definition
WorkBase.h:45
xrpl::detail::WorkBase< WorkSSL >::strand_
boost::asio::strand< boost::asio::io_context::executor_type > strand_
Definition
WorkBase.h:43
xrpl::detail::WorkBase< WorkSSL >::CallbackType
std::function< void(ErrorCode const &, EndpointType const &, ResponseType &&)> CallbackType
Definition
WorkBase.h:30
xrpl::detail::WorkBase< WorkSSL >::host_
std::string host_
Definition
WorkBase.h:38
xrpl::detail::WorkBase< WorkSSL >::onStart
void onStart()
Definition
WorkBase.h:217
xrpl::detail::WorkSSL::stream_
StreamType stream_
Definition
WorkSSL.h:25
xrpl::detail::WorkSSL::onHandshake
void onHandshake(ErrorCode const &ec)
Definition
WorkSSL.cpp:61
xrpl::detail::WorkSSL::context_
HTTPClientSSLContext context_
Definition
WorkSSL.h:24
xrpl::detail::WorkSSL::onConnect
void onConnect(ErrorCode const &ec)
Definition
WorkSSL.cpp:45
xrpl::detail::WorkSSL::WorkSSL
WorkSSL(std::string const &host, std::string const &path, std::string const &port, boost::asio::io_context &ios, beast::Journal j, Config const &config, EndpointType const &lastEndpoint, bool lastStatus, CallbackType cb)
Definition
WorkSSL.cpp:20
std::format
T format(T... args)
boost
Definition
IPAddress.h:102
xrpl::detail
Definition
base_uint.h:37
xrpl::path
Definition
FlowDebugInfo.h:21
xrpl::Throw
XRPL_NO_SANITIZE_ADDRESS void Throw(Args &&... args)
Definition
contract.h:52
std::enable_shared_from_this< WorkSSL >::shared_from_this
T shared_from_this(T... args)
stdexcept
string
Generated by
1.17.0