Skip to content

Commit f264f25

Browse files
committed
Update to documentation/add example
Created a simple example Uptate to the documentation based on created simple ssl server Small bugfix to allow clean shutdown of server without warnings when using basic ssl (no client authentication)
1 parent c8908c1 commit f264f25

File tree

9 files changed

+233
-42
lines changed

9 files changed

+233
-42
lines changed

boost/network/protocol/stream_handler.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,9 @@ namespace boost { namespace network {
114114
{
115115
try {
116116
if(ssl_enabled) {
117-
return ssl_sock_->shutdown();
117+
ssl_sock_->shutdown(e);
118118
} else {
119-
return tcp_sock_->shutdown(boost::asio::ip::tcp::socket::shutdown_send);
119+
tcp_sock_->shutdown(boost::asio::ip::tcp::socket::shutdown_send,e);
120120
}
121121
} catch(const boost::system::error_code & e) {
122122
std::cerr << e.message() << std::endl;

libs/network/doc/html/_sources/reference/http_server.txt

+15-13
Original file line numberDiff line numberDiff line change
@@ -537,27 +537,29 @@ used are defined in the link.
537537

538538
.. code-block:: c++
539539

540-
boost::shared_ptr<boost::asio::ssl::context> ctx = boost::make_shared<boost::asio::ssl::context>(boost::asio::ssl::context::sslv23);
541-
ctx->set_options(
542-
boost::asio::ssl::context::default_workarounds
543-
| boost::asio::ssl::context::no_sslv2
544-
| boost::asio::ssl::context::single_dh_use);
545-
context_.set_password_callback(boost::bind(&server::get_password, this));
546-
context_.use_certificate_chain_file("server.pem");
547-
context_.use_private_key_file("server.pem", boost::asio::ssl::context::pem);
548-
context_.use_tmp_dh_file("dh512.pem");
540+
// Initialize SSL context
541+
boost::shared_ptr<boost::asio::ssl::context> ctx = boost::make_shared<boost::asio::ssl::context>(boost::asio::ssl::context::sslv23);
542+
ctx->set_options(
543+
boost::asio::ssl::context::default_workarounds
544+
| boost::asio::ssl::context::no_sslv2
545+
| boost::asio::ssl::context::single_dh_use);
546+
547+
// Set keys
548+
ctx->set_password_callback(password_callback);
549+
ctx->use_certificate_chain_file("server.pem");
550+
ctx->use_private_key_file("server.pem", boost::asio::ssl::context::pem);
551+
ctx->use_tmp_dh_file("dh512.pem");
549552

550553
handler_type handler;
551554
http_server::options options(handler);
552555
options.thread_pool(boost::make_shared<boost::network::utils::thread_pool>(2));
553-
http_server server(options.address("127.0.0.1").port("8000").context(ctx));
556+
http_server server(options.address("127.0.0.1").port("8442").context(ctx));
554557

555558

556559
.. code-block:: c++
557560

558-
std::string get_password() const
559-
{
560-
return "test";
561+
std::string password_callback(std::size_t max_length, boost::asio::ssl::context_base::password_purpose purpose) {
562+
return std::string("test");
561563
}
562564

563565
.. _Boost.Range: http://www.boost.org/libs/range

libs/network/doc/html/objects.inv

-1 Bytes
Binary file not shown.

libs/network/doc/html/reference/http_server.html

+15-13
Original file line numberDiff line numberDiff line change
@@ -659,25 +659,27 @@ <h2>Adding SSL support to Asynchronous Server<a class="headerlink" href="#adding
659659
a regular Asynchronous Server (see above). Once this server is setup, SSL can be
660660
enabled by adding a <a class="reference external" href="http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/reference/ssl__context.html">Boost.Asio.Ssl.Context</a> to the options. The settings that can be
661661
used are defined in the link.</p>
662-
<div class="highlight-c++"><div class="highlight"><pre><span class="n">boost</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">&gt;</span> <span class="n">ctx</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">make_shared</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">&gt;</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">::</span><span class="n">sslv23</span><span class="p">);</span>
663-
<span class="n">ctx</span><span class="o">-&gt;</span><span class="n">set_options</span><span class="p">(</span>
664-
<span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">::</span><span class="n">default_workarounds</span>
665-
<span class="o">|</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">::</span><span class="n">no_sslv2</span>
666-
<span class="o">|</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">::</span><span class="n">single_dh_use</span><span class="p">);</span>
667-
<span class="n">context_</span><span class="p">.</span><span class="n">set_password_callback</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">bind</span><span class="p">(</span><span class="o">&amp;</span><span class="n">server</span><span class="o">::</span><span class="n">get_password</span><span class="p">,</span> <span class="k">this</span><span class="p">));</span>
668-
<span class="n">context_</span><span class="p">.</span><span class="n">use_certificate_chain_file</span><span class="p">(</span><span class="s">&quot;server.pem&quot;</span><span class="p">);</span>
669-
<span class="n">context_</span><span class="p">.</span><span class="n">use_private_key_file</span><span class="p">(</span><span class="s">&quot;server.pem&quot;</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">::</span><span class="n">pem</span><span class="p">);</span>
670-
<span class="n">context_</span><span class="p">.</span><span class="n">use_tmp_dh_file</span><span class="p">(</span><span class="s">&quot;dh512.pem&quot;</span><span class="p">);</span>
662+
<div class="highlight-c++"><div class="highlight"><pre> <span class="c1">// Initialize SSL context</span>
663+
<span class="n">boost</span><span class="o">::</span><span class="n">shared_ptr</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">&gt;</span> <span class="n">ctx</span> <span class="o">=</span> <span class="n">boost</span><span class="o">::</span><span class="n">make_shared</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">&gt;</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">::</span><span class="n">sslv23</span><span class="p">);</span>
664+
<span class="n">ctx</span><span class="o">-&gt;</span><span class="n">set_options</span><span class="p">(</span>
665+
<span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">::</span><span class="n">default_workarounds</span>
666+
<span class="o">|</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">::</span><span class="n">no_sslv2</span>
667+
<span class="o">|</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">::</span><span class="n">single_dh_use</span><span class="p">);</span>
668+
669+
<span class="c1">// Set keys</span>
670+
<span class="n">ctx</span><span class="o">-&gt;</span><span class="n">set_password_callback</span><span class="p">(</span><span class="n">password_callback</span><span class="p">);</span>
671+
<span class="n">ctx</span><span class="o">-&gt;</span><span class="n">use_certificate_chain_file</span><span class="p">(</span><span class="s">&quot;server.pem&quot;</span><span class="p">);</span>
672+
<span class="n">ctx</span><span class="o">-&gt;</span><span class="n">use_private_key_file</span><span class="p">(</span><span class="s">&quot;server.pem&quot;</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context</span><span class="o">::</span><span class="n">pem</span><span class="p">);</span>
673+
<span class="n">ctx</span><span class="o">-&gt;</span><span class="n">use_tmp_dh_file</span><span class="p">(</span><span class="s">&quot;dh512.pem&quot;</span><span class="p">);</span>
671674

672675
<span class="n">handler_type</span> <span class="n">handler</span><span class="p">;</span>
673676
<span class="n">http_server</span><span class="o">::</span><span class="n">options</span> <span class="n">options</span><span class="p">(</span><span class="n">handler</span><span class="p">);</span>
674677
<span class="n">options</span><span class="p">.</span><span class="n">thread_pool</span><span class="p">(</span><span class="n">boost</span><span class="o">::</span><span class="n">make_shared</span><span class="o">&lt;</span><span class="n">boost</span><span class="o">::</span><span class="n">network</span><span class="o">::</span><span class="n">utils</span><span class="o">::</span><span class="n">thread_pool</span><span class="o">&gt;</span><span class="p">(</span><span class="mi">2</span><span class="p">));</span>
675-
<span class="n">http_server</span> <span class="nf">server</span><span class="p">(</span><span class="n">options</span><span class="p">.</span><span class="n">address</span><span class="p">(</span><span class="s">&quot;127.0.0.1&quot;</span><span class="p">).</span><span class="n">port</span><span class="p">(</span><span class="s">&quot;8000&quot;</span><span class="p">).</span><span class="n">context</span><span class="p">(</span><span class="n">ctx</span><span class="p">));</span>
678+
<span class="n">http_server</span> <span class="nf">server</span><span class="p">(</span><span class="n">options</span><span class="p">.</span><span class="n">address</span><span class="p">(</span><span class="s">&quot;127.0.0.1&quot;</span><span class="p">).</span><span class="n">port</span><span class="p">(</span><span class="s">&quot;8442&quot;</span><span class="p">).</span><span class="n">context</span><span class="p">(</span><span class="n">ctx</span><span class="p">));</span>
676679
</pre></div>
677680
</div>
678-
<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">get_password</span><span class="p">()</span> <span class="k">const</span>
679-
<span class="p">{</span>
680-
<span class="k">return</span> <span class="s">&quot;test&quot;</span><span class="p">;</span>
681+
<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">password_callback</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="kt">size_t</span> <span class="n">max_length</span><span class="p">,</span> <span class="n">boost</span><span class="o">::</span><span class="n">asio</span><span class="o">::</span><span class="n">ssl</span><span class="o">::</span><span class="n">context_base</span><span class="o">::</span><span class="n">password_purpose</span> <span class="n">purpose</span><span class="p">)</span> <span class="p">{</span>
682+
<span class="k">return</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">(</span><span class="s">&quot;test&quot;</span><span class="p">);</span>
681683
<span class="p">}</span>
682684
</pre></div>
683685
</div>

libs/network/doc/html/searchindex.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

libs/network/doc/reference/http_server.rst

+15-13
Original file line numberDiff line numberDiff line change
@@ -537,27 +537,29 @@ used are defined in the link.
537537

538538
.. code-block:: c++
539539

540-
boost::shared_ptr<boost::asio::ssl::context> ctx = boost::make_shared<boost::asio::ssl::context>(boost::asio::ssl::context::sslv23);
541-
ctx->set_options(
542-
boost::asio::ssl::context::default_workarounds
543-
| boost::asio::ssl::context::no_sslv2
544-
| boost::asio::ssl::context::single_dh_use);
545-
context_.set_password_callback(boost::bind(&server::get_password, this));
546-
context_.use_certificate_chain_file("server.pem");
547-
context_.use_private_key_file("server.pem", boost::asio::ssl::context::pem);
548-
context_.use_tmp_dh_file("dh512.pem");
540+
// Initialize SSL context
541+
boost::shared_ptr<boost::asio::ssl::context> ctx = boost::make_shared<boost::asio::ssl::context>(boost::asio::ssl::context::sslv23);
542+
ctx->set_options(
543+
boost::asio::ssl::context::default_workarounds
544+
| boost::asio::ssl::context::no_sslv2
545+
| boost::asio::ssl::context::single_dh_use);
546+
547+
// Set keys
548+
ctx->set_password_callback(password_callback);
549+
ctx->use_certificate_chain_file("server.pem");
550+
ctx->use_private_key_file("server.pem", boost::asio::ssl::context::pem);
551+
ctx->use_tmp_dh_file("dh512.pem");
549552

550553
handler_type handler;
551554
http_server::options options(handler);
552555
options.thread_pool(boost::make_shared<boost::network::utils::thread_pool>(2));
553-
http_server server(options.address("127.0.0.1").port("8000").context(ctx));
556+
http_server server(options.address("127.0.0.1").port("8442").context(ctx));
554557

555558

556559
.. code-block:: c++
557560

558-
std::string get_password() const
559-
{
560-
return "test";
561+
std::string password_callback(std::size_t max_length, boost::asio::ssl::context_base::password_purpose purpose) {
562+
return std::string("test");
561563
}
562564

563565
.. _Boost.Range: http://www.boost.org/libs/range
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
Diffie-Hellman-Parameters: (512 bit)
2+
prime:
3+
00:f8:57:8f:79:09:08:95:c9:0a:74:2c:85:b5:75:
4+
ff:07:67:c0:d2:94:4f:a2:45:77:7e:e1:f4:b6:86:
5+
60:9a:33:80:7b:31:75:f3:fc:8e:c3:0b:d0:8d:77:
6+
a4:ed:3a:e8:e4:35:69:3e:ce:63:49:26:a4:64:38:
7+
55:41:51:de:13
8+
generator: 5 (0x5)
9+
-----BEGIN DH PARAMETERS-----
10+
MEYCQQD4V495CQiVyQp0LIW1df8HZ8DSlE+iRXd+4fS2hmCaM4B7MXXz/I7DC9CN
11+
d6TtOujkNWk+zmNJJqRkOFVBUd4TAgEF
12+
-----END DH PARAMETERS-----
+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
Proc-Type: 4,ENCRYPTED
3+
DEK-Info: DES-EDE3-CBC,0ED70FE151E3399B
4+
5+
+0JpEbgYMyIdEE7yKdosnNzzwGffSe6UIOf/8RgWg5N1f6obqYVRPaO53R1Fdhx2
6+
08q5acaNNCZcoCs1X0s0F/dr4L5XOorz2W5qUKnlDiZqBVBfpW8vIKMiZxOBePO7
7+
/h4LGtuX843k5sCmXnONtDJrpklsds0/vvZbuln6VHNf3mCWdLc8d5yJq/nPUKSm
8+
hBd8uXPF0VUSSmTre2P0pTACz2WWI7N2uWKJqBJgGbqTfR5ciufXVR/n9leICjWM
9+
LiipPMdp4ZNGDQcP3eW7/pSgxGzGvxP9e1vTEkmv0/fRGgClOdQbs+uEyDemOA+V
10+
KHJYGhdhSCDM4VJQTO40dDhsn0glp9IjchYrxjI6jyziG1Jg7YMhoeQBMYm1zSsY
11+
vqB0i7gtjVBKzltWN9fNvZ1kOJWhOsHuPocP4L4sqaQEqWCMtcKnm8ECGYXtu8E2
12+
QmDokiWqO1+MORf+naU0nOTtnXSpsysBn1ns+8TeUzaLAy8Dd/mhX2+SWnwGs0RI
13+
VEYP+mef96SnqOKy2mDl/uzwcKUdKw4wnXrb2s8039gXBDZL09YlJxu/b/h67Dzn
14+
LSRft4JjdojTmT0Ji4eJFiew9L3bbbUyIhA9M/cdoNEnXMmOcO+XDMxemaaX4rLf
15+
nmEUcz0xpe8CVqTgx/TuOv06PX/iLyCYPnz5nczeVIw0a1/9g4WRghtoO/ezGJia
16+
jpJRmXI7Mcw4z4GgW1AbVEeIPSXQD6sqnuNcY4h/62XkVI29FjsVgU1ZRx5fu68L
17+
EIPuEri087Eep1NdRHOWwN03ppRdNxQQqB4uMNL2ruX3LzRKa0p7OQ3iL7e2V6el
18+
2srv/5AYtFCq/adukhNcpU/otSZ5Re5B6C1zLAEUSKcgYHjCOUluq8HnCijnVCMh
19+
pEQPaSM0P36DlNFjAWFlK8/N80LOfiYekLyZLbHjczSOS3EyVyvuF3pbtSHzpgtF
20+
W4EJD8siMTXcE5hL8Ws1FwWHfviAq/mI4NUcNNz6S/4IcHS6teQOE5/uFcicJxXl
21+
2wgZgYzBUeQlSqyI6XKoyfdJXducbLQqSWLEHL++Ek0ZaUKOiF+iGKPE0azKwMCc
22+
QumPY+R2BhJbuiTQE36hBpte//XPQS5dWwXW5RTJm8ARNl1vNR/DESfhWX+wmKqx
23+
2UBDRoEBa5HvrU82tWeGgm9CvTg6EOSNkap/BSdd3np631NnVm1tYz/flQvw4+5t
24+
AH0X9C1QsGFwP6y/pAZ+YB+U65iN1UE3D3U1pC5JL+56ETc3GsPKnsWhAftIMm4r
25+
l7zJ4BsrvfVnRaZFH4W+ITGy5q7iLD6Tuhpq574DxCINHtiENr00ZfPw08pMpvjG
26+
5qhuE7Vgx5MGcVhUkz+Dtsm7bDRNsRxGAO5MSiIl70oahB5q247HF2ZElVT6+LbU
27+
rQlIL4OdTdSXplW84NcoLTRy1HmLPf8B0Dt5f9Es0fAeWMiOmrrzM+spOgGXQhwv
28+
VnqQrDeSDk6TOjN5z+BuwFfR7kImO+/As9NnG8D0l0PCRMW79mED2iOTnyHT8g8b
29+
JLOjK/u2RxXFtbRwhERl4pei3NHfX4yXz2mcFjFLEOKin909WqObwedMsOUYoiN9
30+
-----END RSA PRIVATE KEY-----
31+
-----BEGIN CERTIFICATE-----
32+
MIID5jCCAs6gAwIBAgIJAI84QTgzQ+NXMA0GCSqGSIb3DQEBBQUAMFUxCzAJBgNV
33+
BAYTAkJFMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQKEwljcHBuZXRsaWIx
34+
DDAKBgNVBAsTA3NzbDEPMA0GA1UEAxMGc2VydmVyMB4XDTE0MDUyMTA4MzI1OFoX
35+
DTI0MDUxODA4MzI1OFowVTELMAkGA1UEBhMCQkUxEzARBgNVBAgTClNvbWUtU3Rh
36+
dGUxEjAQBgNVBAoTCWNwcG5ldGxpYjEMMAoGA1UECxMDc3NsMQ8wDQYDVQQDEwZz
37+
ZXJ2ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZdnFuC9w3Jmdh
38+
nQkeCD3rJ3LbmopRJkBFeAdHXvF2zPedsCjQ2J9XNcrGoejQuWNzEfmhs8pPSve3
39+
+Hn5AmqByGzN6aylJnD4qZZqpV1JrWvhReswLJktUTKtu+gh2a3gZjvXAdkGi0QX
40+
LoXyAFuhILmivE9bQB6unUpMhGiAfX9AxDINgBt/+oi2V8bkXdJl45BNUY9IqgaJ
41+
9WeDC37DmORb/IDHjmancIMyirDG2SBBGOVv/wuI0a/QUmjtBKUMEiX8PtyKSORA
42+
PnOd2Fe0LL70thBD1WtlMNoU3upIrlLUE0F4bb+Ibn+iuSyu6dWp7rr9kR3uigQ6
43+
gspTVX4RAgMBAAGjgbgwgbUwHQYDVR0OBBYEFHZpVctJQmv6ixP7PmHcFUa+7+Dy
44+
MIGFBgNVHSMEfjB8gBR2aVXLSUJr+osT+z5h3BVGvu/g8qFZpFcwVTELMAkGA1UE
45+
BhMCQkUxEzARBgNVBAgTClNvbWUtU3RhdGUxEjAQBgNVBAoTCWNwcG5ldGxpYjEM
46+
MAoGA1UECxMDc3NsMQ8wDQYDVQQDEwZzZXJ2ZXKCCQCPOEE4M0PjVzAMBgNVHRME
47+
BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQCd70N4MzxI7jKdyFXNQtHLh74hALd5
48+
p2PconV+3dE3yge88Z9IkgIx8MtVl6jm7dlggwJLGTBUD5fI0iL+KWqLl7/QxbwS
49+
82J28ScsXlEf7pygowEsUYPM8j6O42JhIGQqMWOnmqnBVDxszHvYkO12/JupbEeK
50+
p5RYS3GkyxQm5MmX0pX0H6wdfCkOdSZrHaXTx2wq2lKeQgN3mECUH51jXzB1G3nI
51+
y1dCMD+AF3eUqS2UxgPbF14U6V2vsk4DvbgyzjYFjF+ttFdnIgGwAJJWet+orhW/
52+
k+h3ZaviXhOyqjpXHXGkVUj+/AvKWArjl7D6Xh03iUp0xt1Bn28CxQ90
53+
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)