From 20d01a433faa0e1761f2a55bcd513d8674a380df Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Wed, 12 Sep 2018 02:25:00 +0200 Subject: [PATCH] Test serving over SSL --- main.cpp | 7 ++++++- src/new_design/AsyncSocket.h | 6 +++++- src/new_design/HttpContext.h | 13 ++++++++++--- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/main.cpp b/main.cpp index e8bf529..cf1fbb7 100644 --- a/main.cpp +++ b/main.cpp @@ -56,7 +56,12 @@ int main(int argc, char **argv) { uWS::Loop loop; - uWS::HttpContext *httpContext = uWS::HttpContext::create(loop.loop); + us_ssl_socket_context_options ssl_options; + ssl_options.key_file_name = "/home/alexhultman/uWebSockets/misc/ssl/key.pem"; + ssl_options.cert_file_name = "/home/alexhultman/uWebSockets/misc/ssl/cert.pem"; + ssl_options.passphrase = "1234"; + + uWS::HttpContext *httpContext = uWS::HttpContext::create(loop.loop, &ssl_options); // req, res? httpContext->onGet("/:folder/:file", [](auto *res, auto *req) { diff --git a/src/new_design/AsyncSocket.h b/src/new_design/AsyncSocket.h index c30c2cd..6762e31 100644 --- a/src/new_design/AsyncSocket.h +++ b/src/new_design/AsyncSocket.h @@ -37,7 +37,11 @@ protected: } LoopData *getLoopData() { - return (LoopData *) us_loop_ext(us_socket_context_loop(us_socket_get_context((SOCKET_TYPE *) this))); + if constexpr(SSL) { + return (LoopData *) us_loop_ext(us_ssl_socket_context_loop(us_ssl_socket_get_context((SOCKET_TYPE *) this))); + } else { + return (LoopData *) us_loop_ext(us_socket_context_loop(us_socket_get_context((SOCKET_TYPE *) this))); + } } public: diff --git a/src/new_design/HttpContext.h b/src/new_design/HttpContext.h index 29618e6..5c1fa66 100644 --- a/src/new_design/HttpContext.h +++ b/src/new_design/HttpContext.h @@ -31,7 +31,7 @@ private: } static SOCKET_CONTEXT_TYPE *getSocketContext(SOCKET_TYPE *s) { - return (SOCKET_CONTEXT_TYPE *) us_socket_get_context(s); + return (SOCKET_CONTEXT_TYPE *) static_dispatch(us_ssl_socket_get_context, us_socket_get_context)(s); } HttpContextData *getSocketContextData() { @@ -164,8 +164,15 @@ private: public: /* Construct a new HttpContext using specified loop */ - static HttpContext *create(us_loop *loop) { - HttpContext *httpContext = (HttpContext *) us_create_socket_context(loop, sizeof(HttpContextData)); + static HttpContext *create(us_loop *loop, us_ssl_socket_context_options *ssl_options = nullptr) { + HttpContext *httpContext; + + if constexpr(SSL) { + httpContext = (HttpContext *) us_create_ssl_socket_context(loop, sizeof(HttpContextData), *ssl_options); + } else { + httpContext = (HttpContext *) us_create_socket_context(loop, sizeof(HttpContextData)); + } + new ((HttpContextData *) static_dispatch(us_ssl_socket_context_ext, us_socket_context_ext)((SOCKET_CONTEXT_TYPE *) httpContext)) HttpContextData(); return httpContext->init();