mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-28 08:04:14 +02:00
Merge pull request #9970 from Icinga/2142backport
Log HTTP request processing time and ship Boost 1.84 on Windows
This commit is contained in:
commit
d6a2528af5
@ -477,18 +477,18 @@ File Type: EXECUTABLE IMAGE
|
|||||||
|
|
||||||
Image has the following dependencies:
|
Image has the following dependencies:
|
||||||
|
|
||||||
boost_coroutine-vc142-mt-gd-x64-1_83.dll
|
boost_coroutine-vc142-mt-gd-x64-1_84.dll
|
||||||
boost_date_time-vc142-mt-gd-x64-1_83.dll
|
boost_date_time-vc142-mt-gd-x64-1_84.dll
|
||||||
boost_filesystem-vc142-mt-gd-x64-1_83.dll
|
boost_filesystem-vc142-mt-gd-x64-1_84.dll
|
||||||
boost_thread-vc142-mt-gd-x64-1_83.dll
|
boost_thread-vc142-mt-gd-x64-1_84.dll
|
||||||
boost_regex-vc142-mt-gd-x64-1_83.dll
|
boost_regex-vc142-mt-gd-x64-1_84.dll
|
||||||
libssl-3_0-x64.dll
|
libssl-3_0-x64.dll
|
||||||
libcrypto-3_0-x64.dll
|
libcrypto-3_0-x64.dll
|
||||||
WS2_32.dll
|
WS2_32.dll
|
||||||
dbghelp.dll
|
dbghelp.dll
|
||||||
SHLWAPI.dll
|
SHLWAPI.dll
|
||||||
msi.dll
|
msi.dll
|
||||||
boost_unit_test_framework-vc142-mt-gd-x64-1_83.dll
|
boost_unit_test_framework-vc142-mt-gd-x64-1_84.dll
|
||||||
KERNEL32.dll
|
KERNEL32.dll
|
||||||
SHELL32.dll
|
SHELL32.dll
|
||||||
ADVAPI32.dll
|
ADVAPI32.dll
|
||||||
@ -1763,7 +1763,7 @@ mkdir build
|
|||||||
cd .\build\
|
cd .\build\
|
||||||
|
|
||||||
& "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" `
|
& "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" `
|
||||||
-DICINGA2_UNITY_BUILD=OFF -DBoost_INCLUDE_DIR=C:\local\boost_1_83_0-Win64 `
|
-DICINGA2_UNITY_BUILD=OFF -DBoost_INCLUDE_DIR=C:\local\boost_1_84_0-Win64 `
|
||||||
-DBISON_EXECUTABLE=C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_bison.exe `
|
-DBISON_EXECUTABLE=C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_bison.exe `
|
||||||
-DFLEX_EXECUTABLE=C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_flex.exe ..
|
-DFLEX_EXECUTABLE=C:\ProgramData\chocolatey\lib\winflexbison3\tools\win_flex.exe ..
|
||||||
|
|
||||||
@ -1935,16 +1935,16 @@ Download the [boost-binaries](https://sourceforge.net/projects/boost/files/boost
|
|||||||
- 64 for 64 bit builds
|
- 64 for 64 bit builds
|
||||||
|
|
||||||
```
|
```
|
||||||
https://sourceforge.net/projects/boost/files/boost-binaries/1.82.0/boost_1_83_0-msvc-14.2-64.exe/download
|
https://sourceforge.net/projects/boost/files/boost-binaries/1.82.0/boost_1_84_0-msvc-14.2-64.exe/download
|
||||||
```
|
```
|
||||||
|
|
||||||
Run the installer and leave the default installation path in `C:\local\boost_1_83_0`.
|
Run the installer and leave the default installation path in `C:\local\boost_1_84_0`.
|
||||||
|
|
||||||
|
|
||||||
##### Source & Compile
|
##### Source & Compile
|
||||||
|
|
||||||
In order to use the boost development header and library files you need to [download](https://www.boost.org/users/download/)
|
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_83_0`.
|
Boost and then extract it to e.g. `C:\local\boost_1_84_0`.
|
||||||
|
|
||||||
> **Note**
|
> **Note**
|
||||||
>
|
>
|
||||||
@ -1952,12 +1952,12 @@ Boost and then extract it to e.g. `C:\local\boost_1_83_0`.
|
|||||||
> the archive contains more than 70k files.
|
> the archive contains more than 70k files.
|
||||||
|
|
||||||
In order to integrate Boost into Visual Studio, open the `Developer Command Prompt` from the start menu,
|
In order to integrate Boost into Visual Studio, open the `Developer Command Prompt` from the start menu,
|
||||||
and navigate to `C:\local\boost_1_83_0`.
|
and navigate to `C:\local\boost_1_84_0`.
|
||||||
|
|
||||||
Execute `bootstrap.bat` first.
|
Execute `bootstrap.bat` first.
|
||||||
|
|
||||||
```
|
```
|
||||||
cd C:\local\boost_1_83_0
|
cd C:\local\boost_1_84_0
|
||||||
bootstrap.bat
|
bootstrap.bat
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -2040,8 +2040,8 @@ You need to specify the previously installed component paths.
|
|||||||
|
|
||||||
Variable | Value | Description
|
Variable | Value | Description
|
||||||
----------------------|----------------------------------------------------------------------|-------------------------------------------------------
|
----------------------|----------------------------------------------------------------------|-------------------------------------------------------
|
||||||
`BOOST_ROOT` | `C:\local\boost_1_83_0` | Root path where you've extracted and compiled Boost.
|
`BOOST_ROOT` | `C:\local\boost_1_84_0` | Root path where you've extracted and compiled Boost.
|
||||||
`BOOST_LIBRARYDIR` | Binary: `C:\local\boost_1_83_0\lib64-msvc-14.2`, Source: `C:\local\boost_1_83_0\stage` | Path to the static compiled Boost libraries, directory must contain `lib`.
|
`BOOST_LIBRARYDIR` | Binary: `C:\local\boost_1_84_0\lib64-msvc-14.2`, Source: `C:\local\boost_1_84_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.
|
`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.
|
`FLEX_EXECUTABLE` | `C:\ProgramData\chocolatey\lib\winflexbison\tools\win_flex.exe` | Path to the Flex executable.
|
||||||
`ICINGA2_UNITY_BUILD` | OFF | Disable unity builds for development environments.
|
`ICINGA2_UNITY_BUILD` | OFF | Disable unity builds for development environments.
|
||||||
@ -2076,8 +2076,8 @@ $env:ICINGA2_INSTALLPATH = 'C:\Program Files\Icinga2-debug'
|
|||||||
$env:ICINGA2_BUILDPATH='debug'
|
$env:ICINGA2_BUILDPATH='debug'
|
||||||
$env:CMAKE_BUILD_TYPE='Debug'
|
$env:CMAKE_BUILD_TYPE='Debug'
|
||||||
$env:OPENSSL_ROOT_DIR='C:\OpenSSL-Win64'
|
$env:OPENSSL_ROOT_DIR='C:\OpenSSL-Win64'
|
||||||
$env:BOOST_ROOT='C:\local\boost_1_83_0'
|
$env:BOOST_ROOT='C:\local\boost_1_84_0'
|
||||||
$env:BOOST_LIBRARYDIR='C:\local\boost_1_83_0\lib64-msvc-14.2'
|
$env:BOOST_LIBRARYDIR='C:\local\boost_1_84_0\lib64-msvc-14.2'
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Icinga 2 in Visual Studio
|
#### Icinga 2 in Visual Studio
|
||||||
|
@ -13,7 +13,7 @@ function ThrowOnNativeFailure {
|
|||||||
|
|
||||||
$VsVersion = 2019
|
$VsVersion = 2019
|
||||||
$MsvcVersion = '14.2'
|
$MsvcVersion = '14.2'
|
||||||
$BoostVersion = @(1, 83, 0)
|
$BoostVersion = @(1, 84, 0)
|
||||||
$OpensslVersion = '3_0_12'
|
$OpensslVersion = '3_0_12'
|
||||||
|
|
||||||
switch ($Env:BITS) {
|
switch ($Env:BITS) {
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include "base/timer.hpp"
|
#include "base/timer.hpp"
|
||||||
#include "base/tlsstream.hpp"
|
#include "base/tlsstream.hpp"
|
||||||
#include "base/utility.hpp"
|
#include "base/utility.hpp"
|
||||||
|
#include <chrono>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
@ -493,6 +494,7 @@ void HttpServerConnection::ProcessMessages(boost::asio::yield_context yc)
|
|||||||
{
|
{
|
||||||
namespace beast = boost::beast;
|
namespace beast = boost::beast;
|
||||||
namespace http = beast::http;
|
namespace http = beast::http;
|
||||||
|
namespace ch = std::chrono;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
/* Do not reset the buffer in the state machine.
|
/* Do not reset the buffer in the state machine.
|
||||||
@ -518,6 +520,7 @@ void HttpServerConnection::ProcessMessages(boost::asio::yield_context yc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_Seen = Utility::GetTime();
|
m_Seen = Utility::GetTime();
|
||||||
|
auto start (ch::steady_clock::now());
|
||||||
|
|
||||||
auto& request (parser.get());
|
auto& request (parser.get());
|
||||||
|
|
||||||
@ -541,13 +544,14 @@ void HttpServerConnection::ProcessMessages(boost::asio::yield_context yc)
|
|||||||
|
|
||||||
Log logMsg (LogInformation, "HttpServerConnection");
|
Log logMsg (LogInformation, "HttpServerConnection");
|
||||||
|
|
||||||
logMsg << "Request: " << request.method_string() << ' ' << request.target()
|
logMsg << "Request " << request.method_string() << ' ' << request.target()
|
||||||
<< " (from " << m_PeerAddress
|
<< " (from " << m_PeerAddress
|
||||||
<< "), user: " << (authenticatedUser ? authenticatedUser->GetName() : "<unauthenticated>")
|
<< "), user: " << (authenticatedUser ? authenticatedUser->GetName() : "<unauthenticated>")
|
||||||
<< ", agent: " << request[http::field::user_agent]; //operator[] - Returns the value for a field, or "" if it does not exist.
|
<< ", agent: " << request[http::field::user_agent]; //operator[] - Returns the value for a field, or "" if it does not exist.
|
||||||
|
|
||||||
Defer addRespCode ([&response, &logMsg]() {
|
Defer addRespCode ([&response, start, &logMsg]() {
|
||||||
logMsg << ", status: " << response.result() << ").";
|
logMsg << ", status: " << response.result() << ") took "
|
||||||
|
<< ch::duration_cast<ch::milliseconds>(ch::steady_clock::now() - start).count() << "ms.";
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!HandleAccessControl(*m_Stream, request, response, yc)) {
|
if (!HandleAccessControl(*m_Stream, request, response, yc)) {
|
||||||
|
@ -31,10 +31,10 @@ if (-not (Test-Path env:OPENSSL_ROOT_DIR)) {
|
|||||||
$env:OPENSSL_ROOT_DIR = 'c:\local\OpenSSL-Win64'
|
$env:OPENSSL_ROOT_DIR = 'c:\local\OpenSSL-Win64'
|
||||||
}
|
}
|
||||||
if (-not (Test-Path env:BOOST_ROOT)) {
|
if (-not (Test-Path env:BOOST_ROOT)) {
|
||||||
$env:BOOST_ROOT = 'c:\local\boost_1_83_0'
|
$env:BOOST_ROOT = 'c:\local\boost_1_84_0'
|
||||||
}
|
}
|
||||||
if (-not (Test-Path env:BOOST_LIBRARYDIR)) {
|
if (-not (Test-Path env:BOOST_LIBRARYDIR)) {
|
||||||
$env:BOOST_LIBRARYDIR = 'c:\local\boost_1_83_0\lib64-msvc-14.2'
|
$env:BOOST_LIBRARYDIR = 'c:\local\boost_1_84_0\lib64-msvc-14.2'
|
||||||
}
|
}
|
||||||
if (-not (Test-Path env:FLEX_BINARY)) {
|
if (-not (Test-Path env:FLEX_BINARY)) {
|
||||||
$env:FLEX_BINARY = 'C:\ProgramData\chocolatey\bin\win_flex.exe'
|
$env:FLEX_BINARY = 'C:\ProgramData\chocolatey\bin\win_flex.exe'
|
||||||
|
@ -33,10 +33,10 @@ if (-not (Test-Path env:OPENSSL_ROOT_DIR)) {
|
|||||||
$env:OPENSSL_ROOT_DIR = "c:\local\OpenSSL_3_0_12-Win${env:BITS}"
|
$env:OPENSSL_ROOT_DIR = "c:\local\OpenSSL_3_0_12-Win${env:BITS}"
|
||||||
}
|
}
|
||||||
if (-not (Test-Path env:BOOST_ROOT)) {
|
if (-not (Test-Path env:BOOST_ROOT)) {
|
||||||
$env:BOOST_ROOT = "c:\local\boost_1_83_0-Win${env:BITS}"
|
$env:BOOST_ROOT = "c:\local\boost_1_84_0-Win${env:BITS}"
|
||||||
}
|
}
|
||||||
if (-not (Test-Path env:BOOST_LIBRARYDIR)) {
|
if (-not (Test-Path env:BOOST_LIBRARYDIR)) {
|
||||||
$env:BOOST_LIBRARYDIR = "c:\local\boost_1_83_0-Win${env:BITS}\lib${env:BITS}-msvc-14.2"
|
$env:BOOST_LIBRARYDIR = "c:\local\boost_1_84_0-Win${env:BITS}\lib${env:BITS}-msvc-14.2"
|
||||||
}
|
}
|
||||||
if (-not (Test-Path env:FLEX_BINARY)) {
|
if (-not (Test-Path env:FLEX_BINARY)) {
|
||||||
$env:FLEX_BINARY = 'C:\ProgramData\chocolatey\bin\win_flex.exe'
|
$env:FLEX_BINARY = 'C:\ProgramData\chocolatey\bin\win_flex.exe'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user