Add a config option allowing to disable SSL.
This commit is contained in:
+11
-7
@@ -20,9 +20,11 @@ if(WIN32)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(WEBCC_ENABLE_LOG 1 CACHE STRING "Enable logging? (0:OFF, 1:ON)")
|
||||
set(WEBCC_ENABLE_LOG 1 CACHE STRING "Enable logging? (1:Yes, 0:No)")
|
||||
set(WEBCC_LOG_LEVEL 2 CACHE STRING "Log level (0:VERB, 1:INFO, 2:WARN, 3:ERRO or 4:FATA)")
|
||||
|
||||
set(WEBCC_ENABLE_SSL 0 CACHE STRING "Enable SSL/HTTPS (need OpenSSL)? (1:Yes, 0:No)")
|
||||
|
||||
if(WEBCC_ENABLE_UNITTEST)
|
||||
enable_testing()
|
||||
endif()
|
||||
@@ -84,12 +86,14 @@ if(Boost_FOUND)
|
||||
message(STATUS ${Boost_LIBRARIES})
|
||||
endif()
|
||||
|
||||
set(OPENSSL_USE_STATIC_LIBS ON)
|
||||
set(OPENSSL_MSVC_STATIC_RT ON)
|
||||
find_package(OpenSSL)
|
||||
if(OPENSSL_FOUND)
|
||||
include_directories(${OPENSSL_INCLUDE_DIR})
|
||||
message(STATUS "OpenSSL libs: " ${OPENSSL_LIBRARIES})
|
||||
if(WEBCC_ENABLE_SSL)
|
||||
set(OPENSSL_USE_STATIC_LIBS ON)
|
||||
set(OPENSSL_MSVC_STATIC_RT ON)
|
||||
find_package(OpenSSL)
|
||||
if(OPENSSL_FOUND)
|
||||
include_directories(${OPENSSL_INCLUDE_DIR})
|
||||
message(STATUS "OpenSSL libs: " ${OPENSSL_LIBRARIES})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include_directories(
|
||||
|
||||
+23
-17
@@ -1,17 +1,21 @@
|
||||
# Examples
|
||||
|
||||
# Common libraries to link for examples.
|
||||
set(EXAMPLE_COMMON_LIBS webcc ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES}
|
||||
"${CMAKE_THREAD_LIBS_INIT}")
|
||||
set(EXAMPLE_LIBS webcc ${Boost_LIBRARIES} "${CMAKE_THREAD_LIBS_INIT}")
|
||||
|
||||
if(WEBCC_ENABLE_SSL)
|
||||
set(EXAMPLE_LIBS ${EXAMPLE_LIBS} ${OPENSSL_LIBRARIES})
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set(EXAMPLE_COMMON_LIBS ${EXAMPLE_COMMON_LIBS} zlibstatic crypt32)
|
||||
set(EXAMPLE_LIBS ${EXAMPLE_LIBS} zlibstatic crypt32)
|
||||
else()
|
||||
set(EXAMPLE_COMMON_LIBS ${EXAMPLE_COMMON_LIBS} ${ZLIB_LIBRARIES})
|
||||
set(EXAMPLE_LIBS ${EXAMPLE_LIBS} ${ZLIB_LIBRARIES})
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
# Add `-ldl` for Linux to avoid "undefined reference to `dlopen'".
|
||||
set(EXAMPLE_COMMON_LIBS ${EXAMPLE_COMMON_LIBS} ${CMAKE_DL_LIBS})
|
||||
set(EXAMPLE_LIBS ${EXAMPLE_LIBS} ${CMAKE_DL_LIBS})
|
||||
endif()
|
||||
|
||||
set(REST_BOOK_SRCS
|
||||
@@ -22,31 +26,33 @@ set(REST_BOOK_SRCS
|
||||
)
|
||||
|
||||
add_executable(http_client http_client.cc)
|
||||
target_link_libraries(http_client ${EXAMPLE_COMMON_LIBS})
|
||||
target_link_libraries(http_client ${EXAMPLE_LIBS})
|
||||
|
||||
add_executable(github_client github_client.cc)
|
||||
target_link_libraries(github_client ${EXAMPLE_COMMON_LIBS} jsoncpp)
|
||||
if(WEBCC_ENABLE_SSL)
|
||||
add_executable(github_client github_client.cc)
|
||||
target_link_libraries(github_client ${EXAMPLE_LIBS} jsoncpp)
|
||||
endif()
|
||||
|
||||
add_executable(file_upload_client file_upload_client.cc)
|
||||
target_link_libraries(file_upload_client ${EXAMPLE_COMMON_LIBS})
|
||||
target_link_libraries(file_upload_client ${EXAMPLE_LIBS})
|
||||
|
||||
add_executable(file_upload_server file_upload_server.cc)
|
||||
target_link_libraries(file_upload_server ${EXAMPLE_COMMON_LIBS})
|
||||
target_link_libraries(file_upload_server ${EXAMPLE_LIBS})
|
||||
|
||||
add_executable(rest_book_server rest_book_server.cc ${REST_BOOK_SRCS})
|
||||
target_link_libraries(rest_book_server ${EXAMPLE_COMMON_LIBS} jsoncpp)
|
||||
target_link_libraries(rest_book_server ${EXAMPLE_LIBS} jsoncpp)
|
||||
|
||||
add_executable(rest_book_client rest_book_client.cc ${REST_BOOK_SRCS})
|
||||
target_link_libraries(rest_book_client ${EXAMPLE_COMMON_LIBS} jsoncpp)
|
||||
target_link_libraries(rest_book_client ${EXAMPLE_LIBS} jsoncpp)
|
||||
|
||||
if(WEBCC_ENABLE_SOAP)
|
||||
add_executable(soap_calc_server soap_calc_server.cc)
|
||||
add_executable(soap_calc_client soap_calc_client.cc)
|
||||
add_executable(soap_calc_client_parasoft soap_calc_client_parasoft.cc)
|
||||
|
||||
target_link_libraries(soap_calc_server ${EXAMPLE_COMMON_LIBS} pugixml)
|
||||
target_link_libraries(soap_calc_client ${EXAMPLE_COMMON_LIBS} pugixml)
|
||||
target_link_libraries(soap_calc_client_parasoft ${EXAMPLE_COMMON_LIBS} pugixml)
|
||||
target_link_libraries(soap_calc_server ${EXAMPLE_LIBS} pugixml)
|
||||
target_link_libraries(soap_calc_client ${EXAMPLE_LIBS} pugixml)
|
||||
target_link_libraries(soap_calc_client_parasoft ${EXAMPLE_LIBS} pugixml)
|
||||
|
||||
set(SOAP_BOOK_SRCS
|
||||
common/book.cc
|
||||
@@ -58,6 +64,6 @@ if(WEBCC_ENABLE_SOAP)
|
||||
add_executable(soap_book_server soap_book_server.cc ${SOAP_BOOK_SRCS})
|
||||
add_executable(soap_book_client soap_book_client.cc ${SOAP_BOOK_SRCS})
|
||||
|
||||
target_link_libraries(soap_book_server ${EXAMPLE_COMMON_LIBS} pugixml)
|
||||
target_link_libraries(soap_book_client ${EXAMPLE_COMMON_LIBS} pugixml)
|
||||
target_link_libraries(soap_book_server ${EXAMPLE_LIBS} pugixml)
|
||||
target_link_libraries(soap_book_client ${EXAMPLE_LIBS} pugixml)
|
||||
endif()
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
// Compile configurations.
|
||||
|
||||
// Set 0 to disable logging.
|
||||
// Set 1/0 to enable/disable logging.
|
||||
#define WEBCC_ENABLE_LOG 1
|
||||
|
||||
#if WEBCC_ENABLE_LOG
|
||||
@@ -11,4 +11,7 @@
|
||||
#define WEBCC_LOG_LEVEL 2
|
||||
#endif
|
||||
|
||||
// Set 1/0 to enable/disable SSL/HTTPS.
|
||||
#define WEBCC_ENABLE_SSL 1
|
||||
|
||||
#endif // WEBCC_CONFIG_H_
|
||||
|
||||
@@ -2,11 +2,18 @@
|
||||
#define WEBCC_CONFIG_H_
|
||||
|
||||
// Compile configurations.
|
||||
// This file is auto-generated by CMake during configuration
|
||||
// from config.h.in.
|
||||
|
||||
// Set 1/0 to enable/disable logging.
|
||||
#define WEBCC_ENABLE_LOG @WEBCC_ENABLE_LOG@
|
||||
|
||||
#if WEBCC_ENABLE_LOG
|
||||
// 0:VERB, 1:INFO, 2:WARN, 3:ERRO or 4:FATA
|
||||
#define WEBCC_LOG_LEVEL @WEBCC_LOG_LEVEL@
|
||||
#endif
|
||||
|
||||
// Set 1/0 to enable/disable SSL/HTTPS.
|
||||
#define WEBCC_ENABLE_SSL @WEBCC_ENABLE_SSL@
|
||||
|
||||
#endif // WEBCC_CONFIG_H_
|
||||
|
||||
@@ -73,8 +73,13 @@ void HttpClient::Close() {
|
||||
|
||||
Error HttpClient::Connect(HttpRequestPtr request) {
|
||||
if (request->url().scheme() == "https") {
|
||||
#if WEBCC_ENABLE_SSL
|
||||
socket_.reset(new HttpSslSocket{ io_context_, ssl_verify_ });
|
||||
return DoConnect(request, kPort443);
|
||||
#else
|
||||
LOG_ERRO("SSL/HTTPS support is not enabled.");
|
||||
return kSchemaError;
|
||||
#endif // WEBCC_ENABLE_SSL
|
||||
} else {
|
||||
socket_.reset(new HttpSocket{ io_context_ });
|
||||
return DoConnect(request, kPort80);
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
|
||||
#include "webcc/logger.h"
|
||||
|
||||
namespace ssl = boost::asio::ssl;
|
||||
|
||||
namespace webcc {
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
@@ -37,6 +35,10 @@ void HttpSocket::Close(boost::system::error_code* ec) {
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#if WEBCC_ENABLE_SSL
|
||||
|
||||
namespace ssl = boost::asio::ssl;
|
||||
|
||||
HttpSslSocket::HttpSslSocket(boost::asio::io_context& io_context,
|
||||
bool ssl_verify)
|
||||
: ssl_context_(ssl::context::sslv23),
|
||||
@@ -89,4 +91,6 @@ void HttpSslSocket::Handshake(const std::string& host,
|
||||
}
|
||||
}
|
||||
|
||||
#endif // WEBCC_ENABLE_SSL
|
||||
|
||||
} // namespace webcc
|
||||
|
||||
+9
-1
@@ -4,10 +4,14 @@
|
||||
#include <vector>
|
||||
|
||||
#include "boost/asio/ip/tcp.hpp"
|
||||
#include "boost/asio/ssl.hpp"
|
||||
|
||||
#include "webcc/config.h"
|
||||
#include "webcc/http_request.h"
|
||||
|
||||
#if WEBCC_ENABLE_SSL
|
||||
#include "boost/asio/ssl.hpp"
|
||||
#endif // WEBCC_ENABLE_SSL
|
||||
|
||||
namespace webcc {
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
@@ -58,6 +62,8 @@ private:
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
#if WEBCC_ENABLE_SSL
|
||||
|
||||
class HttpSslSocket : public HttpSocketBase {
|
||||
public:
|
||||
explicit HttpSslSocket(boost::asio::io_context& io_context,
|
||||
@@ -85,6 +91,8 @@ private:
|
||||
bool ssl_verify_;
|
||||
};
|
||||
|
||||
#endif // WEBCC_ENABLE_SSL
|
||||
|
||||
} // namespace webcc
|
||||
|
||||
#endif // WEBCC_HTTP_SOCKET_H_
|
||||
|
||||
Reference in New Issue
Block a user