diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index e635173..74bc20a 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -423,11 +423,12 @@ jobs: strategy: matrix: config: - - {vs: Visual Studio 17 2022, os: 2022, vspath: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise", rx: "ON", upnp: "ON", grpc: "ON"} - - {vs: Visual Studio 16 2019, os: 2019, vspath: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise", rx: "ON", upnp: "ON", grpc: "ON"} - - {vs: Visual Studio 16 2019, os: 2019, vspath: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise", rx: "ON", upnp: "ON", grpc: "OFF"} - - {vs: Visual Studio 16 2019, os: 2019, vspath: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise", rx: "OFF", upnp: "ON", grpc: "OFF"} - - {vs: Visual Studio 16 2019, os: 2019, vspath: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise", rx: "OFF", upnp: "OFF", grpc: "OFF"} + - {vs: Visual Studio 17 2022, os: 2022, vspath: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise", rx: "ON", upnp: "ON", grpc: "ON", tls: "ON"} + - {vs: Visual Studio 16 2019, os: 2019, vspath: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise", rx: "ON", upnp: "ON", grpc: "ON", tls: "ON"} + - {vs: Visual Studio 16 2019, os: 2019, vspath: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise", rx: "ON", upnp: "ON", grpc: "OFF", tls: "ON"} + - {vs: Visual Studio 16 2019, os: 2019, vspath: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise", rx: "OFF", upnp: "ON", grpc: "OFF", tls: "ON"} + - {vs: Visual Studio 16 2019, os: 2019, vspath: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise", rx: "OFF", upnp: "OFF", grpc: "OFF", tls: "ON"} + - {vs: Visual Studio 16 2019, os: 2019, vspath: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise", rx: "OFF", upnp: "OFF", grpc: "OFF", tls: "OFF"} steps: - name: Checkout repository @@ -442,7 +443,7 @@ jobs: run: | mkdir build cd build - cmake .. -G "${{ matrix.config.vs }}" -DCMAKE_SYSTEM_VERSION="10.0" -DWITH_RANDOMX=${{ matrix.config.rx }} -DWITH_UPNP=${{ matrix.config.upnp }} -DWITH_GRPC=${{ matrix.config.grpc }} + cmake .. -G "${{ matrix.config.vs }}" -DCMAKE_SYSTEM_VERSION="10.0" -DWITH_RANDOMX=${{ matrix.config.rx }} -DWITH_UPNP=${{ matrix.config.upnp }} -DWITH_GRPC=${{ matrix.config.grpc }} -DWITH_TLS=${{ matrix.config.tls }} & "${{ matrix.config.vspath }}\\MSBuild\\Current\\Bin\\amd64\\msbuild" -v:m /m /p:Configuration=Release p2pool.vcxproj - name: Check Windows 7 compatibility @@ -480,7 +481,7 @@ jobs: - name: Archive binary uses: actions/upload-artifact@v4 with: - name: p2pool-vs-${{ matrix.config.os }}-randomx-${{ matrix.config.rx }}-upnp-${{ matrix.config.upnp }}-grpc-${{ matrix.config.grpc }}.exe + name: p2pool-vs-${{ matrix.config.os }}-randomx-${{ matrix.config.rx }}-upnp-${{ matrix.config.upnp }}-grpc-${{ matrix.config.grpc }}-tls-${{ matrix.config.tls }}.exe path: build/Release/p2pool.exe build-macos: diff --git a/CMakeLists.txt b/CMakeLists.txt index 410fec9..a69055d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,6 +38,9 @@ if (WITH_GRPC) include(cmake/grpc.cmake) add_subdirectory(external/src/Tari) +elseif (WITH_TLS) + add_subdirectory(cmake/ssl) + include_directories(external/src/grpc/third_party/boringssl-with-bazel/src/include) endif() if (WITH_RANDOMX) @@ -167,7 +170,7 @@ if (WITH_GRPC) set(SOURCES ${SOURCES} src/merge_mining_client_tari.cpp) endif() -if (WITH_GRPC AND WITH_TLS) +if (WITH_TLS) add_definitions(-DWITH_TLS) set(HEADERS ${HEADERS} src/tls.h) @@ -412,6 +415,8 @@ if (STATIC_BINARY OR STATIC_LIBS) if (WITH_GRPC) set(STATIC_LIBS ${STATIC_LIBS} Tari_gRPC grpc grpc++ libprotobuf) + elseif(WITH_TLS) + set(STATIC_LIBS ${STATIC_LIBS} ssl crypto) endif() target_link_libraries(${CMAKE_PROJECT_NAME} @@ -423,6 +428,8 @@ if (STATIC_BINARY OR STATIC_LIBS) else() if (WITH_GRPC) set(LIBS ${LIBS} Tari_gRPC grpc grpc++ libprotobuf) + elseif(WITH_TLS) + set(LIBS ${LIBS} ssl crypto) endif() target_link_libraries(${CMAKE_PROJECT_NAME} debug ${ZMQ_LIBRARY_DEBUG} debug ${UV_LIBRARY_DEBUG} debug ${CURL_LIBRARY_DEBUG} optimized ${ZMQ_LIBRARY} optimized ${UV_LIBRARY} optimized ${CURL_LIBRARY} ${LIBS}) diff --git a/cmake/ssl/CMakeLists.txt b/cmake/ssl/CMakeLists.txt new file mode 100644 index 0000000..40992a8 --- /dev/null +++ b/cmake/ssl/CMakeLists.txt @@ -0,0 +1,31 @@ +cmake_minimum_required(VERSION 3.12) + +project(P2Pool_SSL LANGUAGES C CXX) + +if (CMAKE_CXX_COMPILER_ID MATCHES MSVC) + set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /W0 /Zi /Od /Ob0 /MP /MTd") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W0 /Zi /Od /Ob0 /MP /MTd") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /W0 /O1 /Ob2 /Oi /Os /Oy /MP /MT") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /W0 /O1 /Ob2 /Oi /Os /Oy /MP /MT") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /W0 /Ob1 /Ot /Zi /MP /MT") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /W0 /Ob1 /Ot /Zi /MP /MT") +else() + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Os -w") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os -w") +endif() + +if(CMAKE_GENERATOR MATCHES "Visual Studio") + if(CMAKE_VERSION VERSION_LESS 3.13) + message(WARNING "Disabling SSL assembly support because CMake version ${CMAKE_VERSION} is too old (less than 3.13)") + set(OPENSSL_NO_ASM ON) + else() + include(CheckLanguage) + check_language(ASM_NASM) + if(NOT CMAKE_ASM_NASM_COMPILER) + message(WARNING "Disabling SSL assembly support because NASM could not be found") + set(OPENSSL_NO_ASM ON) + endif() + endif() +endif() + +add_subdirectory(../../external/src/grpc/third_party/boringssl-with-bazel BoringSSL) diff --git a/src/stratum_server.cpp b/src/stratum_server.cpp index 5518b3c..5e515e5 100644 --- a/src/stratum_server.cpp +++ b/src/stratum_server.cpp @@ -541,7 +541,7 @@ void StratumServer::show_workers() size_t n = 0; LOGINFO(0, log::pad_right("IP:port", addr_len + 8) - << "TLS " + << "TLS " << log::pad_right("uptime", 20) << log::pad_right("difficulty", 20) << log::pad_right("hashrate", 15) @@ -566,7 +566,7 @@ void StratumServer::show_workers() #endif LOGINFO(0, log::pad_right(static_cast(c->m_addrString), addr_len + 8) - << (is_tls ? "no " : "yes ") + << (is_tls ? "no " : "yes ") << log::pad_right(log::Duration(cur_time - c->m_connectedTime), 20) << log::pad_right(diff, 20) << log::pad_right(log::Hashrate(c->m_autoDiff.lo / AUTO_DIFF_TARGET_TIME, m_autoDiff && (c->m_autoDiff != 0)), 15)