Julian Brost
cc8d3fbedd
Merge pull request #8937 from Icinga/bugfix/timeout-always-unknown
...
Override exit code on process timeout
2021-07-28 11:56:42 +02:00
Alexander A. Klimov
504fdda76c
Introduce DEFAULT_CONNECT_TIMEOUT
2021-07-27 21:57:02 +02:00
Noah Hilverling
07cb6cd1cb
Merge pull request #8930 from Icinga/bugfix/wq-balance
...
WorkQueue#ParallelFor(): optionally don't pre-glue items together to chunks of different size
2021-07-27 19:05:26 +02:00
Julian Brost
a55939e462
Override exit code on process timeout
...
As Icinga first sends a SIGTERM to a check plugin on timeout to allow it to
terminate gracefully, this is not really part of the plugin API specification
and we cannot assume that plugins will handle this correctly and still exit
with an exit code that maps to UNKNOWN. Therefore, once Icinga decides to kill
a process, force its exit code to 128 to be sure the state will be UNKNOWN
after a timeout.
2021-07-27 17:57:19 +02:00
Alexander A. Klimov
8731d84299
WorkQueue#ParallelFor(): optionally don't pre-glue items together to chunks of different size
...
... to equally distribute the load across the workers.
2021-07-26 11:40:43 +02:00
Alexander A. Klimov
37e53eaa68
Icinga DB: support TLS
2021-07-22 14:34:07 +02:00
Alexander A. Klimov
7f7637c9b8
Introduce DEFAULT_TLS_CIPHERS and DEFAULT_TLS_PROTOCOLMIN
2021-07-22 11:12:33 +02:00
Alexander A. Klimov
80a1128ec7
Introduce SetupSslContext()
2021-07-22 11:12:33 +02:00
Alexander A. Klimov
fbcaf82e3e
InitSslContext(): fall back to default root CAs
2021-07-22 11:12:33 +02:00
Alexander A. Klimov
2728603c29
Rename SetupSslContext() to InitSslContext()
2021-07-22 11:12:33 +02:00
Alexander Aleksandrovič Klimov
692f5aa615
Merge pull request #8718 from Icinga/feature/tls-1.3
...
Support TLS 1.3
2021-06-29 17:52:55 +02:00
Alexander Aleksandrovič Klimov
6048d0e800
Merge pull request #8373 from Icinga/feature/improve-crashlog
...
Improve crashlog
2021-06-29 17:52:25 +02:00
Julian Brost
0e7a05ad7a
Support TLS 1.3
2021-06-29 11:08:47 +02:00
Alexander Aleksandrovič Klimov
58e329bc03
Merge pull request #7874 from Icinga/feature/sd_notify-7329
...
sd_notify() systemd about what we're doing right now
2021-06-28 18:20:15 +02:00
Julian Brost
d1839471f4
Merge pull request #8846 from Icinga/bugfix/logger-default-severity
...
Set a default severity for loggers
2021-06-28 17:15:26 +02:00
Noah Hilverling
8af66ce44c
Merge pull request #8710 from Icinga/feature/windows-event-log
...
Add support for Windows Event Log and write early log messages to it
2021-06-24 09:19:50 +02:00
Alexander Aleksandrovič Klimov
9f24107a08
Merge pull request #8748 from Icinga/bugfix/icingadb-cv-function
...
JsonEncode(): encode non-[]/{} objects as strings, not null
2021-06-23 18:01:21 +02:00
Alexander A. Klimov
0fd474ee8d
Hide $NOTIFY_SOCKET from plugins
...
refs #7329
2021-06-23 17:42:25 +02:00
Julian Brost
963ad9dd1c
Set a default severity for loggers
...
So far, the documentation has claimed that loggers have a default severity
(information for FileLogger and warning for SyslogLogger). However, this was
not the case and not setting the severity resulted in a configuration error.
This commit changes the default value to be information for all loggers.
2021-06-23 16:57:44 +02:00
Julian Brost
05ca30a6a0
Write early log messages to the Windows Event Log
...
When Icinga 2 is started as a service, the early log messages generated
until the FileLogger object is activated are lost and make it really
hard to debug issues that (only) occur when Icinga 2 reloads.
With this commit, these early log messages are written to the Windows
Event Log.
2021-06-21 15:15:54 +02:00
Julian Brost
6de9f58810
Add WindowsEventLogLogger
2021-06-21 15:15:54 +02:00
Julian Brost
97d6876803
Utility: add a function to truncate strings while avoiding collisions
2021-06-17 16:21:01 +02:00
Julian Brost
005fac0a23
Merge pull request #8742 from Icinga/bugfix/double-to-string
...
Convert::ToString(double): handle integral values too large for long long correctly
2021-06-15 12:28:15 +02:00
Julian Brost
06999faf25
Allow using E in perfdata both as exponent and unit prefix
2021-06-08 12:37:13 +02:00
Julian Brost
62cbe72cdb
Merge pull request #8492 from Icinga/bugfix/perfdata-scientific-notation
...
Fix perfdata parser not recognize scientific notation
2021-06-07 15:29:52 +02:00
Alexander A. Klimov
fa2666fecf
JsonEncode(): encode non-[]/{} objects as strings, not null
...
... to represent function custom vars as such in Icinga DB.
2021-04-30 15:49:52 +02:00
Julian Brost
2d6d87d10f
Convert::ToString(double): handle integral values too large for long long correctly
...
Even if a double represents an integer value, it might not be safe to cast it
to long long as it may overflow the type. Instead just use print the double
value with 0 decimals using std::setprecision.
Before:
<1> => 18446744073709551616.to_string()
"-9223372036854775808"
After:
<1> => 18446744073709551616.to_string()
"18446744073709551616"
2021-04-27 17:31:50 +02:00
Alexander Aleksandrovič Klimov
0ee93754ee
Merge pull request #8691 from Icinga/bugfix/retry-rename-on-windows
...
Retry file rename operations on Windows for some errors
2021-03-26 17:16:25 +01:00
Alexander Aleksandrovič Klimov
65a77d4955
Merge pull request #8702 from Icinga/bugfix/missing-iostream-include
...
Add missing #include <iostream>
2021-03-26 17:16:01 +01:00
Julian Brost
8813b74c9f
Merge pull request #8693 from Icinga/bugfix/stringbuilder-malloc
...
PackObject(): avoid one malloc()
2021-03-25 18:02:12 +01:00
Julian Brost
b34818d3fc
Add missing #include <iostream>
...
Fixes the following build error:
/home/jbrost/dev/icinga2/lib/base/stdiostream.cpp: In member function ‘virtual size_t icinga::StdioStream::Read(void*, size_t, bool)’:
/home/jbrost/dev/icinga2/lib/base/stdiostream.cpp:28:15: error: invalid use of incomplete type ‘std::iostream’ {aka ‘class std::basic_iostream<char>’}
28 | m_InnerStream->read(static_cast<char *>(buffer), size);
| ^~
2021-03-25 11:30:02 +01:00
Alexander A. Klimov
9531de3835
JsonEncode(): serialize integers w/o trailing .0
...
... so Icinga DB can parse them as integers.
2021-03-23 17:52:37 +01:00
Alexander A. Klimov
070b4f9d06
Drop StringBuilder
2021-03-23 13:13:47 +01:00
Alexander A. Klimov
f89f35c798
PackObject(): avoid one malloc()
...
... for performance reasons.
2021-03-23 13:13:47 +01:00
Julian Brost
05c8e7f36f
Retry file rename operations on Windows for some errors
2021-03-23 09:54:01 +01:00
Julian Brost
2a2229a49b
Don't use sprintf for SHA1 to hex conversion
2021-03-19 10:31:01 +01:00
Alexander Aleksandrovič Klimov
ef8619f76b
Merge pull request #8601 from Icinga/feature/replace-std-boost-bind-with-lambdas-7006
...
Feature: Replace std/boost::bind() with lambdas
2021-03-18 17:56:13 +01:00
Yonas Habteab
43ba2da39c
Replace std/boost::bind() function with lambda expression
2021-03-10 16:29:40 +01:00
Julian Brost
1742e31225
Add comments to stack trace formatter and test case
2021-03-01 14:07:11 +01:00
Julian Brost
b931194f59
Use backtrace_symbols() when printing stack traces on FreeBSD
...
Unfortunately, the symbol resolution of boost::stacktrace is broken on
FreeBSD, therefore fall back to using backtrace_symbols() to print the
stack trace saved by Boost.
Additionally, -D_GNU_SOURCE is required on FreeBSD for the
_Unwind_Backtrace function used by boost::stacktrace.
2021-03-01 14:07:09 +01:00
Julian Brost
7d3885d05c
Crash handlers: use more compact string representation
2021-03-01 14:06:47 +01:00
Julian Brost
710cd7287f
Begin crash log for SIGABRT with error message and timestamp
...
This makes the format more similar to what the uncaught C++ and SEH
exception handlers write. Previously there was no indication in the
crash log that a SIGABRT happened.
2021-03-01 14:06:47 +01:00
Julian Brost
1ad233da86
Add some comments to __cxa_throw
...
Maybe this will save the next person who has to look at this code some
time. Please don't blame me for the implementation, I'm just trying to
reconstruct what it does.
2021-03-01 14:06:47 +01:00
Julian Brost
e60dd51284
Restructure stack and context trace selection in DiagnosticInformation and document behavior
...
The logic for selecting the traces to print stays the same, but there
are fewer nested ifs now. This changes the format of the returned string
a bit by adding a heading for both traces.
2021-03-01 14:06:47 +01:00
Julian Brost
7f2868ab36
Add documentation for cast_exception function
2021-03-01 14:06:47 +01:00
Julian Brost
15a16b23d9
Pass fallback stacktrace to DiagnosticInformation in terminate handler
...
By default, DiagnosticInformation uses the stack trace saved when the
exception was thrown, but this mechanism is not in use on Windows.
Gathering a stacktrace in the terminate handler serves as a fallback.
2021-03-01 14:06:47 +01:00
Julian Brost
5cb7c7cc09
Replace icinga::StackTrace with boost::stacktrace::stacktrace
...
Provides roughly the same functionality but works better on certain
platforms (especially Windows) and is less code to maintain.
2021-03-01 14:06:44 +01:00
Julian Brost
e11b4b7b55
Print details in uncaught SEH exception handler
2021-03-01 14:05:27 +01:00
Julian Brost
68e4b807d1
Move error message and time to the beginning of the SEH crash log
...
This is more similar to the normal exception crashlog which also states
the problem and time at the beginning of the file.
2021-03-01 14:05:27 +01:00
Julian Brost
0db59bad83
Use boost::stacktrace instead of custom implementation in Windows SEH filter
2021-03-01 14:05:27 +01:00
Julian Brost
f8b7a1511b
Run termination handler for uncaught C++ exceptions on Windows
...
On Windows, the termination handler is executed for uncaught C++
exceptions unless a SEH unhandled exception filter is also set. In this
case, this filter has to explicitly chain the default filter to keep
this behavior.
2021-03-01 14:05:27 +01:00
Alexander Aleksandrovič Klimov
aa0baf6f69
Merge pull request #8099 from Icinga/feature/std-mutex
...
Use std::mutex, not boost::mutex
2021-02-04 10:19:04 +01:00
Alexander A. Klimov
9154aa17eb
Fix missing include
2021-02-03 09:54:57 +01:00
Alexander A. Klimov
c3388e9af6
Use std::mutex, not boost::mutex
2021-02-03 09:54:57 +01:00
Alexander Aleksandrovič Klimov
dbdfe189c0
Merge pull request #7092 from Icinga/bugfix/command-escape-windows-4849
...
Fix Windows command escape for \"
2021-02-01 11:20:44 +01:00
Alexander Aleksandrovič Klimov
91ffa89dad
Merge pull request #7918 from Icinga/feature/check-timeouts-sigterm-6162
...
On check_timeout first send SIGTERM
2021-01-21 16:11:07 +01:00
Alexander Aleksandrovič Klimov
4063e39d5f
Merge pull request #8515 from Icinga/feature/update-ssl-context-after-accepting-new-connection-8501
...
API: Update the ssl context after each accepting incoming connection
2021-01-15 11:21:36 +01:00
Yonas Habteab
057254695d
Utility: Introduce new helper function Utility::GetFileCreationTime()
2021-01-14 18:39:14 +01:00
Alexander Aleksandrovič Klimov
70b438a2bf
Merge pull request #8104 from Icinga/bugfix/remove-downtime-returns-wrong-status-7408
...
API: Display a correct status when removing a downtime
2021-01-14 17:49:00 +01:00
Alexander A. Klimov
e1bc4d474f
On check_timeout first send SIGTERM
...
... to allow check plugins to terminate gracefully.
refs #6162
2021-01-14 12:00:11 +01:00
Julian Brost
f12666c166
Merge pull request #8157 from Icinga/bugfix/temporary-files-5124
...
Clean up temp files
2021-01-13 15:45:29 +01:00
Alexander A. Klimov
450b2117d2
Add ".tmp" to state and modified attributes temp files
...
refs #5124
2021-01-12 17:35:29 +01:00
Alexander A. Klimov
18c2dae941
Clean up temp files
...
refs #5124
2021-01-12 17:35:29 +01:00
Alexander A. Klimov
26c944125b
Close FDs based on /proc/self/fd
...
... not to waste time with close(2)ing RLIMIT_NOFILE-3 non-existing FDs.
Newer kernel = higher RLIMIT_NOFILE = more time wasted
refs #8437
2021-01-12 17:32:28 +01:00
Benedikt Heine
8a455e8150
Fix typo seemless -> seamless
2020-12-25 23:27:08 +01:00
Julian Brost
00d8703aad
Merge pull request #7847 from Icinga/feature/log-trim-trailing-newlines-7828
...
Log: trim trailing newlines
2020-12-23 14:20:43 +01:00
Julian Brost
eab07a7318
Provide a conversion function from icinga::String to boost::string_view
...
Boost.Beast changed the signature of
boost::beast::http::basic_fields::set in version 1.74 so that no longer
allows passing an icinga::String instance as value. This adds a
conversion function so that it works again.
2020-12-22 16:27:38 +01:00
Noah Hilverling
f7e368564f
Merge pull request from GHSA-pcmr-2p2f-r7j6
...
Verify certificates against CRL before renewing them (2.13)
2020-12-15 12:30:19 +01:00
Alexander Aleksandrovič Klimov
6b04ef6e5d
Merge pull request #7871 from Icinga/feature/more-uoms-for-perfdata-7225
...
PerfdataValue: add UoMs
2020-12-14 18:42:49 +01:00
Alexander Aleksandrovič Klimov
366a97bf19
Merge pull request #8541 from Icinga/bugfix/openssl-error-buffer
...
Use proper buffer size for OpenSSL error messages
2020-12-09 16:08:19 +01:00
Julian Brost
e86bd24348
Verify certificates against CRL before renewing them
...
When a CRL is specified in the ApiListener configuration, Icinga 2 only
used it when connections were established so far, but not when a
certificate is requested. This allows a node to automatically renew a
revoked certificate if it meets the other conditions for auto-renewal
(issued before 2017 or expires in less than 30 days).
2020-12-09 12:10:59 +01:00
Julian Brost
bbfd1ecfc8
Use ERR_error_string_n() instead of ERR_error_string()
...
Explicitly pass the actual length of the buffer to avoid overflows.
2020-12-08 13:08:18 +01:00
Julian Brost
c0fc9a86c5
Increase size of buffer for OpenSSL error messages
...
According to man 3 ERR_error_string, "buf must be at least 256 bytes
long", therefore increase the buffer size to 256 everywhere.
2020-12-08 13:08:18 +01:00
Julian Brost
61d7ec4bf7
Remove std::string to_string(const errinfo_openssl_error& e)
...
The function was never used and it's implementation contains a bug where
a buffer of too small size is used as a paramter to ERR_error_string.
According to the `man 3 ERR_error_info`, the buffer has to be at least
256 bytes in size.
Also the function seems of limited use as it allows to output the tag
object used with additional error information for exceptions in Boost.
However, you boost::get_error_info<>() just returns the value type but
not the full tag object from the exception.
2020-12-08 13:05:38 +01:00
Yonas Habteab
dd02e3b6d8
API: Display a correct status code when removing a scheduled downtime
2020-12-07 13:19:41 +01:00
Alexander A. Klimov
b8bb8cb946
Configuration.ApiBindHost: default to ::
...
refs #8183
2020-12-04 16:52:58 +01:00
Alexander Aleksandrovič Klimov
bee4ac7f7c
Merge pull request #8040 from Icinga/feature/v1-actions-execute-command-8034
...
Add API endpoint: /v1/actions/execute-command
2020-12-02 10:53:24 +01:00
Michael Insel
b9c6abc38c
Fix perfdata parser not recognize scientific notation
...
The scientific notation is basically allowed in our performance data
parser. In an edge case where scientific notation is delivered with
an upercas E letter our parser does not recognize it and drops it as
false performance data.
The wrong interpretation as false performance data affects all parts of
the performance data, the value itself, the warning value, the critical
value, the minimum value and the maximum value.
2020-11-26 18:56:41 +01:00
Julian Brost
3f15963651
Remove SpinLock
...
No longer needed as its only user now uses std::mutex.
2020-11-17 09:40:34 +01:00
Julian Brost
4c8c4c75ec
Add Process::WaitForResult to allow waiting for the process to finish
2020-11-16 17:10:26 +01:00
Alexander Aleksandrovič Klimov
5f3b5934fa
Merge pull request #8195 from Icinga/feature/terminate-pretty-json-output-w-n-8194
...
JsonEncode(): suffix pretty JSON w/ \n
2020-11-13 17:08:46 +01:00
Alexander Aleksandrovič Klimov
9c232e942b
Merge pull request #8085 from Icinga/bugfix/not-set-lcnumeric-twice-7563
...
Fix LC_NUMERIC set twice and use a wrong value
2020-10-29 16:47:43 +01:00
Alexander Aleksandrovič Klimov
b5b1ee715b
Merge pull request #8184 from sbraz/boost
...
Fix ‘fs::copy_option’ has not been declared with boost 1.74.0
2020-10-29 16:19:07 +01:00
Alexander A. Klimov
bb851b0558
Merge branch 'master' into feature/v1-actions-execute-command-8034
2020-10-28 18:37:08 +01:00
Julian Brost
c30d8ff373
Remove Utility::GetEnv from header
...
It is never used and not even implemented anywhere, probably a leftover.
2020-10-20 12:19:15 +02:00
Alexander Aleksandrovič Klimov
a32c1bf910
Merge pull request #7864 from Icinga/bugfix/icinga2-doesn-t-close-connections-7203
...
Add timeout for boost::asio::ssl::stream#async_shutdown()
2020-10-19 15:25:12 +02:00
Alexander Aleksandrovič Klimov
72c67fc065
Merge pull request #8370 from Icinga/bugfix/reload-hang-8173
...
Application#RunEventLoop(): don't wait for the thread pool to stop on shutdown
2020-10-14 18:11:23 +02:00
Alexander A. Klimov
4af450141b
Introduce SpinLock
2020-10-14 10:47:08 +02:00
Henrik Triem
3c556350c8
WorkQueue: Allow choosing stats log level
2020-09-22 13:44:02 +02:00
Alexander A. Klimov
d69c6879fa
Application#RunEventLoop(): don't wait for the thread pool to stop on shutdown
...
refs #8173
2020-09-03 14:04:42 +02:00
Alexander A. Klimov
3adba5c542
JsonEncode(): suffix pretty JSON w/ \n
...
refs #8194
2020-09-02 16:11:43 +02:00
Louis Sautier
c30bae2994
Fix ‘fs::copy_option’ has not been declared with boost 1.74.0
...
It was deprecated in
f199152b7d
2020-08-20 18:35:51 +02:00
Noah Hilverling
97fc70ccb2
Merge pull request #7836 from Icinga/bugfix/jsonrpcconnection-m_seen
...
Consider a JsonRpcConnection being seen on a single byte of TLS payload, not only a whole message
2020-07-29 15:02:48 +02:00
Alexander A. Klimov
bbe0f2d8c4
mkclass: make .ti class members atomic if possible
...
... not to have to lock the objects while setting attributes.
2020-07-07 18:24:06 +02:00
Yonas Habteab
24c6210ef2
Fix don't set LC_NUMERIC twice
2020-07-06 13:12:56 +02:00
Alexander A. Klimov
647f1547a9
Generalize I/O timeout emulation
2020-06-17 10:31:40 +02:00
Noah Hilverling
df43cf573c
Merge pull request #8053 from Icinga/bugfix/segfault-map-reduce-filter-null-8047
...
Ensure the custom function is not null in Array#{sort,map,reduce,filter,any,all}()
2020-06-16 15:25:11 +02:00
Alexander A. Klimov
9c85401914
Ensure the custom function is not null in Array#{sort,map,reduce,filter,any,all}()
...
refs #8047
2020-06-09 12:35:04 +02:00
Alexander A. Klimov
f21b60e390
StreamLogger#Flush(): lock self
...
... just to be sure.
2020-05-15 15:33:37 +02:00
Alexander A. Klimov
720a88c29a
PerfdataValue: add UoMs
...
* {,{K,M,G,T,P,E,Z,Y}{,i}}B
=> bytes
* {,{k,m,g,t,p,e,z,y}{,i}}b
=> bits
* packets
* {n,u,m,}s m h d
=> seconds
* {n,u,m,,k,M,G,T,P,E,Z,Y}{{A,O,V,W},{A,W}{s,m,h}}
=> amperes, ohms, volts, watts, ampere-seconds, watt-hours
* lm dBm
=> lumens decibel-milliwatts
* {n,u,m,,k}g t
=> grams
* C F K
=> degrees-celsius, degrees-fahrenheit, degrees-kelvin
* {m,,h}l
=> liters
refs #7225
2020-04-03 12:47:36 +02:00
Alexander A. Klimov
8050bd9e76
PerfdataValue#Parse(): don't complain on unknown UoMs
...
refs #7225
2020-03-25 13:05:22 +01:00
Noah Hilverling
4c9e4959f3
Merge pull request #7823 from Icinga/bugfix/unify-application-start-times
...
Fix timing point for Application::GetStartTime() (related to command endpoint grace period)
2020-03-09 09:45:57 +01:00
Noah Hilverling
6e3c928205
Merge pull request #7837 from Icinga/bugfix/coroutine-exception
...
IoEngine#SpawnCoroutine(): always terminate coroutines cleanly
2020-03-03 11:19:18 +01:00
Michael Friedrich
06d0c3ea4e
Merge pull request #7843 from Icinga/feature/cli-pki-verify
...
CLI: Add `pki verify` command for better TLS certificate troubleshooting
2020-02-25 09:07:24 +01:00
Michael Friedrich
fdb13d1b7d
TlsUtility: Replace deprecated OpenSSL function with ASN1_STRING_get0_data()
2020-02-21 13:02:58 +01:00
Alexander A. Klimov
63a8c1b7ef
Log: trim trailing newlines
...
refs #7828
2020-02-19 11:27:58 +01:00
Alexander A. Klimov
0f84ce0470
Consider a JsonRpcConnection being seen on a single byte of TLS payload, not only a whole message
2020-02-19 11:11:53 +01:00
Alexander A. Klimov
b65aed1dd3
IoEngine#SpawnCoroutine(): always terminate coroutines cleanly
2020-02-19 10:51:26 +01:00
Alexander A. Klimov
6414ce3742
Always use Configuration#Concurrency, not std: 🧵 :hardware_concurrency()
...
refs #7842
2020-02-18 11:39:17 +01:00
Michael Friedrich
548eb933c9
TlsUtility: Add getters for version, signature algorithm, SANs
2020-02-17 17:42:20 +01:00
Henrik Triem
099cc5d8df
Merge pull request #7833 from Icinga/feature/version-build-info-openssl
...
CLI: Add OpenSSL version to 'Build' section in --version
2020-02-17 17:07:51 +01:00
Michael Friedrich
71c7eebe4e
CLI: Add OpenSSL version to 'Build' section in --version
...
This helps to see against which OpenSSL version Icinga was built.
Inspired by #5572
2020-02-14 08:55:39 +01:00
Michael Friedrich
a7436394cd
TlsUtility: Add IsCa() function to verify given certificate being a CA certificate
2020-02-13 16:03:43 +01:00
Michael Friedrich
d53eb34520
Unify Application::GetStartTime() and drop GetMainTime()
...
This essentially moves the start time into the scope when main
starts to "do something", after the reload and configuration handling
is done.
2020-02-11 17:26:15 +01:00
Michael Friedrich
ae8a0b6a64
Introduce Application::GetUptime()
2020-02-11 16:47:50 +01:00
Michael Friedrich
04edda531c
Merge pull request #7788 from Icinga/bugfix/windows-timeout-unknown-state
...
Terminate windows check processes with UNKNOWN state on timeout
2020-02-10 15:34:28 +01:00
Alexander A. Klimov
0ed0f73d9d
IoEngine#SpawnCoroutine(): remove redundand overload
2020-02-05 15:31:57 +01:00
Alexander A. Klimov
d98493c90f
IoEngine#SpawnCoroutine(): don't copy parameter
2020-02-05 15:30:03 +01:00
Michael Insel
d7dfa6f1df
Terminate windows check processes with UNKNOWN state on timeout
...
On Windows this terminates checks that reached the timeout with the UNKNOWN
state instead the WARNING state.
Co-authored-by: araujorm <araujorm@users.noreply.github.com>
2020-01-27 21:43:01 +01:00
Michael Friedrich
f62f2eb25e
Boost Coroutines: Increase the default stack size from 64 to 256KB
...
refs #7532
2019-12-13 17:20:06 +01:00
Michael Friedrich
1cda421bad
DSL: Add get_template{,s}
...
Signed-off-by: Michael Friedrich <michael.friedrich@icinga.com>
2019-11-08 11:13:26 +01:00
Alexander A. Klimov
768044a754
Replace std::shared_ptr<NamespaceValue> with NamespaceValue::Ptr
...
refs #7361
2019-10-21 17:10:51 +02:00
Alexander A. Klimov
4438ccbf9e
Introduce SharedObject
...
refs #7361
2019-10-21 17:10:51 +02:00
Alexander A. Klimov
ba1ce9c853
Replace std::shared_ptr<boost::asio::ssl::context> with Shared<boost::asio::ssl::context>::Ptr
2019-10-21 16:12:46 +02:00
Alexander A. Klimov
26ce2cfb73
Replace std::shared_ptr<AsioTcpStream> with Shared<AsioTcpStream>::Ptr
2019-10-21 16:12:46 +02:00
Alexander A. Klimov
a1683568a1
Replace std::shared_ptr<AsioTlsStream> with Shared<AsioTlsStream>::Ptr
2019-10-21 16:12:35 +02:00
Alexander A. Klimov
b046ffe152
Introduce Shared<T>
2019-10-21 11:07:42 +02:00
Michael Friedrich
2c0e0da2d9
Introduce IoEngine::SpawnCoroutine wrapping asio::spawn and Boost exceptions
...
This is required to
- catch all exceptions and wrap them into Boost exceptions. They
are the only ones allowed with Boost.Coroutine.
- set a dedicated coroutine stack size for Windows.
refs #7431
2019-09-09 16:40:35 +02:00
Michael Friedrich
5fa7331cc9
Quality: Replace deprecated Boost IO service code
...
https://github.com/boostorg/asio/issues/110
https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/example/cpp03/services/logger_service.hpp
2019-09-09 15:27:57 +02:00
Michael Friedrich
1f50a705f9
Adjust code comment for Logger->Flush() on Windows
2019-09-06 09:24:34 +02:00
Michael Friedrich
c2e1d023e2
Merge pull request #7421 from Icinga/feature/threadpool-metric
...
Expose metric current_pending_callbacks
2019-08-15 10:51:31 +02:00
Alexander A. Klimov
a58a5feee3
Introduce ThreadPool#GetPending()
2019-08-14 17:12:59 +02:00
Michael Friedrich
43ea6fb636
Merge pull request #7419 from Icinga/bugfix/downtime-loop-activate-origin
...
Fix object create/delete config object cluster loop (missing message origin)
2019-08-14 16:29:08 +02:00
Michael Friedrich
96f62d2d34
Add Utility::ParseVersion() and unit tests
...
This now uses a regex to extract the short version
similar to how Icinga Web 2 does it.
Additional unit tests prove the rule.
2019-08-14 11:22:55 +02:00
Michael Friedrich
c30edd0a34
Fix message origin for runtime created config object (create/delete events)
2019-08-13 15:05:47 +02:00
Michael Friedrich
0fd2fc0a4f
Only include SSL_CTX_set_ecdh_auto for OpenSSL < 1.1.0
2019-07-23 17:39:02 +02:00
Michael Friedrich
844e821cd1
Merge pull request #7320 from Icinga/feature/foreground-5230
...
Rework reload handling on *nix
2019-07-18 18:24:22 +02:00
Michael Friedrich
71cf491a3b
Merge pull request #7331 from Icinga/bugfix/unit-tests-packaging-7327
...
Shutdown timers cleanly on exit
2019-07-17 15:16:04 +02:00
Alexander A. Klimov
80d976fed6
Shutdown timers cleanly on exit
...
refs #7327
2019-07-17 13:53:43 +02:00
Alexander A. Klimov
31e5394fe9
Fix style
...
refs #5230
2019-07-16 11:45:23 +02:00
Alexander A. Klimov
c385355c38
DaemonCommand: make the atomics a bit more atomic
...
Just to be sure.
refs #5230
2019-07-16 11:39:09 +02:00
Alexander A. Klimov
4ee9ac16b4
Fix missing comments
...
refs #5230
2019-07-16 11:11:10 +02:00
Alexander A. Klimov
3584ad97d8
Fix missing log messages
...
refs #5230
2019-07-15 18:29:15 +02:00
Alexander A. Klimov
ac29b3b93a
Adjust sd_notify()
...
refs #5230
2019-07-15 17:04:55 +02:00
Alexander A. Klimov
06b504f291
Adjust PID file management
...
refs #5230
2019-07-15 17:04:53 +02:00
Alexander A. Klimov
37a3e7e4d5
Application::RunEventLoop(): forward restart requests to umbrella process
...
refs #5230
2019-07-15 15:23:37 +02:00
Alexander A. Klimov
d6bc5a1a18
Remove old signal handlers
...
refs #5230
2019-07-15 15:06:29 +02:00
Michael Friedrich
6682a427d4
TLS: Ensure to specify options in one place
...
`SetTlsProtocolminToSSLContext()` may have overridden
previous flags.
refs #7277
refs #7041
refs #7211
2019-07-15 13:29:55 +02:00
Michael Friedrich
524e2368be
Respect OpenSSL 1.1.0 vs older
2019-07-12 14:56:08 +02:00
Michael Friedrich
32d288f243
TLS: Fetch the cipher list and log them for debugging
2019-07-12 14:39:17 +02:00
Michael Friedrich
38b7f10e0e
Array: Move Join into the base class, available for programmers
2019-07-12 14:36:55 +02:00
Michael Friedrich
0d25ae0e08
Quality: Prefer BOOST_{,UN}LIKELY gcc optimizer macros over our own
...
Our macro collides with Boost::DateTime and the gregorian classes
and I don't see any reason why we shouldn't use Boost::Config
being already there.
2019-07-09 13:20:53 +02:00
Michael Friedrich
065067c8b5
Merge pull request #7281 from Icinga/bugfix/openssl-1-0-1-7280
...
Use SSL_CTX_set_ecdh_auto only if available
2019-07-04 14:27:45 +02:00
Alexander A. Klimov
6568017658
Use SSL_CTX_set_ecdh_auto only if available
...
refs #7280
2019-07-04 13:05:31 +02:00
Michael Friedrich
4bc02c6c2c
Buildfix for Windows with non-unity builds
2019-07-03 13:23:14 +02:00
Michael Friedrich
f63d9cce4a
Merge pull request #7261 from Icinga/bugfix/throw-default
...
Avoid "~Class() throw() = default;"
2019-07-02 12:33:54 +02:00
Diana Flach
ad0ff9839d
Fix Icinga when calling array.remove()
...
fixes #7265
2019-06-28 16:37:29 +02:00
Alexander A. Klimov
5b841db4a0
Avoid "~Class() throw() = default;"
2019-06-28 09:07:33 +02:00
Michael Friedrich
3d363854e2
Disable stack traces for WQ exceptions (used in config compiler)
...
The ConfigItem class collects exceptions and reports them.
In contrast to our other DiagnosticInformation() calls,
verbosity is enabled any time.
This patch allows to re-enable the verbose output including
the stack traces, but disables this by default.
2019-06-19 14:26:34 +02:00
Michael Friedrich
9c92368774
SSL Context: Explicitly load ECC ciphers on el7
...
Otherwise curl/nss as client won't be able to use the
new default cipher list.
fixes #7247
2019-06-18 14:58:19 +02:00
Alexander A. Klimov
42a33cdc7d
Fix build errors with Boost v1.70
...
refs #7237
2019-06-07 16:30:34 +02:00
Michael Friedrich
146b337d4d
Merge pull request #7211 from Icinga/feature/asio-tls-version
...
Require TLS 1.2 for Cluster & REST API
2019-06-03 16:19:22 +02:00
Michael Friedrich
d82c067555
Require TLS 1.2 for Cluster & REST API
...
refs #7041
2019-05-29 17:08:36 +02:00
Michael Friedrich
438da67209
Merge pull request #7210 from Icinga/bugfix/boost-asio-deprecated
...
Quality: Replace deprecated get_io_service() with get_executor().context() for Boost ASIO
2019-05-29 15:40:19 +02:00
Michael Friedrich
99bb7fa99c
Merge pull request #7196 from Icinga/feature/network-cleanup
...
Cleanup old code (HTTP, Cluster)
2019-05-29 14:50:40 +02:00
Michael Friedrich
59b95ed1f0
Quality: Replace deprecated get_io_service() with get_executor().context() for Boost ASIO
...
refs #7041
2019-05-29 14:36:10 +02:00
Michael Friedrich
f5bc9b469c
Quality: Mark NetworkStream, TcpSocket & UnixSocket classes as deprecated
...
They're used inside the Livestatus feature which needs rework.
2019-05-29 14:17:36 +02:00
Michael Friedrich
ba44c3921c
Quality: Remove old MakeSSLContext() interface
2019-05-28 13:03:34 +02:00
Michael Insel
a6a0631e99
Unify copyright headers
...
Update (left over) copyright headers to generic copyright headers.
2019-05-24 16:25:32 +02:00
Michael Friedrich
5dbb6ad366
Quality: Remove old SocketEvent functionality
2019-05-24 15:50:43 +02:00
Michael Friedrich
c7a2fc556c
Quality: Purge old TlsStream functionality
2019-05-24 15:50:43 +02:00
Michael Friedrich
368383bedd
Merge pull request #7154 from Elias481/fix/serializer-object-locking-7003
...
Lock all kind of Objects during serialization
2019-05-10 14:39:27 +02:00
Elias Ohm
4c86c370bb
fixup errbuf length in the other files and avoid using the static buffer in one place (for thread safety and code consistency reasons)
2019-05-09 09:30:12 +02:00
Elias Ohm
e75f063552
bring some things in line
...
- account for documented buffer size openssl 1.1.x for error string (>=256 bytes)
- use nullptr instead of NULL
- fix/streamline null-checks
2019-05-09 00:22:24 +02:00
Jean Flach
9a0d894f10
Don't use deprecated RSA_generate_key
...
fixes #4635
2019-05-08 23:46:31 +02:00
Michael Friedrich
78e24c53f1
DB IDO: Do not deactivate objects during application reload/restart
...
This follows the same principle as with the shutdown handler,
and was introduced with the changed reload handling with 2.9.
Previously IsShuttingDown() was sufficient which got set at one
location.
SigUsr2 as handler introduced a new location where m_ShuttingDown
is not necessarily set yet. Since this handler gets called when
l_Restarting is enabled, we'll use this flag to avoid config update
events resulting in object deactivation (object->IsActive() always
returns false).
refs #5996
refs #6691
refs #6970
fixes #7125
2019-05-03 15:40:48 +02:00
Elias Ohm
cdd843a998
another small adjustment by the way just to ensure the object on stack ist the same as the one serialized further in case the object does not implement locking on mutation (besides it's mor efficient to not fetch the same value twice)
2019-05-01 12:09:24 +02:00
Elias Ohm
91296c2a25
Lock Objects during serialization
...
old behaviour was to only lock arrays, dictionaries and namespaces but not other objects
2019-04-28 22:13:19 +02:00
Michael Friedrich
3dc9927284
Merge pull request #7124 from Icinga/bugfix/namespace-thread-safe
...
Namespace: place ObjectLock in all methods
2019-04-26 08:26:59 +02:00
Michael Friedrich
0438c866f8
Merge pull request #7102 from Icinga/feature/boost-fs-7101
...
Replace self-written filesystem ops with boost.filesystem
2019-04-25 15:53:55 +02:00
Alexander A. Klimov
5afef1015d
Replace unlink() with boost::filesystem::remove()
...
refs #7101
2019-04-25 09:53:02 +02:00
Alexander A. Klimov
5a17722c1f
Replace _unlink() + rename() with boost::filesystem::rename()
...
refs #7101
2019-04-25 09:53:02 +02:00
Alexander A. Klimov
f1f7d0c4d6
Work around boost::filesystem::path bug on VS
...
refs #7101
2019-04-25 09:53:01 +02:00
Alexander A. Klimov
af78cd6050
Use Boost.Filesystem
...
refs #7101
2019-04-25 09:53:01 +02:00
Michael Friedrich
0d9d39c64b
Fix preprocessor macro comment
2019-04-25 08:25:28 +02:00
Alexander A. Klimov
ba842403ce
Fix circular #include
...
refs #6985
2019-04-25 08:25:28 +02:00
Alexander A. Klimov
5151f6567e
ThreadPool: use the Boost ASIO thread pool under the hood
2019-04-25 08:25:28 +02:00
Michael Friedrich
56894bea17
Buildfix
...
Obviously tired.
fixes #7138
fixes #7139
2019-04-24 12:10:57 +02:00
Michael Friedrich
df25b183cb
Add log message for log rotate; update docs
...
refs #6737
2019-04-24 11:53:27 +02:00
Alexander A. Klimov
7a8f8fd734
Timer::TimerThreadProc(): use C++11 lambda instead of bind()
...
refs #6737
2019-04-24 11:51:17 +02:00
Alexander A. Klimov
622f684124
StreamLogger#BindStream(): set #m_FlushLogTimer only if needed
...
refs #6737
2019-04-24 11:47:02 +02:00
Elias Ohm
52e3db279a
Fix for double-free (and possibly other memory-corruption related) crashes at logrotate time
...
this is a direct fix of the issue revealing the problem that leads to crash
verification done with a patched icinga2 where the execution-order of the code lines of counter-parts involved in re-incrementing/decrementing Timer:Ptr is forced to be the one that leads to the obeserverd segfaults
refs #6737
2019-04-24 11:42:54 +02:00
Michael Friedrich
856877d1fe
Merge pull request #7134 from Icinga/feature/boost-asio-influxdbwriter
...
Use new I/O engine in InfluxdbWriter
2019-04-23 14:31:42 +02:00
Michael Friedrich
0f804d126b
Merge pull request #7133 from Icinga/feature/boost-asio-pki
...
Use new I/O engine in PkiUtility::FetchCert() and PkiUtility::RequestCertificate()
2019-04-23 14:27:48 +02:00
Michael Friedrich
dee8fbf248
Merge pull request #7128 from Icinga/feature/re-write-objectlock-7123
...
Re-write ObjectLock's implementation details
2019-04-23 11:53:40 +02:00
Alexander A. Klimov
c1fa07899c
Introduce OptionalTlsStream
2019-04-23 11:25:26 +02:00
Alexander A. Klimov
d8c9fdf1d4
Make Object#m_Mutex std::recursive_mutex
...
refs #7123
2019-04-17 18:26:29 +02:00
Alexander A. Klimov
7e6868bc99
Make Object#m_LockOwner std::atomic<std: 🧵 :id>
...
refs #7123
2019-04-17 18:26:23 +02:00
Alexander A. Klimov
f9f998334d
ObjectLock: deduplicate constructors
...
refs #7123
2019-04-17 16:47:41 +02:00
Alexander A. Klimov
5afda77943
Namespace: place ObjectLock in all methods
2019-04-16 17:38:58 +02:00
Michael Friedrich
b906714254
Fix that MaxConcurrentChecks constant is overridden from 'checker' feature
...
Note: This drops the deprecated concurrent_checks setting from the checker feature
entirely and refactors the underlaying code handling.
Also affects ReloadTimeout which is new for 2.11.
fixes #7111
2019-04-16 15:04:57 +02:00
Alexander A. Klimov
c4389103bd
Fix Windows command escape for \"
...
refs #4849
2019-04-08 10:58:50 +02:00
Michael Friedrich
c2f180395a
Merge pull request #7000 from Icinga/bugfix/goto-loop
...
Don't abuse goto for building simple loops
2019-04-03 09:46:17 +02:00
Alexander A. Klimov
cfd0d86b9b
Use C++11 atomics for our intrusive pointers
2019-04-02 13:54:30 +02:00
Alexander A. Klimov
f4a78380e9
Add non-async overloads for NetString::ReadStringFromStream() and NetString::WriteStringToStream()
2019-04-01 17:11:10 +02:00
Alexander A. Klimov
d1e87bdc45
Connect(): add non-async overload
2019-04-01 17:11:09 +02:00
Alexander A. Klimov
f2d9d91e83
Introduce UnbufferedAsioTlsStream#GetPeerCertificate()
2019-04-01 17:11:09 +02:00
Alexander A. Klimov
d428bdf384
Add missing includes
2019-04-01 13:31:16 +02:00
Alexander A. Klimov
bf23e5392b
UnbufferedAsioTlsStream: don't rely on *this in decltype()s for methods' return types
2019-04-01 13:31:16 +02:00
Alexander A. Klimov
7ec1e638a8
Turn shortcut UnbufferedAsioTlsStream::Parent into a base class
2019-04-01 13:31:16 +02:00
Alexander A. Klimov
e6d78bf361
Move some TCP/TLS logic out of ApiListener
...
... for re-using it
2019-04-01 13:31:16 +02:00
Alexander A. Klimov
79220ee647
io-engine.hpp: fix missing namespace
2019-04-01 13:31:16 +02:00
Alexander A. Klimov
8b3efe5759
Introduce AsioConditionVariable
2019-04-01 13:31:16 +02:00
Alexander A. Klimov
d3392d1579
Rename AsioTlsStreamHack to UnbufferedAsioTlsStream
2019-04-01 13:31:16 +02:00
Alexander A. Klimov
b384f859c9
Make IoEngine::m_CpuBoundSemaphore signed
2019-04-01 13:31:16 +02:00
Alexander A. Klimov
e26774c7f8
IoEngine: adjust I/O threads
2019-04-01 13:31:16 +02:00
Alexander A. Klimov
b26808414c
NetString::ReadStringFromStream(): add Boost ASIO overload
2019-04-01 11:40:14 +02:00
Alexander A. Klimov
43658de529
NetString::WriteStringToStream(): add Boost ASIO overload
2019-04-01 11:40:14 +02:00
Alexander A. Klimov
282f8fd173
IoEngine: explicitly join I/O threads
2019-04-01 11:40:14 +02:00
Alexander A. Klimov
ac72ca4ae6
Don't warn that Boost.Coroutine v1 is deprecated
2019-04-01 11:40:14 +02:00
Alexander A. Klimov
d7b465ce74
Implement IoBoundWorkSlot
2019-04-01 11:40:14 +02:00
Alexander A. Klimov
2d7714802d
Allow CpuBoundWork to be done before end of scope
2019-04-01 11:40:14 +02:00
Alexander A. Klimov
e21956e26e
ApiListener: detect protocol
2019-04-01 11:40:14 +02:00
Alexander A. Klimov
2615967e7f
Make ApiListener#m_SSLContext a Boost ASIO SSL context
2019-04-01 11:40:14 +02:00
Alexander A. Klimov
c547e9a863
Implement basic I/O engine
2019-04-01 11:40:14 +02:00
Alexander A. Klimov
7c7c5e28f5
Implement LazyInit<T>
2019-04-01 11:40:14 +02:00
Michael Friedrich
149f640fd8
Improve DB IDO HA failover behaviour
...
- Decrease Object Authority updates to 10s (was 30s)
- Decrease failover timeout to 30s (was 60s)
- Decrease cold startup (after (re)start) with no OA updates to 30s (was 60s)
- Immediately connect on Resume()
- Fix query priority which got broken with #6970
- Add more logging when a failover is in progress
```
[2019-03-29 16:13:53 +0100] information/IdoMysqlConnection: Last update by endpoint 'master1' was 8.33246s ago (< failover timeout of 30s). Retrying.
[2019-03-29 16:14:23 +0100] information/IdoMysqlConnection: Last update by endpoint 'master1' was 38.3288s ago. Taking over 'ido-mysql' in HA zone 'master'.
```
- Add more logging for reconnect and disconnect handling
- Add 'last_failover' attribute to IDO*Connection objects
refs #6970
2019-04-01 08:50:00 +02:00
Michael Friedrich
6ace8001d8
Merge pull request #7019 from Icinga/feature/new-json-library
...
Replace YAJL with nlohmann::json
2019-03-18 17:26:57 +01:00
Alexander A. Klimov
0cf10c6306
Make buildable with VS 2017
2019-03-18 15:07:57 +01:00
Alexander A. Klimov
2a05b46431
Auto-sanitize data before en-/decoding JSON
2019-03-18 15:07:57 +01:00
Alexander A. Klimov
9daca0b216
Get rid of YAJL
2019-03-18 15:07:57 +01:00
Alexander A. Klimov
5882594b43
JsonEncode(): use nlohmann::json
2019-03-18 15:07:57 +01:00
Alexander A. Klimov
1b0367b740
JsonDecode(): use nlohmann::json::sax_parse()
2019-03-18 15:07:57 +01:00
Michael Friedrich
724b34c6f2
Integrate nlohmann_json into CMake
...
Better integration into base/json.cpp
Signed-off-by: Alexander A. Klimov <alexander.klimov@icinga.com>
2019-03-18 15:07:50 +01:00
Michael Friedrich
2de8bac588
Merge pull request #6990 from Icinga/bugfix/influxdbwriter-oom-6989
...
InfluxdbWriter: don't leak sockets
2019-03-18 14:38:04 +01:00
Michael Friedrich
ea80d93efc
Merge pull request #7014 from Icinga/feature/utf8cpp
...
Utility::ValidateUTF8(): use UTF8-CPP
2019-03-18 10:57:03 +01:00
Michael Friedrich
804c00ece5
Merge pull request #6999 from Icinga/bugfix/compiler-warnings
...
Suppress or fix compiler warnings
2019-03-18 08:44:30 +01:00
Alexander A. Klimov
a72f4db5c9
Utility::ValidateUTF8(): use UTF8-CPP
2019-03-15 13:34:20 +01:00
Michael Friedrich
026ed837ac
Merge pull request #6976 from Icinga/bugfix/so_reuseport-missing
...
Don't require OS headers to provide SO_REUSEPORT
2019-03-13 10:30:08 +01:00
Alexander A. Klimov
ac354f9e80
Don't abuse goto for building simple loops
2019-03-08 14:59:01 +01:00
Alexander A. Klimov
bf92e32496
Suppress or fix compiler warnings
2019-03-08 14:07:29 +01:00
Alexander A. Klimov
a9841a9197
Defer: ensure not to throw any exceptions out of a destructor
...
refs #6989
2019-03-01 14:29:35 +01:00
Michael Friedrich
e2df11520e
Merge pull request #6970 from Icinga/bugfix/perfdata-gaps
...
Improve reload handling for features (metric & queue flush, activation priority)
2019-02-26 15:38:15 +01:00
Alexander A. Klimov
bf0c68757f
Don't require OS headers to provide SO_REUSEPORT
2019-02-26 11:25:44 +01:00
Michael Friedrich
458f997a18
Replace Copyright header with a short version, part II
2019-02-25 15:09:36 +01:00
Michael Friedrich
d14a88235d
Replace Copyright header with a short version, part I
...
CLion -> replace in path
2019-02-25 14:48:22 +01:00
Michael Friedrich
ab7a799369
Implement ReloadTimeout constant and wait for enqueued checks on Stop()
2019-02-25 09:03:47 +01:00
Alexander A. Klimov
9558ebc0f4
Secure ApiUser::GetByAuthHeader() against timing attacks
2019-02-22 16:59:36 +01:00
Michael Friedrich
89634c2eb6
Re-add Defer functionality
2019-02-22 15:27:34 +01:00
Michael Friedrich
a25e2b1038
Stop object in reversed activation priority order
...
This stops the checker component first, then notifications, then
features, then config objects, then the API feature and logger(s).
Patch taken from @al2klimov
2019-02-20 12:38:57 +01:00
Michael Friedrich
5da1cbd096
Revert "Respect activation priority also on deactivation"
...
This reverts commit 8ad1717055 .
2019-02-19 14:30:44 +01:00
Michael Friedrich
a2f5b7a02c
Revert "CheckerComponent#Stop(): wait for all running checks"
...
This reverts commit 1eaad0637b .
2019-02-19 14:05:00 +01:00
Michael Friedrich
d98c0704c4
Debug: Log calls to ConfigObject::Deactivate()
...
Only available in debug builds.
2019-02-19 13:49:52 +01:00
Michael Friedrich
0467c488e9
Merge pull request #6908 from Icinga/bugfix/perfdata-gaps
...
Ensure all perfdata to be written
2019-02-11 17:27:44 +01:00
Michael Friedrich
7a865aefd9
Merge pull request #6854 from Icinga/bugfix/unamehelper-inefficient-6452
...
Make UnameHelper() efficient
2019-02-11 16:57:17 +01:00
Alexander A. Klimov
8ad1717055
Respect activation priority also on deactivation
2019-02-06 11:17:45 +01:00
Michael Friedrich
4339240b46
Merge pull request #6858 from Icinga/feature/string-builder
...
Make string builder reusable
2019-02-04 16:05:20 +01:00
Michael Friedrich
77572c4424
Merge pull request #6901 from Icinga/bugfix/so_reuseport-6898
...
TcpSocket#Bind(): also set SO_REUSEPORT
2019-02-04 14:21:20 +01:00
Michael Friedrich
b58cb17e4b
Fix Convert::ToLong(double val)
2019-01-30 14:47:59 +01:00
Alexander A. Klimov
1eaad0637b
CheckerComponent#Stop(): wait for all running checks
2019-01-24 15:09:39 +01:00
Alexander A. Klimov
984f7be030
TcpSocket#Bind(): also set SO_REUSEPORT
...
refs #6898
2019-01-17 12:13:44 +01:00
Alexander A. Klimov
61860563a6
Make string builder reusable
2018-12-21 12:43:04 +01:00
Alexander A. Klimov
17e86f98a2
Make UnameHelper() efficient
...
refs #6452
2018-12-20 16:37:04 +01:00
Michael Friedrich
bf4ecbed69
Revert "ThreadPool#Stop(): discard non-processed queue items"
...
This reverts commit 30e6d0f809 .
refs #6815
2018-12-06 09:56:49 +01:00
Michael Friedrich
08c1539561
Merge pull request #6815 from Icinga/bugfix/reload-while-api-dos
...
ThreadPool#Stop(): discard non-processed queue items
2018-12-05 11:11:49 +01:00
Alexander A. Klimov
30e6d0f809
ThreadPool#Stop(): discard non-processed queue items
2018-12-03 16:38:52 +01:00
Michael Friedrich
f3cd3eb870
DSL: Implement getenv()
...
This patch also restores Utility::GetFromEnvironment()
and replaces the hardcoded `getenv()` calls.
2018-11-19 18:11:16 +01:00
Michael Friedrich
90de216cbb
Merge pull request #6479 from Icinga/feature/socketevents-inherit-object-6477
...
SocketEvents: inherit from Stream
2018-11-12 17:06:37 +01:00
Michael Friedrich
1f5555e1d6
Fix possible double free in StreamLogger::BindStream()
...
refs #6737
2018-11-08 15:51:58 +01:00
Alexander A. Klimov
a2ae01e64b
Socket engine: drop life support objects
...
refs #6477
2018-10-30 13:46:20 +01:00
Alexander A. Klimov
5134ccaf56
Make SocketEventDescriptor#EventInterface a SocketEvents::Ptr
...
refs #6477
2018-10-30 13:46:20 +01:00
Alexander A. Klimov
a9a9469868
SocketEvents: inherit from Stream
...
refs #6477
2018-10-30 13:46:20 +01:00
Michael Friedrich
5406ce6540
Ensure that API/JSON-RPC messages in the same session are processed and not stalled
...
This basically drops the "corked" implementation which just stalled the
TLS IO polling after some requests. If you need sort of rate limiting
for these events, use an external TLS proxy which terminates that in front
of Icinga.
fixes #6635
2018-10-29 12:57:24 +01:00
Michael Friedrich
7e1942e8e7
Merge pull request #6718 from Icinga/bugfix/ssl-shutdown
...
Call SSL_shutdown() at least twice
2018-10-24 11:46:32 +02:00
Michael Friedrich
dea5ec614e
icinga.com: Update CMakeLists.txt
2018-10-18 09:35:18 +02:00
Michael Friedrich
44c3b83769
icinga.com: Update '*.ti'
2018-10-18 09:30:00 +02:00
Michael Friedrich
dab53448bc
icinga.com: Update *.{h,c}pp
2018-10-18 09:27:04 +02:00
Michael Friedrich
af6c8a1f50
Add missing shutdown/program state dumps for SIGUSR2 reload handler
...
Credits to @west0rmann finding the issue and providing the initial fix.
fixes #6689
fixes #6592
2018-10-16 12:36:43 +02:00
Michael Friedrich
43a571e013
Don't throw an error when namespace indexers don't find a valid key
...
Examples:
```
globals["abc"]
globals.def
```
The patch for the Icinga Director unfortunately only solves the
master, and as discussed with @lippserd we need to ensure that
satellites and clients with 2.10 can be restarted without any errors
from deployed configuration.
refs #6509
refs icinga/icingaweb2-module-director#1654
2018-10-11 12:42:56 +02:00
Michael Friedrich
4be9f418a9
Revert "Initialize Socket Event Engine on application startup"
...
This reverts commit c8dcd1297f .
We cannot do this during application startup, since Daemonize()
kills the threads again.
refs #6514
refs #6630
2018-10-09 19:38:29 +02:00
Michael Friedrich
96c0de9bea
Allow to override MaxConcurrentChecks constant
2018-09-27 20:23:00 +02:00
Michael Friedrich
c8dcd1297f
Initialize Socket Event Engine on application startup
...
Previously this happened inside the TlsStream constructor
during the first connection attempt.
2018-09-24 15:50:59 +02:00
Michael Friedrich
3038b150a9
Merge pull request #6616 from Icinga/feature/tls-handshake-timeout-config
...
Add ApiListener#tls_handshake_timeout option
2018-09-17 11:20:12 +02:00
Michael Friedrich
b81ac972b9
Silence compiler warning for nice()
2018-09-14 14:29:52 +02:00
Michael Friedrich
29701b4db5
Add ApiListener#tls_handshake_timeout option
...
This allows to specify the previously hardcoded
timeout of 10s.
refs #6517
2018-09-14 09:20:09 +02:00
Michael Friedrich
f297881e23
Call SSL_shutdown() at least twice
2018-09-10 16:10:16 +02:00
Michael Friedrich
1c2a59bf63
Merge pull request #6591 from Icinga/bugfix/lto-builds-static-initialize-namespaces
...
Fix static initializer priority for namespaces in LTO builds
2018-09-04 16:54:30 +02:00
Michael Friedrich
19993df380
Fix static initializer priority for namespaces in LTO builds
...
fixes #6575
2018-09-04 16:36:22 +02:00
Jean Flach
72cc41d14e
Merge pull request #6356 from sourcejedi/fix/systemd
...
Fix logging under systemd
2018-09-04 15:24:43 +02:00
Michael Friedrich
bc844aca06
Fix non-unity builds on CentOS 7 with std::shared_ptr
...
refs #6509
2018-09-03 15:32:28 +02:00
Alan Jenkins
a0fb0bbfe3
fix "Console" log to flush
...
It's called "Console", which would be line-buffered anyway. But, it's
implemented as std::cout. This might be piped to a logger, as in
daemontools or systemd. In this case it will not be a TTY, and log lines
should be flushed without too much delay. Let's just flush each message.
Let's not introduce a static instance of StreamLogger (flushed by interval
timer). That's too stressful to read, because static instances are really
annoying to order. Example citation: "Yay, our static destructors are
pretty much beyond repair at this point." -- application.cpp.
I don't know if there will be any need to optimize logging syscalls. The
init script uses `--daemonize`. I think the systemd service should also
avoid using the "Console" log after startup (see next commit). The
documentation does not warn that the syslog feature is less efficient
in system calls than mainlog; deferred flusing does not seem to be a highly
prominent feature. There's no cool comment in the code about how much the
syscalls were slowing down some use case (or qualifying that this
optimization can only eliminate syscalls on platforms with both mutexes and
clocks that can work without syscalls).
2018-08-25 09:54:55 +01:00
Gunnar Beutner
e678fa1aa5
Refactor Application::*Const()
2018-08-13 15:27:05 +02:00
Gunnar Beutner
1a0311a49f
Implement namespace support for the keys() function
2018-08-13 13:44:31 +02:00
Gunnar Beutner
8fda8d72ac
Implement support for the namespace and using keywords
2018-08-13 13:44:31 +02:00
Gunnar Beutner
10d6f70a85
Move constants and functions into different namespaces
2018-08-13 13:44:31 +02:00
Gunnar Beutner
1a8692d972
Implement support for namespaces
2018-08-13 13:44:31 +02:00
Gunnar Beutner
9d513d8f05
Implement support for modifying frozen attributes
2018-08-13 13:44:31 +02:00
Gunnar Beutner
d9c0b6f806
Refactor REGISTER_SCRIPTFUNCTION_* macros
2018-08-13 13:44:31 +02:00
Michael Friedrich
97513965e6
Introduce IcingaApplication#environment
...
Precedence as follows:
- DEnvironment=...
- const Environment = ...
- object IcingaApplication "app" { environment = "..." }
The wrapped script constant handling is required
since we cannot directly link from libremote (SNI handling)
to libicinga where the object resides. Instead we'll
use the Application class helpers for hiding the ScriptGlobal
calls.
2018-08-10 12:49:48 +02:00
Markus Frosch
20269a89d0
ApiListener: Add support for dynamic port handling
2018-08-08 17:42:57 +02:00
Michael Friedrich
9be3ee1a1a
Update output for --version
...
This moves the system and build information before
the application paths which are normally not that important.
2018-08-07 18:46:18 +02:00
Markus Frosch
9fbc40615a
Improve path handling in cmake and daemon
2018-08-07 14:10:26 +02:00
Michael Friedrich
8bac1dc99e
Merge pull request #6521 from gunnarbeutner/feature/references
...
Implement references
2018-08-07 12:00:19 +02:00
Gunnar Beutner
24de1963b1
Merge pull request #6526 from Icinga/bugfix/wpessimizing-move-6524
...
icinga::PackObject(): shorten conversion to string
2018-08-07 10:05:18 +02:00
Alexander A. Klimov
137f5363c4
icinga::PackObject(): shorten conversion to string
...
refs #6524
2018-08-07 09:57:08 +02:00
Gunnar Beutner
8bfd419702
Implement references
2018-08-07 07:44:48 +02:00
Michael Friedrich
33492420f3
Merge pull request #6427 from gunnarbeutner/fix/recursive-serialize
...
Improve error message for serializing objects with recursive references
2018-08-03 11:03:42 +02:00
Gunnar Beutner
56cf64f590
Improve error message for serializing objects with recursive references
2018-08-02 11:06:24 +02:00
Jean Flach
065bc23d9a
Merge pull request #6508 from gunnarbeutner/feature/dictionary-clear
...
Implement the Dictionary#clear script function
2018-08-02 10:30:08 +02:00
Gunnar Beutner
a5a0119799
Implement the Dictionary#clear script function
2018-08-02 08:45:19 +02:00
Jean Flach
2e3a1ff0c6
Merge pull request #6498 from Icinga/bugfix/match-regex-match-any-regression
...
Fix regression with MatchAny false conditions on match/regex/cidr_match
2018-07-27 17:28:13 +02:00
Michael Friedrich
72c0f07661
Fix regression with MatchAny false conditions on match/regex/cidr_match
...
fixes #6496
2018-07-27 16:55:37 +02:00
Michael Friedrich
8e682ce9b1
Improve error logging for match/regex/cidr_match functions and unsupported dictionary usage
...
fixes #6442
2018-07-27 16:34:50 +02:00
Alexander A. Klimov
dd8cb42969
Implement object packer for consistent hashing
2018-07-26 17:36:48 +02:00
Michael Friedrich
020bd86b4c
Merge pull request #6408 from Icinga/bugfix/objectlock-unlock-m_lockowner
...
ObjectLock#Unlock(): don't reset m_Object->m_LockOwner too early
2018-07-26 10:02:26 +02:00
Michael Friedrich
fcc32957cb
Merge pull request #6455 from Icinga/feature/filelogger-started
...
Log something when the Filelogger has been started
2018-07-26 10:01:06 +02:00
Michael Friedrich
62e91e1891
Merge pull request #6430 from Icinga/fix/workqueue-log-message
...
Fix negative 'empty in' value in WorkQueue log message
2018-07-26 09:59:53 +02:00
Michael Friedrich
b1adad0a42
Merge pull request #6456 from Icinga/feature/logger-flush-dev
...
Keep notes for immediately log flushing
2018-07-26 09:58:59 +02:00
Michael Friedrich
14d88d90a0
Merge pull request #6470 from sebastic/spelling-errors
...
Fix spelling errors.
2018-07-23 17:59:45 +02:00
Bas Couwenberg
0891380789
Fix spelling errors.
...
* occured -> occurred
* dosen't -> doesn't
2018-07-21 10:38:09 +02:00
Alexander A. Klimov
f71bad96d5
Start and stop the timer thread lazily
...
refs #6461
2018-07-20 15:36:15 +02:00
Michael Friedrich
7519d23892
Add debug logging for daemonize/timers
...
The previous commit is 1:1 the same I've implemented
here already. Great teamwork with Alex :)
refs #6445
2018-07-19 13:34:12 +02:00
Alexander A. Klimov
d15e1006f3
Re-introduce Timer::Initialize()
...
refs #6445
2018-07-19 13:22:37 +02:00
Michael Friedrich
fd381ff5e0
Keep notes for immediately log flushing
...
Disabled, but kept for future debugging sessions.
Helps with things like #6455
2018-07-19 12:51:30 +02:00
Michael Friedrich
7c2e999f1f
Log something when the Filelogger has been started
...
Helps to see whether the logger object is active,
spotted during #6445
2018-07-19 12:48:29 +02:00
Michael Insel
4170bd5205
Fix negative 'empty in' value in WorkQueue log message
...
This fixes a negative 'empty in' value in WorkQueue log messages.
2018-07-10 19:21:04 +02:00
Alexander A. Klimov
02645c59ff
ObjectLock#Unlock(): don't reset m_Object->m_LockOwner too early
2018-06-22 14:13:09 +02:00
Michael Friedrich
ba680dc829
Merge pull request #6405 from Icinga/bugfix/windows-reload-behaviour-6378
...
TcpSocket#Bind(): reuse socket addresses on Windows, too
2018-06-22 12:25:28 +02:00
Alexander A. Klimov
79878ea286
TcpSocket#Bind(): reuse socket addresses on Windows, too
...
refs #6378
2018-06-22 10:33:31 +02:00
Michael Friedrich
257ad12646
Use SSL_pending() for remaining TLS stream data
...
We've used this previously, and according to the OpenSSL
docs we should just use it. From our experience everything
done different to the API functions from OpenSSL causes
undefined behaviour in the worst case.
This commit also breaks the packet size limit into a more
readable version, including logs for development debug builds.
refs #6242
2018-06-21 15:58:05 +02:00
Michael Friedrich
cc294e14d2
Merge pull request #6393 from Icinga/bugfix/elasticsearchwriter-not-writing-6354
...
Stream#ReadLine(): fix false positive buffer underflow indicator
2018-06-21 15:06:21 +02:00
Alexander A. Klimov
1c213877a4
Stream#ReadLine(): simplify algorithm
...
refs #6354
2018-06-20 17:28:52 +02:00
Alexander A. Klimov
3c7851107c
TlsStream#IsEof(): fix false positive EOF indicator
...
refs #6242
2018-06-20 16:55:33 +02:00
Alexander A. Klimov
02d1f1cc57
Stream#ReadLine(): fix false positive buffer underflow indicator
...
refs #6354
2018-06-20 09:59:18 +02:00
Michael Friedrich
cfd6c79a03
Merge pull request #6387 from Icinga/fix/remove-broken-api-user-hash
...
Remove ApiUser password_hash functionality
2018-06-19 14:26:32 +02:00
Michael Friedrich
2fd6709952
Remove ApiUser password_hash functionality
...
This affects and fixes
- Windows reload
- Config validation
- RHEL 7.5 OpenSSL memory corruption
- Hash algorithm, requested changes
refs #6378
refs #6279
refs #6278
2018-06-19 11:32:03 +02:00
Michael Friedrich
9b99c9d106
Remove leftover for sysconfig file parsing
...
refs #6255
2018-06-18 19:25:48 +02:00
Jean Flach
9a5d464448
Revert "Fix Windows reload"
...
This reverts commit 691e3cfd57 .
2018-06-12 12:19:16 +02:00
Michael Friedrich
bf0737ded5
Merge pull request #6328 from Icinga/sysconfig-env
...
Rework sysconfig file/startup environment
2018-06-05 13:27:36 +02:00
Jean Flach
ed4e008e79
Rework sysconfig file
...
The sysconfig file now only contains the defaults as comments, changes
made there are given to the init.d script, prepare-dirs, safe-reload and
Icinga 2 itself. If nothing is set in the sysconfig file (as is the
default as all lines are commented out) the defaults are used.
fixes #6255
2018-05-23 15:18:42 +02:00
Jean Flach
08a14cd136
Ensure that password hash generation from OpenSSL is atomic
...
This is supposed to solve a problem with segfaults caused by
race conditions withing the random byte generation of OpenSSL.
fixes #6279
2018-05-23 10:55:14 +02:00
Michael Friedrich
6660a45c41
Implement Array::Unique() and add unit tests
...
refs #4732
2018-05-09 17:25:55 +02:00
Jean Flach
c54e042942
Add activation priorities for config object types
...
This patch ensures that specific configuration types
are pre-activated and post-activated. In general,
logging is first, then common configuration objects
like host/service, downtimes, etc.
In the end, all features are activated after to ensure
that notifications are only sent once downtimes are applied.
A similar thing happens for starting with checks too early.
The ApiListener feature runs first to allow cluster connections
at first glance.
fixes #6057
fixes #6231
2018-05-04 11:25:47 +02:00
Jean Flach
88dc230294
Merge pull request #6285 from Icinga/feature/config-validation-timestamps
...
Add support for config validation log timestamps
2018-05-03 14:22:39 +02:00
Michael Friedrich
e606a443b7
Add support for config validation log timestamps
...
This also adds implicit support for the startup.log
generated from API config package validation, e.g. used by
the Icinga Director.
fixes #3455
2018-05-03 11:35:29 +02:00
Michael Friedrich
1102f60b43
Revert "Implement support for ECC certificates"
...
This reverts commit 10691db5b1 .
refs #5555
refs #6200
2018-05-02 16:54:07 +02:00
Jean Flach
0b1d5013ac
Revert "fixup set rlimit stack failed condition"
...
This reverts commit bf959371c4 .
fixes #6257
2018-04-25 14:26:40 +02:00
Jean Flach
2c8dfcc1aa
Fix typo
2018-04-23 10:18:31 +02:00
Michael Friedrich
e6f214fa29
Log warning when sysconfig file cannot be read
...
refs #6215
2018-04-19 10:09:09 +02:00
Jean Flach
8b0126411b
Add improved error messages for resource limits
...
refs #6215
2018-04-19 08:55:05 +02:00