Commit Graph

5968 Commits

Author SHA1 Message Date
Alexander Aleksandrovič Klimov b07d181c4a
Merge pull request #8631 from Icinga/feature/icingadb-scheduleddowntime
Icinga DB: introduce icinga:downtime#scheduled_by
2021-06-30 19:03:53 +02:00
Alexander Aleksandrovič Klimov 31f97d3e6a
Merge pull request #8828 from Icinga/bugfix/execute-command-origin-check
event::ExecuteCommand: add missing origin check
2021-06-29 18:08:07 +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
Alexander Aleksandrovič Klimov 00af435c13
Merge pull request #8725 from Icinga/bugfix/icingadb-serialize-leaves
Icinga DB: serialize icinga:config:checkcommand:argument#value and #set_if as expected
2021-06-29 17:51:41 +02:00
Alexander A. Klimov bcc3870f3a On ScheduledDowntime change: ignore downtimes created before change
... while creating new downtimes.

refs #8309
2021-06-29 17:08:41 +02:00
Alexander A. Klimov 1ee26ac89e Introduce Downtime#config_owner_hash
refs #8309
2021-06-29 16:38:33 +02:00
Julian Brost 8f585bd2ee event::ExecuteCommand: add missing origin check
Only handle messages with a trusted origin in
ClusterEvents::ExecuteCommandAPIHandler. Previously, it would not locally
execute any command but forward them to other nodes where they would then have
a trusted origin and be executed.
2021-06-29 11:15:22 +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 5fdfd47176
Merge pull request #8848 from Icinga/bugfix/harden-scheduled-downtimes
ScheduledDowntime::TimerProc(): Catch exceptions to make sure other downtimes are still created
2021-06-28 17:16:57 +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
Alexander Aleksandrovič Klimov cd1f9e22f0
Merge pull request #8646 from Icinga/bugfix/trigger-fixed-downtimes-immediately
Downtime#Start(): trigger fixed downtimes immediately instead of waiting for the timer
2021-06-24 18:12:03 +02:00
Noah Hilverling f48ad574d7 ScheduledDowntime::TimerProc(): Catch exceptions to make sure other downtimes are still created 2021-06-24 14:05:08 +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
Noah Hilverling 1fae2f3974
Merge pull request #8769 from Icinga/bugfix/new-connection-timeout
Add timeout for full Icinga connection handshake
2021-06-24 09:18:37 +02:00
Alexander A. Klimov d8e5e07c4f Downtime#Start(): trigger fixed downtimes immediately instead of waiting for the timer
... not to cause e.g. notifications if a problem occurs
between the downtime start time and the timer routine.
2021-06-23 19:16:15 +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 Aleksandrovič Klimov b2c3ff6b27
Merge pull request #8638 from Icinga/feature/icingadb-multi-conns
Icinga DB: use one Redis connection per config object type
2021-06-23 18:01:04 +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
Alexander A. Klimov 190e2f8fd9 Icinga DB: introduce icinga:downtime#scheduled_by 2021-06-23 16:49:19 +02:00
Alexander Aleksandrovič Klimov 2cd9c1d902
Merge pull request #8835 from Icinga/bugfix/api-filename-truncation
Fix/restrict truncation of filenames for API-created objects
2021-06-23 12:06:31 +02:00
Julian Brost 56060bc8d5 ApiListener: Deprecate tls_handshake_timeout in favor of connect_timeout 2021-06-23 11:21:42 +02:00
Julian Brost 84d778580f Add timeout for all new connections
This commit adds a timeout for both establishing new outgoing and incoming
connections. This timeout applies to everything until the connection is in a
state where either JsonRpcConnection or HttpServerConnection takes over.
2021-06-23 11:21:42 +02:00
Julian Brost fbed8a0463
Merge pull request #8768 from Icinga/bugfix/scheduleddowntime-interfer
ScheduledDowntime: ignore not related Downtimes while creating Downtimes
2021-06-22 15:48:37 +02:00
Julian Brost 02f761798c
Merge pull request #8825 from Icinga/bugfix/validate-config-package-name
ConfigPackageUtility::ValidateName: replace broken regex
2021-06-22 15:45:38 +02:00
Julian Brost 54a7da437d
Merge pull request #8447 from Icinga/feature/deprecated-relative-removal
Relativize future removals of deprecated features
2021-06-22 12:05:33 +02:00
Julian Brost 36ce7d961f Rename silent parameter of ConfigItem::ActivateItems()
As silent now no longer only controls the generation of log messages, a better
name is required. This changes its name, inverts its value to reflect the new
name and adds a documentation comment.
2021-06-21 16:07:36 +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 118df982f1 GetObjectConfigPath: only truncate and hash comment and downtime filenames
This partially reverts 68a0079c26 and keeps the
fix only for comment and downtime objects for now. For reasoning, please see
the comment in the code.
2021-06-17 16:21:01 +02:00
Julian Brost e079762c8e GetObjectPath: ensure use of escaped name in all cases and use TruncateUsingHash()
68a0079c26 introduced two problems that are fixed
with this commit:
1. The new truncated/hashed name did not use EscapeName()
2. There was a possible collision of names when creating objects with a full
   name of format "[80 characters]...[40 hex digits]" (i.e. the same as the
   truncated/hashed variant but short enough that it isn't hashed)
2021-06-17 16:21:01 +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 c40b18ef61 ConfigPackageUtility::ValidateName: replace broken regex
The old validation regex matched if the name consists only of invalid
character, not that it does not contain them, i.e. something like "foo/bar" was
considered valid.

This commit replaces the regex with a check that all characters in the name are
allowed characters.
2021-06-15 12:16:54 +02:00
Julian Brost b8218a3c0e IcingaDB::UpdateAllConfigObjects: explicitly capture variables in lambda 2021-06-15 11:52:53 +02:00
Alexander A. Klimov 9c567c0bde Icinga DB: no active checks? Not overdue! 2021-06-08 19:17:03 +02:00
Alexander A. Klimov d1e15a220c Icinga DB: use one Redis connection per config object type 2021-06-08 17:52:04 +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 f346a9eea4
Merge pull request #8652 from Icinga/bugfix/l_appversionint-0-8628
l_AppVersionInt: respect versions like r2.12.0, not just v2.12.0
2021-06-07 16:07:04 +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
Julian Brost 9f6cbc38f2
Merge pull request #8754 from Icinga/feature/icingadb-replace-lua-with-xadd-maxlen
Icinga DB: Use XADD ... MAXLEN 1 instead of a custom Lua script
2021-06-04 13:52:30 +02:00
Alexander A. Klimov f0c763465b sd_notify() systemd about what we're doing right now
refs #7329
2021-06-01 18:07:39 +02:00
Alexander Aleksandrovič Klimov dbcb2549aa
Merge pull request #8708 from Icinga/bugfix/reminder-notification-after-timeperiod-with-interval-0
Make sure not to send reminder notification, if problem notification has been suppressed by TimePeriod
2021-05-25 16:09:36 +02:00
Alexander Aleksandrovič Klimov 0156434b2e
Merge pull request #8677 from Icinga/bugfix/mysql-one-transaction-for-programstatus
IDO: Use own transaction for program status and make sure InternalNewTransaction() gets executed
2021-05-20 11:49:07 +02:00
Noah Hilverling 8150b0656e
Merge pull request #8764 from Icinga/bugfix/icingadb-change-id-fields-to-match-sql-schema
Icinga DB: Change ID fields to match SQL schema
2021-05-20 10:44:55 +02:00
Noah Hilverling f551e95338 IDO-MySQL: Make sure InternalNewTransaction() and FinishAsyncQueries() get executed during high load 2021-05-19 17:28:11 +02:00
Noah Hilverling 15786baf3d IDO: Use own transaction for programstatus 2021-05-19 17:26:32 +02:00
Noah Hilverling 898e7fdf35 Icinga DB: Change ID fields to match SQL schema 2021-05-19 17:01:08 +02:00
Alexander A. Klimov f28b9fb7f3 ScheduledDowntime: ignore not related Downtimes while creating Downtimes 2021-05-19 16:10:57 +02:00
Noah Hilverling fb89c88ca9 Icinga DB: Replace global keys spacer '_' with ':' to fit new schema 2021-05-18 08:58:52 +02:00
Eric Lippmann c0cbc4533c Fix group member keys 2021-05-07 08:41:38 +02:00
Noah Hilverling 4005d81a43 Icinga DB: Sync state using runtime updates 2021-05-07 08:41:38 +02:00
Noah Hilverling ab04a4ee98 Icinga DB: Sync runtime updates using streams 2021-05-07 08:41:38 +02:00
Julian Brost a5dc52dea5 IcingaDB: use XADD MAXLEN instead of custom Lua script for heartbeats
The existing Lua script adds a new entry to a stream and then deletes all older
entries. The same can be achieved by using `XADD ... MAXLEN 1`.
2021-05-03 17:21:11 +02:00
Julian Brost 9dd210df84 IcingaDB: use XADD MAXLEN instead of custom Lua script for dump signals
The existing Lua script adds a new entry to a stream and then deletes all older
entries. The same can be achieved by using `XADD ... MAXLEN 1`.
2021-05-03 17:21:01 +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
Alexander A. Klimov f5abec20cf Icinga DB: serialize icinga:config:checkcommand:argument#value and #set_if as expected
I.e. keep the serializations as simple as possible:

null     => null
true     => true
42.0     => 42
"foobar" => foobar
{{42}}   => Object of type 'Function'

(["foobar"] and {"foo"="bar"} can't occur there.)
2021-04-30 15:48:47 +02:00
Noah Hilverling aca8d063dc Icinga DB: Change redis key prefix to 'icinga:*' 2021-04-27 21:27:46 +02:00
Eric Lippmann b08b30ee80
Merge pull request #8684 from Icinga/feature/icingadb-signals-for-all-types
IcingaDB: Add dump signals for type dependencies and global keys and change signal pattern
2021-04-27 21:26: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
Noah Hilverling 60412dd991 Icinga DB: Add dump signals for type dependencies and global keys 2021-04-27 12:32:14 +02:00
Alexander Aleksandrovič Klimov 7f5225ecaa
Merge pull request #8706 from Icinga/bugfix/icingadb-endpoint-zone
Icinga DB: dump the correct icinga:config:endpoint#zone_id
2021-04-26 11:31:51 +02:00
Alexander A. Klimov 306a0f476c Ido*Connection#FieldToEscapedString(): support NULL
refs #8727
2021-04-20 19:30:59 +02:00
Alexander A. Klimov 8918b38dea DbConnection#Pause(): also update is_currently_running and process_id
refs #8727
2021-04-20 19:07:20 +02:00
Alexander A. Klimov 3d8586ccec Ido*Connection: extend IsPaused() check where the difference matters
refs #8727
2021-04-20 19:04:49 +02:00
Alexander A. Klimov 92df2ce2ca Deduplicate DbConnection#Disconnect() in #Pause()
refs #8727
2021-04-20 18:42:37 +02:00
Alexander A. Klimov 0d34d8951a Abstract Ido*Connection#Disconnect()
refs #8727
2021-04-20 18:40:49 +02:00
Alexander A. Klimov fd9bdb798d Deduplicate DbConnection#m_QueryQueue.Join() in #Pause()
refs #8727
2021-04-20 18:40:35 +02:00
Alexander A. Klimov 40c0bfad23 DbConnection#Pause(): call overridden method as last step
Otherwise it marks the object as paused and the other steps become no-ops.

refs #8727
2021-04-20 18:11:52 +02:00
Noah Hilverling 08e586fbf0 Notifications: Make sure not to send reminder notification, if problem notification has been suppressed 2021-03-30 15:32:49 +02:00
Alexander Aleksandrovič Klimov ee705bb110
Merge pull request #8547 from Icinga/bugfix/unable-to-toggle-notifications-from-icingaweb2-8533
Fix runtime config updates not working for objects without zone
2021-03-26 17:18:22 +01:00
Alexander Aleksandrovič Klimov ca9ce92b69
Merge pull request #8698 from Icinga/feature/icingadb-cache-environment-id
Icinga DB: cache environment ID instead of recomputing it every time
2021-03-26 17:16:42 +01: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
Alexander A. Klimov 7dcf48f707 Icinga DB: dump the correct icinga:config:endpoint#zone_id 2021-03-26 13:53:31 +01:00
Julian Brost 180132806f
Merge pull request #8696 from Icinga/feature/improve-redisconnection-write-performance
RedisConnection::WriteRESP: Use one asio::async_write instead of many
2021-03-26 12:36:44 +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
Noah Hilverling 5c8b32618c RedisConnection::WriteRESP: Use one asio::async_write instead of many 2021-03-24 13:14:01 +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
Julian Brost 41f7124692 Icinga DB: cache environment ID instead of recomputing it every time 2021-03-23 17:09:32 +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
Alexander Aleksandrovič Klimov 9830dc194b
Merge pull request #8688 from Icinga/feature/sha1-without-sprintf
Speed up SHA1 function by removing calls to sprintf
2021-03-22 18:46:08 +01:00
Alexander Aleksandrovič Klimov 1c0ce89cb3
Merge pull request #8681 from Icinga/bugfix/problem-notification-at-downtime-end
Send problem notifications after downtime end for checkables in child zones
2021-03-22 17:56:25 +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
Julian Brost 29727e06c0 Only handle event::SetSuppressed{Notifications,NotificationTypes} within the local zone
Note that even when passing `nullptr` as target zone to `RelayMessage()`, the
cluster message will still be sent to the parent zone. These incoming messages
will now be rejected by the parent nodes. At the moment, there's no way to only
send within the local zone.
2021-03-17 15:05:12 +01:00
Yonas Habteab 43ba2da39c Replace std/boost::bind() function with lambda expression 2021-03-10 16:29:40 +01:00
Alexander A. Klimov 31dacb8390 IcingaDB#UpdateAllConfigObjects(): don't modify map concurrently 2021-03-08 18:11:24 +01:00
Julian Brost a4cf81194a
Merge pull request #8650 from Icinga/feature/icingadb-delta
Icinga DB: re-insert only changed object attributes
2021-03-08 15:11:21 +01:00
Alexander Aleksandrovič Klimov d169abc22c
Merge pull request #7968 from Icinga/bugfix/jsonrpcconnection-disconnect-log
JsonRpcConnection: always log errors
2021-03-08 10:55:55 +01:00
Julian Brost 02fd60934f
Merge pull request #8008 from Icinga/bugfix/ascii-tables-in-plugin-output-8006
PluginUtility::ParseCheckOutput(): if it doesn't look like perfdata, it's not perfdata
2021-03-05 17:19:38 +01:00
Alexander A. Klimov 4eddac0e64 Icinga DB: re-insert only changed object attributes 2021-03-04 17:29:39 +01:00
Alexander A. Klimov f60758dc7c JsonRpcConnection: always log errors 2021-03-04 16:23:07 +01:00
Alexander Aleksandrovič Klimov 618c778430
Merge pull request #8649 from Icinga/bugfix/icingadb-deduplicate-cvs
Icinga DB: HMSET the same fields only once
2021-03-03 16:57:27 +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 A. Klimov 1c5f69683f l_AppVersionInt: respect versions like r2.12.0, not just v2.12.0
refs #8628
2021-02-25 15:31:07 +01:00
Alexander A. Klimov ed57d31400 Icinga DB: HMSET the same fields only once 2021-02-24 13:37:36 +01:00
Alexander A. Klimov d4a91ec50d Icinga DB: don't write all types 2021-02-17 12:41:45 +01:00
Alexander A. Klimov e0c13401f7 Ido*sqlConnection#InternalDeactivateObject(): mark object inactive also in memory
Previously:
1. You delete an object from a config file
2. You reload Icinga
3. Icinga fetches all objects and whether they're active from the IDO
4. Icinga recognizes that the just deleted object doesn't exist anymore
5. Icinga marks it as inactive in the IDO, but not in memory
6. You re-create the just deleted object via API
7. Icinga still thinks it's active and doesn't activate it - it's invisible

refs #8584
2021-02-08 16:57:15 +01:00
Alexander Aleksandrovič Klimov aa4f53009e
Merge pull request #8614 from Icinga/bugfix/runworker-exceptions
Improve handling of exceptions thrown by RunWorker
2021-02-08 16:22:35 +01:00
Julian Brost 54a8c7b434 Try to log useful information for exceptions thrown by RunWorker 2021-02-05 15:43:27 +01:00
Julian Brost ddbad7937d
Merge pull request #8622 from Icinga/bugfix/dependency-ti-typo-8180
dependency.ti: fix typo
2021-02-05 11:49:03 +01:00
Alexander A. Klimov ebfa73388f dependency.ti: fix typo
refs #8180
2021-02-04 18:29:54 +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 32cae11175
Merge pull request #8613 from Icinga/bugfix/ido-built-in-checkcommand-overrides-crit-with-warn-state
IdoCheckTask: Don't override checkable critical with warn state
2021-01-28 14:26:10 +01:00
Alexander Aleksandrovič Klimov ca52366a61
Merge pull request #8602 from Icinga/bugfix/icingadb-activation-priority
Delay start of IcingaDB until most config objects are activated
2021-01-28 10:01:37 +01:00
Alexander Aleksandrovič Klimov 9a867c2c25
Merge pull request #8513 from Icinga/bugfix/notifications-downtime-change-in-timeperiod-8509
FireSuppressedNotifications(const Notification::Ptr&): don't send notifications while suppressed by checkable
2021-01-28 10:01:23 +01:00
Julian Brost d7833a5977 Catch exceptions thrown by RunWorker on Windows
The same is already done on other platforms in line 529.
2021-01-27 15:48:28 +01:00
Alexander Aleksandrovič Klimov 8d1e958275
Make code doc more readable
Co-authored-by: Julian Brost <julian.brost@icinga.com>
2021-01-27 15:43:37 +01:00
Yonas Habteab 3e5dfa9607 IdoCheckTask: Don't override checkable critical with warn state 2021-01-27 13:27:14 +01:00
Julian Brost 9219f68c83
Merge pull request #8158 from Icinga/bugfix/check-source-passive-7948
Checkable#ProcessCheckResult(): don't overwrite check source
2021-01-26 10:49:55 +01:00
Alexander A. Klimov c3eba7e88d Checkable#ProcessCheckResult(): don't overwrite check source
... set by passive check results.

refs #7948
2021-01-25 16:05:03 +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 124f98eed4
Merge pull request #8600 from Icinga/feature/flapping-ignore-unknown
Flapping: Allow to ignore states in flapping detection
2021-01-21 13:47:44 +01:00
Alexander Aleksandrovič Klimov b1719883a3
Merge pull request #8604 from Icinga/bugfix/icingadb-initial-sync-delay
IcingaDB: start initial dump in callback instead of timer
2021-01-21 13:47:12 +01:00
Alexander Aleksandrovič Klimov ef23ae5f3c
Merge pull request #8267 from efuss/passive_reach
Drop passive check results for unreachable hosts/services
2021-01-20 17:07:52 +01:00
Noah Hilverling e060995fd8 Flapping: Allow to ignore states in flapping calculation 2021-01-20 11:09:03 +01:00
Alexander Aleksandrovič Klimov 5e810f30a7
Merge pull request #8605 from Icinga/bugfix/icingadb-initial-sync-log
IcingaDB: wait for queries to be executed in inital sync
2021-01-20 10:47:46 +01:00
Julian Brost 2d080f14eb IcingaDB: start initial dump in callback instead of timer
Previously, the initial config dump was started in a timer executed
every 15 seconds. During the first execution of the timer, the Redis
connection is typically not established yet. Therefore, this delayed the
initial sync by up to 15 seconds.

This commit instead triggers the sync from a callback that is executed
after the connection is successfully established.

The timer is removed completely. On first glance, it looks like it would
ensure that a lost connection is reestablished, but this is handled
internally by RedisConnection. After the config has been dumped once,
that timer wouldn't ever attempt a reconnect anyways.
2021-01-20 09:31:27 +01:00
Edgar Fuß 3c050fcc46 Drop passive check results for unreachable hosts/services
Disregard passive check results while no active checks are being scheduled due to violated dependencies.

This copes with the fact that programs feeding passive check results into Icinga may have no notion of reachability and so drive a checkable into HARD state although dependencies have caused active check scheduling being suspended. This may prevent superflous problem notifications being emitted during recovery.

As disable_checks defaults to false, it was regarded OK (by @Al2Klimov) to make this behaviour (which resembles the active check case) unconditional and not conditionalize it on an additional attribute.

In the description of disable_checks, note that a value of true both disables scheduling of active checks and drops passive check results.
2021-01-19 20:08:38 +01:00
Julian Brost 174f7f75a8 IcingaDB: wait for queries to be executed in inital sync
This delays the log message stating that the initial dump is done until
all queries are actually done and now logs a meaningful duration. In
addition, this delays the return of the function and therefore when
state variables are updated by the caller.
2021-01-19 17:14:42 +01:00
Alexander Aleksandrovič Klimov 3976f256a8
Merge pull request #8593 from Icinga/bugfix/activate-items-assertion
Remove incorrect assertion in ConfigItem::ActivateItems
2021-01-19 13:52:16 +01:00
Alexander Aleksandrovič Klimov cbd0d6ea6e
Merge pull request #8588 from Icinga/bugfix/concurrent-schedule-downtime-delete-host
Fix null pointer dereferences when deleting objects while scheduling downtimes
2021-01-19 13:51:08 +01:00
Julian Brost 509db4ab94 Delay start of IcingaDB until most config objects are activated
This commit sets the activation priority if IcingaDB objects to 100 (the
same value as IDO uses) so that it get's activated after most regular
config objects (hosts, services, ...).

Before (note how Icinga 2 continues to active objects for over a minute
after IcingaDB is started and thinks the initial dump is done):

    [2021-01-19 08:33:19 +0000] information/IcingaDB: 'icingadb' started.
    [2021-01-19 08:34:02 +0000] information/IcingaDB: Initial config/status dump finished in 28.247 seconds.
    [2021-01-19 08:35:49 +0000] information/ConfigItem: Activated all objects.

After (now activation of objects is done right after IcingaDB is
started, as it's one of the last objects to be activated):

    [2021-01-19 08:39:01 +0000] information/IcingaDB: 'icingadb' started.
    [2021-01-19 08:39:02 +0000] information/ConfigItem: Activated all objects.
    [2021-01-19 08:39:38 +0000] information/IcingaDB: Initial config/status dump finished in 21.6606 seconds.
2021-01-19 09:45:47 +01:00
Yonas Habteab 5b0bbd6351 IcingaDB: Check whether or not cr is nullptr 2021-01-18 11:38:31 +01:00
Julian Brost e727675aaf Remove incorrect assertion in ConfigItem::ActivateItems
There is an assertion that after activating items, all these items are
active, which sounds reasonable at first. However, with concurrent API
queries, some of these could already be deleted and therefore be
deactivated again.
2021-01-15 16:40:07 +01:00
Julian Brost 88e5744d54 AddDowntime: return Downtime::Ptr instead of String containing the name
At numerous places in the code, something like this is performed:

    String name = Downtime::AddDowntime(...);
    Downtime::Ptr downtime = Downtime::GetByName(name);

However, `downtime` can be a `nullptr` after this as it is possible that
the downtime is deleted in between.

This commit changes the return type of `Downtime::AddDowntime` to return
a Downtime::Ptr instead of the full name of the downtime. `AddDowntime`
performs the very same `GetByName()` operation internally, but handles
the `nullptr` case correctly and throws an exception.
2021-01-15 16:34:48 +01:00
Alexander Aleksandrovič Klimov 986bedd9a0
Merge pull request #8594 from Icinga/feature/remove-upq-from-activate-items
Remove upq from ConfigItem::ActivateItems
2021-01-15 12:09:57 +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 d27f533e5f ApiListener: Update the ssl cont after each accepting incoming connection 2021-01-14 18:40:20 +01:00
Yonas Habteab 057254695d Utility: Introduce new helper function Utility::GetFileCreationTime() 2021-01-14 18:39:14 +01:00
Alexander Aleksandrovič Klimov d82e4987bd
Merge pull request #8427 from Icinga/bugfix/fork-exit
StartUnixWorker(): don't exit() on fork() failure
2021-01-14 17:49:41 +01:00
Alexander Aleksandrovič Klimov c549a6657e
Merge pull request #8562 from Icinga/bugfix/fix-no-renotification-for-non-ok-state-changes-8545
Fix no re-notification for non OK state changes with time delay
2021-01-14 17:49:29 +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 931b9307ae StartUnixWorker(): don't exit() on fork() failure
... but let the caller handle the failure.

Not to stop working completely just because of fork() failure during a reload.
2021-01-14 13:40:18 +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
Yonas Habteab 997ad86225 Fix no re-notification for non OK state changes with time delay 2021-01-14 11:54:25 +01:00
Alexander Aleksandrovič Klimov 5efe3e662c
Merge pull request #8025 from Icinga/bugfix/downtime-for-host-service-with-long-name-8022
ConfigObjectUtility::GetObjectConfigPath(): hash names of not already existing objects
2021-01-14 10:42:04 +01:00
Julian Brost db30704d14
Merge pull request #8532 from Icinga/bugfix/do-not-override-error-codes-that-are-not-200
HTTP: Do not override status codes that are not 200
2021-01-14 09:34:04 +01:00
Yonas Habteab 066db5ef60 HTTP: Don't override status codes that are not OK 2021-01-13 18:56:56 +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
Julian Brost 0c6abc817b Remove upq from ConfigItem::ActivateItems
Since commit d9010c7b9f, ActivateItems no
longer uses the WorkQueue upq to perform tasks but instead performs
these locally. One instance of `upq.Join()`/`upq.HasExceptions()`
remained in the function, but I believe this was just missed when
removing the `upq.Enqueue()` call just before.

This commit removes the corresponding parameter and updates all call
sites accordingly.
2021-01-13 15:19:55 +01:00
Alexander Aleksandrovič Klimov 5a0118c6d8
Merge pull request #8442 from Icinga/bugfix/close-ebadf-8437
Close FDs based on /proc/self/fd
2021-01-13 10:59:15 +01:00
Alexander A. Klimov 68a0079c26 ConfigObjectUtility::GetObjectConfigPath(): hash names of not already existing objects
... to avoid too long file names.

refs #8022
2021-01-12 18:03:22 +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
Julian Brost aea06a27dc Use reference-counted pointer in notification callback
`this` could be deleted after `Notification::BeginExecuteNotification`
exited and before `Notification::ExecuteNotificationHelper` finished.
This is fixed by constructing a `Notification::Ptr` and operate on that
one as it is properly reference-counted.
2021-01-12 17:19:29 +01:00
Alexander Aleksandrovič Klimov a6af5406f7
Merge pull request #8083 from Icinga/feature/Implement-new-API-events-7974
Implement new API event streams response
2021-01-12 12:26:05 +01:00
Yonas Habteab 756abbb2ff ApiEvents: Implement new API event streams response 2021-01-11 14:59:48 +01:00
Alexander Aleksandrovič Klimov d996d1e201
Merge pull request #8580 from bebehei/typo
Fix typo seemless -> seamless
2021-01-11 13:45:08 +01:00
Alexander Aleksandrovič Klimov 635a8c5d4c
Merge pull request #8088 from Icinga/bugfix/log-two-nodes-run-on-different-versions-8075
Display logmessage if two nodes run on different versions
2021-01-11 12:30:30 +01:00
Alexander Aleksandrovič Klimov 862add5f3f
Merge pull request #8512 from Icinga/bugfix/zombie-processes
Revert "icinga2 daemon: reap remaining child processes after reload"
2021-01-11 11:38:20 +01:00
Julian Brost 0276c0b052 Properly handle service downtime referencing a deleted host
Only two out of three cases were handled properly by the code: host
downtimes referencing a deleted host and service downtimes referencing a
deleted service worked fine. However, if a service downtime references a
deleted host, `Host::GetByName()` returns `nullptr` which isn't
accounted for. Use `Service::GetByNamePair()` instead as this performs a
check for the host being null internally.
2021-01-08 11:12:15 +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
Julian Brost 339b37a985 Use content_length method for setting the Content-Length header
Boost.Beast changed the signature of the previously used generic `set`
method so that it no longer accepts integer types, however there is
alreay a more specific method for setting the Content-Length header, so
use this one instead.
2020-12-22 16:27:38 +01:00
Alexander A. Klimov 4051bc9c8f ConfigObjectUtility#CreateObject(): check config objects for duplicates
... not to delete already existing objects during a trial of re-creation.

refs #7726
2020-12-16 16:45:22 +01:00
Yonas Habteab 8eb4f2e062 ApiListener: Display log message if two nodes run on different versions 2020-12-16 16:09:28 +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 A. Klimov 8c6bfdcf54 Revert "icinga2 daemon: reap remaining child processes after reload"
This reverts commit 91265a5b0e
which isn't needed anymore as Icinga 2 isn't PID 1 anymore.
2020-12-14 13:38:35 +01:00
Alexander A. Klimov f04387a973 FireSuppressedNotifications(const Notification::Ptr&): don't send notifications while suppressed by checkable
... e.g. if a notification enters its time period (not suppressed anymore),
but its checkable has entered a downtime (suppressed).

refs #8509
2020-12-14 13:28:53 +01:00
Alexander A. Klimov 5547488cd5 Introduce Checkable#NotificationReasonSuppressed()
refs #8509
2020-12-14 13:27:58 +01:00
Alexander Aleksandrovič Klimov 915a3c3001
Merge pull request #8436 from Icinga/bugfix/children-recover-too-late
On recovery: re-check children
2020-12-11 15:41:31 +01:00
Noah Hilverling 2bad55efc7 Fix runtime config updates not working for objects without zone
refs #8533
2020-12-10 16:08:55 +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 4c0247c02d Allow specifying a CRL in `icinga2 pki verify` 2020-12-09 12:12:01 +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
Julian Brost f2a532de32
Merge pull request #8035 from Icinga/feature/expiry-date-comments-4663
/v1/actions/add-comment: add param expiry
2020-12-04 15:48:50 +01:00
Alexander Aleksandrovič Klimov 6f33c2f90c
Merge pull request #8314 from Icinga/feature/add-support-influxdb-basic-auth-7644
Add support Influxdb basic auth
2020-12-03 11:00:04 +01:00
Yonas Habteab 2ade57bcbb Add support influxdb basic auth
fixes #7644
2020-12-02 16:48:03 +01:00
Alexander A. Klimov 854939a8ce On recovery: re-check children 2020-12-02 12:24:40 +01:00
Alexander A. Klimov 668bf06424 Don't fire suppressed notifications if last parent recovery >= last check result 2020-12-02 12:03:19 +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
Alexander Aleksandrovič Klimov 3f4b09f01c
Merge pull request #8488 from Icinga/feature/improve-config-sync-locking
Improve config sync locking
2020-11-27 17:55:15 +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
Alexander Aleksandrovič Klimov 81ed8d5629
Merge pull request #8321 from Icinga/bugfix/cant-create-api-user-w-password-8164
Allow to create API User w/ password
2020-11-25 15:40:07 +01:00
Alexander A. Klimov 1343fd538d Start ApiListener#SyncClient() in the thread pool
... not hosting the coroutines not to block them.

Otherwise a large replay log would block messages sending
until the peer disconnects us.
2020-11-24 17:25:43 +01:00
Alexander Aleksandrovič Klimov 3dcc6c32f3
Merge pull request #8479 from Icinga/bugfix/close-anonymous-connections
Close anonymous connections after 10 seconds
2020-11-24 16:44:09 +01:00
Julian Brost 2a2924855f
Merge pull request #7922 from Icinga/feature/http-status-codes-in-icinga-mainlog-7053
Include HTTP status codes in log
2020-11-24 16:35:58 +01:00
Julian Brost da407660f2
Merge pull request #8500 from Icinga/bugfix/config-sync-only-remove-files-if-timestamp-changed
Config sync: Only remove files, if timestamp changed
2020-11-24 16:34:12 +01:00
Julian Brost c154d4d50e
Merge pull request #8466 from Icinga/feature/one-connection
ApiListener#NewClientHandlerInternal(): reject connections from already connected endpoints
2020-11-24 16:33:15 +01:00
Noah Hilverling 83b4d8e69d Config sync: Only remove files, if timestamp changed 2020-11-24 10:44:38 +01:00
Alexander Aleksandrovič Klimov 39bc1590f6
Merge pull request #8440 from Icinga/bugfix/message-routing-for-global-zones
Fix cluster message routing for global zones
2020-11-24 10:41:17 +01:00
Alexander Aleksandrovič Klimov e84a4a290d
Merge pull request #8450 from Icinga/bugfix/do-not-accept-api-updates-for-unknown-zone
API: Don't accept object updates for unknown global zone
2020-11-24 10:40:20 +01:00
Alexander A. Klimov 5cfac1f643 Fix function and variable names
refs #8034
2020-11-23 16:43:47 +01:00
Alexander A. Klimov fa61711c21 Introduce ReportIdoCheck()
... for code deduplication

refs #8034
2020-11-23 16:40:32 +01:00
Alexander A. Klimov 0ad1ab20aa Fix code style
refs #8034
2020-11-23 16:39:24 +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 70c9d49ebc ApiListener: merge new config validation and actication functions
Merge AsyncTryActivateZonesStage and TryActivateZonesStageCallback and
name the result TryActivateZonesStage. The old split was a leftover from
the one being a callback function with no actual meaningful separation.
2020-11-17 09:37:13 +01:00
Noah Hilverling 2d1980c10d
Merge pull request #8476 from Icinga/docs/api-action-api-function
Clarify difference between API actions and functions in their docstrings
2020-11-17 08:17:05 +01:00
Julian Brost e4610e7dbd Use std::mutex instead of Spinlock 2020-11-16 17:38:03 +01:00
Julian Brost 74b65f1642 API filesync: wait for validation process to exit
This avoid having to pass a lock implictly using the captured variables
of a lambda.
2020-11-16 17:10:57 +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 66c4dc35a8
Merge pull request #7931 from Icinga/feature/program_version-livestatus-7895
Livestatus: append app name to program_version
2020-11-13 17:08:11 +01:00
Julian Brost d1edcb909c Close anonymous connections after 10 seconds
Anonymous connections are normally only used for requesting a
certificate and are closed after this request is received. However, the
request is only sent if the child has successfully verified the
certificate of its parent so that it is an authenticated connection from
its perspective. In case this verification fails, both ends view it as
an anonymous connection and never actually use it but attempt a
reconnect after 10 seconds leaking the connection. Therefore close it
after a timeout.
2020-11-12 18:01:11 +01:00
Alexander Aleksandrovič Klimov 8ca765d730
Merge pull request #8455 from Icinga/bugfix/replay-object-deletion
Log config object deletions to replay log
2020-11-12 15:08:55 +01:00
Julian Brost 01a278bb5e Clarify difference between API actions and functions in their docstrings 2020-11-12 14:23:41 +01:00
Noah Hilverling 5f6042d92f Fix 'emoving' typo 2020-11-09 16:35:16 +01:00
Julian Brost cb476172ec Fix cluster message routing for global zones
RelayMessageOne used to relay the message only to one other endpoint for
other zones, which is fine, as long as the target zone is a child/parent
zone but breaks if the target zone is a global one. In this case, the
message has to be forwarded within the local zone as well as to one node
in each child zone.
2020-11-09 15:43:43 +01:00
Julian Brost be53b0af9e Log config object deletions to replay log
The initial config object sync for each new connection (in
`ApiListener::SendRuntimeConfigObjects()`) only considers currently
existing objects and has no way to pass the information that objects
were deleted in the meantime.

This commit logs config object deletions to the replay log if required
so that there is a chance that it will be propagated to nodes that were
offline when the deletion happened.

Note that this can only be considered a workaround as the replay log
might be pruned or could even be completely disabled. Also, there still
seems to be a race-condition between the config sync and replay log of
multiple new connections at the same time.
2020-11-09 14:09:44 +01:00
Alexander A. Klimov 29e5d7def7 Include HTTP status codes in log
refs #7053
2020-11-09 10:20:13 +01:00
Noah Hilverling 8ba5f72533 API: Don't accept object updates for unknown zone 2020-11-06 17:27:10 +01:00
Alexander A. Klimov 20b7c395ba Relativize future removals of deprecated features
... as (of course) we won't remove them as long as
it's easier than not removing them.
2020-11-06 12:31:10 +01:00
Alexander Aleksandrovič Klimov 1450e1bb7f
Merge pull request #8108 from Icinga/bugfix/api-incorrect-response-header-6747
API: Send Content-Type as api response header too
2020-11-03 18:50:31 +01:00
Alexander Aleksandrovič Klimov 939f4591a4
Merge pull request #8087 from Icinga/bugfix/log-cout-permission-error-8086
Display Logmessage if an permission error occurs
2020-11-03 17:23:06 +01:00
Yonas Habteab 488e6bfb67 HTTP Request: Log an exception message if an error occurs 2020-11-02 15:01:48 +01:00
Alexander Aleksandrovič Klimov 4f6fecc74c
Merge pull request #8101 from Icinga/bugfix/timestamps-checkresult-differ-across-nodes-8092
State timestamps set by the same check result differ across nodes
2020-10-30 17:24:15 +01:00
Alexander Aleksandrovič Klimov 1b9f161aea
Merge pull request #8123 from MEschenbacher/confirmingstrings
ido_pgsql: do not set standard_conforming_strings to off
2020-10-29 17:06: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
Maximilian Eschenbacher d8089560dd ido_pgsql: do not set standard_conforming_strings to off
Before postgres 9.1, this setting defaulted to off and icinga2 code was
making heavy use of this feature. Since postgres 9.1, this settings
defaults to on. During the adoption of postgres >= 9.1, the icinga2
postgres ido code maintained compatibility by setting it to off
explicitly.

In the mean time, the postgres ido code has been converted to using the
`E'...'` escape literal syntax exclusively.

The last remaining step is now to no longer force the setting to off
because no query is using the feature any longer.

Closes github issue #8122.
2020-10-29 16:28:18 +01:00
Alexander Aleksandrovič Klimov a226db4f17
Merge pull request #8245 from Ragnra/bugfix/opentsdb-tag-doublespace-8244
Fixes an issue with opentsdb and a double space
2020-10-29 16:23:01 +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 Aleksandrovič Klimov 1e281b060a
Merge pull request #7952 from Icinga/fix/SO_REUSEPORT-optional
apilistener: Make SO_REUSEPORT optional
2020-10-29 15:56:56 +01:00
Alexander Aleksandrovič Klimov 3fa1eab344
Merge pull request #7736 from froehl/7735
API-Event StateChange & CheckResult: Added acknowledgement and downtime_depth…
2020-10-29 13:41:52 +01:00
Alexander A. Klimov bb851b0558 Merge branch 'master' into feature/v1-actions-execute-command-8034 2020-10-28 18:37:08 +01:00
Alexander A. Klimov 38110e55d3 ApiListener#NewClientHandlerInternal(): reject connections from already connected endpoints 2020-10-26 15:20:58 +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 A. Klimov 40ac05c182 Introduce Endpoint#capabilities
refs #8034
2020-10-19 13:04:20 +02:00
Alexander A. Klimov 9e29936b8f Fix missing include
refs #8034
2020-10-19 13:04:20 +02:00
Alexander Aleksandrovič Klimov f60ae93717
Merge pull request #7870 from Icinga/bugfix/last-zone-sync-stage-validation-failed-7642
Clear ApiListener#last_failed_zones_stage_validation on config::Update if config not changed
2020-10-19 12:31:01 +02:00