From 68198f2ef939277bcd1030ad30c49ab17c0ed040 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Wed, 4 Jan 2023 17:02:19 +0100 Subject: [PATCH 1/3] Handle boost::beast::http::basic_fields#set() signature change (v1.81) Make String convertible to boost::beast::string_view (always working), not boost::string_view (broken). --- lib/base/string.cpp | 8 ++++---- lib/base/string.hpp | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/base/string.cpp b/lib/base/string.cpp index e4e5c273c..3c440cd77 100644 --- a/lib/base/string.cpp +++ b/lib/base/string.cpp @@ -128,15 +128,15 @@ String::operator const std::string&() const } /** - * Conversion function to boost::string_view. + * Conversion function to boost::beast::string_view. * * This allows using String as the value for HTTP headers in boost::beast::http::basic_fields::set. * - * @return A boost::string_view representing this string. + * @return A boost::beast::string_view representing this string. */ -String::operator boost::string_view() const +String::operator boost::beast::string_view() const { - return boost::string_view(m_Data); + return boost::beast::string_view(m_Data); } const char *String::CStr() const diff --git a/lib/base/string.hpp b/lib/base/string.hpp index 10ddaf977..0eb08b527 100644 --- a/lib/base/string.hpp +++ b/lib/base/string.hpp @@ -5,6 +5,7 @@ #include "base/i2-base.hpp" #include "base/object.hpp" +#include #include #include #include @@ -73,7 +74,7 @@ public: bool operator<(const String& rhs) const; operator const std::string&() const; - operator boost::string_view() const; + operator boost::beast::string_view() const; const char *CStr() const; From f84ffdad6892ae65bdd31a63bfd2113b7ae9f9f5 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Wed, 4 Jan 2023 17:34:49 +0100 Subject: [PATCH 2/3] Handle boost::beast::http::basic_fields#operator[]() signature change (v1.81) Use always working std::string(x), not broken x.to_string(). (x is a return value.) --- lib/remote/httphandler.cpp | 2 +- lib/remote/httpserverconnection.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/remote/httphandler.cpp b/lib/remote/httphandler.cpp index e1bb4f401..afe510fb8 100644 --- a/lib/remote/httphandler.cpp +++ b/lib/remote/httphandler.cpp @@ -58,7 +58,7 @@ void HttpHandler::ProcessRequest( Dictionary::Ptr node = m_UrlTree; std::vector handlers; - Url::Ptr url = new Url(request.target().to_string()); + Url::Ptr url = new Url(std::string(request.target())); auto& path (url->GetPath()); for (std::vector::size_type i = 0; i <= path.size(); i++) { diff --git a/lib/remote/httpserverconnection.cpp b/lib/remote/httpserverconnection.cpp index cb07557af..c07c19a38 100644 --- a/lib/remote/httpserverconnection.cpp +++ b/lib/remote/httpserverconnection.cpp @@ -246,7 +246,7 @@ bool HandleAccessControl( if (!allowedOrigins.empty()) { auto& origin (request[http::field::origin]); - if (allowedOrigins.find(origin.to_string()) != allowedOrigins.end()) { + if (allowedOrigins.find(std::string(origin)) != allowedOrigins.end()) { response.set(http::field::access_control_allow_origin, origin); } @@ -536,7 +536,7 @@ void HttpServerConnection::ProcessMessages(boost::asio::yield_context yc) if (!authenticatedUser) { CpuBoundWork fetchingAuthenticatedUser (yc); - authenticatedUser = ApiUser::GetByAuthHeader(request[http::field::authorization].to_string()); + authenticatedUser = ApiUser::GetByAuthHeader(std::string(request[http::field::authorization])); } Log logMsg (LogInformation, "HttpServerConnection"); From 2fbb4f9575942d8f38feabcb1d4fabde4f61fad3 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Tue, 14 Feb 2023 14:36:16 +0100 Subject: [PATCH 3/3] Bump Boost to v1.81 --- doc/21-development.md | 32 ++++++++++++++++---------------- doc/win-dev.ps1 | 2 +- tools/win32/configure-dev.ps1 | 4 ++-- tools/win32/configure.ps1 | 4 ++-- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/doc/21-development.md b/doc/21-development.md index 01c86204b..e84d6e679 100644 --- a/doc/21-development.md +++ b/doc/21-development.md @@ -477,18 +477,18 @@ File Type: EXECUTABLE IMAGE Image has the following dependencies: - boost_coroutine-vc142-mt-gd-x64-1_80.dll - boost_date_time-vc142-mt-gd-x64-1_80.dll - boost_filesystem-vc142-mt-gd-x64-1_80.dll - boost_thread-vc142-mt-gd-x64-1_80.dll - boost_regex-vc142-mt-gd-x64-1_80.dll + boost_coroutine-vc142-mt-gd-x64-1_81.dll + boost_date_time-vc142-mt-gd-x64-1_81.dll + boost_filesystem-vc142-mt-gd-x64-1_81.dll + boost_thread-vc142-mt-gd-x64-1_81.dll + boost_regex-vc142-mt-gd-x64-1_81.dll libssl-1_1-x64.dll libcrypto-1_1-x64.dll WS2_32.dll dbghelp.dll SHLWAPI.dll msi.dll - boost_unit_test_framework-vc142-mt-gd-x64-1_80.dll + boost_unit_test_framework-vc142-mt-gd-x64-1_81.dll KERNEL32.dll SHELL32.dll ADVAPI32.dll @@ -1763,7 +1763,7 @@ mkdir build cd .\build\ & "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" ` - -DBoost_INCLUDE_DIR=C:\local\boost_1_80_0-Win64 ` + -DBoost_INCLUDE_DIR=C:\local\boost_1_81_0-Win64 ` -DBISON_EXECUTABLE=C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_bison.exe ` -DFLEX_EXECUTABLE=C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_flex.exe ` -DICINGA2_WITH_MYSQL=OFF -DICINGA2_WITH_PGSQL=OFF .. @@ -1936,16 +1936,16 @@ Download the [boost-binaries](https://sourceforge.net/projects/boost/files/boost - 64 for 64 bit builds ``` -https://sourceforge.net/projects/boost/files/boost-binaries/1.80.0/boost_1_80_0-msvc-14.2-64.exe/download +https://sourceforge.net/projects/boost/files/boost-binaries/1.81.0/boost_1_81_0-msvc-14.2-64.exe/download ``` -Run the installer and leave the default installation path in `C:\local\boost_1_80_0`. +Run the installer and leave the default installation path in `C:\local\boost_1_81_0`. ##### Source & Compile In order to use the boost development header and library files you need to [download](https://www.boost.org/users/download/) -Boost and then extract it to e.g. `C:\local\boost_1_80_0`. +Boost and then extract it to e.g. `C:\local\boost_1_81_0`. > **Note** > @@ -1953,12 +1953,12 @@ Boost and then extract it to e.g. `C:\local\boost_1_80_0`. > the archive contains more than 70k files. In order to integrate Boost into Visual Studio, open the `Developer Command Prompt` from the start menu, -and navigate to `C:\local\boost_1_80_0`. +and navigate to `C:\local\boost_1_81_0`. Execute `bootstrap.bat` first. ``` -cd C:\local\boost_1_80_0 +cd C:\local\boost_1_81_0 bootstrap.bat ``` @@ -2041,8 +2041,8 @@ You need to specify the previously installed component paths. Variable | Value | Description ----------------------|----------------------------------------------------------------------|------------------------------------------------------- -`BOOST_ROOT` | `C:\local\boost_1_80_0` | Root path where you've extracted and compiled Boost. -`BOOST_LIBRARYDIR` | Binary: `C:\local\boost_1_80_0\lib64-msvc-14.2`, Source: `C:\local\boost_1_80_0\stage` | Path to the static compiled Boost libraries, directory must contain `lib`. +`BOOST_ROOT` | `C:\local\boost_1_81_0` | Root path where you've extracted and compiled Boost. +`BOOST_LIBRARYDIR` | Binary: `C:\local\boost_1_81_0\lib64-msvc-14.2`, Source: `C:\local\boost_1_81_0\stage` | Path to the static compiled Boost libraries, directory must contain `lib`. `BISON_EXECUTABLE` | `C:\ProgramData\chocolatey\lib\winflexbison\tools\win_bison.exe` | Path to the Bison executable. `FLEX_EXECUTABLE` | `C:\ProgramData\chocolatey\lib\winflexbison\tools\win_flex.exe` | Path to the Flex executable. `ICINGA2_WITH_MYSQL` | OFF | Requires extra setup for MySQL if set to `ON`. Not supported for client setups. @@ -2079,8 +2079,8 @@ $env:ICINGA2_INSTALLPATH = 'C:\Program Files\Icinga2-debug' $env:ICINGA2_BUILDPATH='debug' $env:CMAKE_BUILD_TYPE='Debug' $env:OPENSSL_ROOT_DIR='C:\OpenSSL-Win64' -$env:BOOST_ROOT='C:\local\boost_1_80_0' -$env:BOOST_LIBRARYDIR='C:\local\boost_1_80_0\lib64-msvc-14.2' +$env:BOOST_ROOT='C:\local\boost_1_81_0' +$env:BOOST_LIBRARYDIR='C:\local\boost_1_81_0\lib64-msvc-14.2' ``` #### Icinga 2 in Visual Studio diff --git a/doc/win-dev.ps1 b/doc/win-dev.ps1 index 36c04fab5..2202530c0 100644 --- a/doc/win-dev.ps1 +++ b/doc/win-dev.ps1 @@ -13,7 +13,7 @@ function ThrowOnNativeFailure { $VsVersion = 2019 $MsvcVersion = '14.2' -$BoostVersion = @(1, 80, 0) +$BoostVersion = @(1, 81, 0) $OpensslVersion = '1_1_1t' switch ($Env:BITS) { diff --git a/tools/win32/configure-dev.ps1 b/tools/win32/configure-dev.ps1 index c3bb8367e..83f2f7555 100644 --- a/tools/win32/configure-dev.ps1 +++ b/tools/win32/configure-dev.ps1 @@ -31,10 +31,10 @@ if (-not (Test-Path env:OPENSSL_ROOT_DIR)) { $env:OPENSSL_ROOT_DIR = 'c:\local\OpenSSL-Win64' } if (-not (Test-Path env:BOOST_ROOT)) { - $env:BOOST_ROOT = 'c:\local\boost_1_80_0' + $env:BOOST_ROOT = 'c:\local\boost_1_81_0' } if (-not (Test-Path env:BOOST_LIBRARYDIR)) { - $env:BOOST_LIBRARYDIR = 'c:\local\boost_1_80_0\lib64-msvc-14.2' + $env:BOOST_LIBRARYDIR = 'c:\local\boost_1_81_0\lib64-msvc-14.2' } if (-not (Test-Path env:FLEX_BINARY)) { $env:FLEX_BINARY = 'C:\ProgramData\chocolatey\bin\win_flex.exe' diff --git a/tools/win32/configure.ps1 b/tools/win32/configure.ps1 index c67dd9bb7..f16336736 100644 --- a/tools/win32/configure.ps1 +++ b/tools/win32/configure.ps1 @@ -33,10 +33,10 @@ if (-not (Test-Path env:OPENSSL_ROOT_DIR)) { $env:OPENSSL_ROOT_DIR = "c:\local\OpenSSL_1_1_1t-Win${env:BITS}" } if (-not (Test-Path env:BOOST_ROOT)) { - $env:BOOST_ROOT = "c:\local\boost_1_80_0-Win${env:BITS}" + $env:BOOST_ROOT = "c:\local\boost_1_81_0-Win${env:BITS}" } if (-not (Test-Path env:BOOST_LIBRARYDIR)) { - $env:BOOST_LIBRARYDIR = "c:\local\boost_1_80_0-Win${env:BITS}\lib${env:BITS}-msvc-14.2" + $env:BOOST_LIBRARYDIR = "c:\local\boost_1_81_0-Win${env:BITS}\lib${env:BITS}-msvc-14.2" } if (-not (Test-Path env:FLEX_BINARY)) { $env:FLEX_BINARY = 'C:\ProgramData\chocolatey\bin\win_flex.exe'