Michael Friedrich
eee4426dcb
Merge pull request #6622 from Icinga/bugfix/ido-pgsql-cleanup-timestamp-utc
...
Ensure to use UTC timestamps for IDO PgSQL cleanup queries
2018-09-17 11:20:49 +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
05f7e0dae8
Merge pull request #6621 from Icinga/bugfix/ido-remove-unused-timestamp-function
...
Remove unused timestamp function in DB IDO
2018-09-17 11:16:47 +02:00
Michael Friedrich
5d36546a99
Ensure to use UTC timestamps for IDO PgSQL cleanup queries
...
refs #6584
2018-09-17 11:06:54 +02:00
Michael Friedrich
c0c17fc340
Remove unused timestamp function in DB IDO
...
refs #6584
2018-09-17 10:06:30 +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
c8d4e785a1
Merge pull request #6519 from Icinga/fix/erroneous-console-exit
...
Reset terminal on erroneous console exit
2018-09-13 13:34:58 +02:00
Michael Friedrich
af1f2e0c55
Only check for Problem types in user filers for Recovery/Acknowledgement notifications
...
refs #6047
2018-09-12 17:09:15 +02:00
Noah Hilverling
834e37d3e2
Still notify on acknowledgement and recovery if user does not get problem notifications at all
...
refs #6047
2018-09-12 14:54:45 +02:00
Noah Hilverling
bfe7d46a68
Only send acknowledgement notification if user received a problem notification
...
refs #6047
2018-09-12 14:54:45 +02:00
Michael Friedrich
dd59964702
Merge pull request #6596 from Icinga/bugfix/gcc-8-f28-hardening-crash
...
Fix crash on API queries with Fedora 28 hardening and GCC 8
2018-09-11 20:44:12 +02:00
Michael Friedrich
f297881e23
Call SSL_shutdown() at least twice
2018-09-10 16:10:16 +02:00
Noah Hilverling
3854ed683b
Improve TLS handshake exception logging
2018-09-06 15:58:42 +02:00
Michael Friedrich
1f4f6282c7
Fix crash on API queries with Fedora 28 hardening and GCC 8
...
The actual fix is to handle nullptr references differently
for an empty filter expression. The other changes include
oob checks not necesarily involved.
fixes #6533
2018-09-06 09:56:04 +02:00
Michael Friedrich
9a75f47fc5
Allow to configure anonymous clients limit inside the ApiListener object
...
Previously this was hardcoded, and for security reasons users might want
to adjust this value. This affects CSR signing requests as well as
clients which have not yet been configured as endpoints on the current
node.
refs #6566
2018-09-05 17:45:35 +02:00
Michael Friedrich
a1ec919f5b
Raise the message size for anonymous client and pki request calls to 1MB
...
If one sends the full certificate chain, this previous limit of 64KB
could be hit.
2018-09-05 17:44:05 +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
Jean Flach
8fe490f945
Update variable names
2018-09-04 11:45:35 +02:00
Markus Frosch
13a8fa20f9
Ensure that config object types are committed in dependent load order
2018-09-04 11:45:35 +02:00
Jean Flach
c721c302cd
Shuffle items before config validation
2018-09-04 11:10:27 +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
Gunnar Beutner
17c7131177
Move new downtime constants into the Icinga namespace
2018-08-25 19:35:01 +02:00
Alan Jenkins
a21166dcf8
Fix logging under systemd
...
icinga2.service used `-e ${ICINGA2_ERROR_LOG}`, but this is documented
as having no effect without `-d`. Furthermore, icinga2 under systemd
unconditionally logged everything to the system log (but without setting
the log level etc), which contradicted the documentation. (Issue #6339 )
Stop icinga2 on systemd from logging to stdout - and hence the system log -
once it has finished starting up. Just like when you start icinga2 from a
terminal using `-d`. And just like -d, we stop logging fatal errors to
stderr, and instead write to the log file passed with `-e`.
As per docs, mainlog (icinga2.log) is already enabled by default. And
pre-startup messages including config errors will still appear in the
system log.
This uses a new option --close-stdio, which has the same effect on logging as
--daemonize, but does not fork or call setsid().
For this purpose, I moved setsid() up and into Daemonize().
Consequence of that last point: if anyone is weird enough to specify a TTY
device file as the fatal error log (-e option), that will become icinga's
controlling terminal, which you generally don't want as a daemon. This
makes it consistent with the existing behaviour for icinga mainlog. For
this reason you're supposed to use O_NOCTTY in Linux daemons. But I wasn't
sure where icinga would want to put the ugly `#ifdef _WIN32 ... #else ...`.
2018-08-25 10:21:06 +01:00
Alan Jenkins
50463a6a10
Daemonize(): use one error convention, not three
...
Standardize on exit() / _exit() (this depends whether we are considered
to be the "main" fork, which should run anything registered with atexit()).
Exclude `return false` and throwing exceptions.
This fixes the error path for fork(). Daemonize() would return false, but
the `return false` error convention was not tested in the caller.
It also fixes the error message for fork() to show the error code.
Everyone loves `strace`, but sysadmins should not have to rerun their
daemons under it just to see an error code.
Also in case an exception is thrown, show its diagnostic information
instead of dropping it on the floor. In the log message, I mention why we
are uninitializing and then initializing the app at this point.
For the reader, it pushes all the weirdness into the error convention of
Daemonize(). This comes back to the exit() / _exit() distinction. Once
we have forked, we technically don't want to allow the parent process to
exit(), so we don't want to return to the caller.
2018-08-25 10:07:02 +01: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
Noah Hilverling
01fea22c77
Add child_options to ScheduledDowntime
...
refs #3935
2018-08-24 14:29:39 +02:00
Michael Friedrich
237fd520db
Merge pull request #6509 from gunnarbeutner/feature/real-constants
...
Implement support for namespaces
2018-08-24 12:10:10 +02:00
Michael Friedrich
7a22113f86
Merge pull request #6570 from Icinga/bugfix/tls-anonymous-clients-limit
...
Increase limit for simultaneously connected anonymous TLS clients
2018-08-23 17:13:41 +02:00
Michael Friedrich
0dd168fe80
Increase limit for simultaneously connected anonymous TLS clients
2018-08-23 17:10:51 +02:00
Michael Friedrich
6a71b75f63
ApiListener: Dump the state file port detail as number
...
refs #6511
2018-08-22 12:57:47 +02: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
060a1ebbd9
Merge pull request #6512 from Icinga/feature/sni-environment
...
Refactor environment for API connections
2018-08-10 13:15:48 +02:00
Michael Friedrich
2ee6dfaf93
Re-add environment to IcingaApplication feature stats
2018-08-10 13:01:53 +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
Michael Friedrich
a4c689e5cf
Build fix for CentOS 7 and non-unity builds
2018-08-09 16:23:24 +02:00
Michael Friedrich
b350512b11
Rename to Environment constant
2018-08-09 13:19:33 +02:00
Markus Frosch
eb02d9041d
Refactor environment for API connections
...
* Const renamed to `ApiEnvironment`
* Handling moved to ApiListener
* Now a property of ApiListener
2018-08-09 13:19:33 +02:00
Michael Friedrich
f1e7e635a2
Merge pull request #6531 from Icinga/feature/zone-all_parents
...
Expose Zone#all_parents via API
2018-08-09 13:11:23 +02:00
Michael Friedrich
3cc8bd2fcc
Merge pull request #6511 from Icinga/feature/apilistener-dynamic-port
...
ApiListener: Add support for dynamic port handling
2018-08-09 12:09:23 +02:00
Michael Friedrich
ecb73e08ed
Implement ApiListener status file removal on shutdown
2018-08-09 11:54:34 +02:00
Noah Hilverling
7b977b2c52
Do not send 'finished reconnecting...' if failed
2018-08-09 08:29:27 +02:00
Markus Frosch
20269a89d0
ApiListener: Add support for dynamic port handling
2018-08-08 17:42:57 +02:00
Michael Friedrich
ba21a54443
Merge pull request #6530 from Icinga/bugfix/query-was-empty
...
IDO/MySQL: avoid empty queries
2018-08-08 14:41:57 +02:00
Alexander A. Klimov
ea5614f7df
Expose Zone#all_parents via API
2018-08-08 14:38:02 +02:00
Alexander A. Klimov
7bcbd9b497
Rename Zone#GetAllParents() to Zone#GetAllParentsRaw()
2018-08-08 14:38:02 +02:00
Alexander A. Klimov
7a31cd4fe7
IDO/MySQL: avoid empty queries
2018-08-08 12:11:37 +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
Michael Friedrich
a2a1f5c8d2
Take a note why the explicit configDir variable is needed on Windows
2018-08-07 18:33:59 +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 Insel
eea42c6807
Fix windows build
2018-08-05 20:17:43 +02:00
Michael Insel
51b900b307
Reset terminal on erroneous console exit
...
This ensures that the terminal is resetted on an erroneous exit when using the Icinga 2 console.
refs #6382
2018-08-05 16:30:36 +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
Christopher Schirner
b870e84904
Only check lag if connected
2018-07-31 10:41:14 +02:00
Christopher Schirner
35038f72d6
Invert connected check
2018-07-31 10:40:54 +02:00
Peter Eckel
b5a7af126d
Fixed indentation
2018-07-29 15:39:02 +02:00
Peter Eckel
f788795415
Reduce the log level for missing env macros to debug
...
refs #6460
2018-07-29 15:17:50 +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
Jean Flach
a5afaf5b40
Merge pull request #6497 from Icinga/bugfix/match-dictionary-error-handling
...
Improve error logging for match/regex/cidr_match functions and unsupported dictionary usage
2018-07-27 17:26:12 +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
Michael Friedrich
1d22b6e176
Merge pull request #6410 from Icinga/remove-dead-code
...
Remove unused code
2018-07-27 15:56:52 +02:00
Michael Friedrich
b16d96d197
Merge pull request #6489 from Icinga/feature/object-packer
...
Implement object packer for consistent hashing
2018-07-27 12:49:28 +02:00
Alexander A. Klimov
dd8cb42969
Implement object packer for consistent hashing
2018-07-26 17:36:48 +02:00
Markus Frosch
ddc5b951b3
Revert "Implement support for the --env command-line argument"
2018-07-26 17:09:06 +02:00
Michael Friedrich
46e71a83dc
Merge pull request #6414 from Icinga/feature/icinga-envs
...
Implement support for the --env command-line argument
2018-07-26 10:09:42 +02:00
Michael Friedrich
e519d6bbc6
Merge pull request #6110 from gunnarbeutner/feature/for-loop-var
...
Implement support for optionally specifying the 'var' keyword in 'for' loops
2018-07-26 10:05:17 +02:00
Michael Friedrich
272176e2d0
Merge pull request #6475 from dh-harald/master
...
lib->compat->statusdatawriter: fix notifications_enabled
2018-07-26 10:03:57 +02:00
Michael Friedrich
3fc3d86fbb
Merge pull request #6386 from Icinga/fix/timeperiods-do-not-clear-after-restart
...
Fix that TimePeriod segments are not cleared on restart
2018-07-26 10:02:46 +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
038b2fb94c
Merge pull request #6379 from Icinga/global-zone-validation
...
Throw config error when using global zones as parent
2018-07-26 10:01:46 +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
89d42fee72
Merge pull request #6440 from Icinga/bugfix/typo
...
Fix typo
2018-07-26 09:59:20 +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
45a0518c78
Merge pull request #6458 from Icinga/bugfix/configitem-debug-log
...
Fix debug build log entry for ConfigItem activation priority
2018-07-26 09:57:19 +02:00
Michael Friedrich
5a8e98213c
Merge pull request #6487 from Icinga/bugfix/discard-warning-6485
...
Fix "Discard" message being warning
2018-07-26 09:52:33 +02:00
Jean Flach
2b44eff8da
Fix "Discard" message being warning
2018-07-26 09:39:03 +02:00
dh.harald
d9d701a05c
lib->compat->statusdatawriter: fix notifications_enabled
2018-07-23 22:28:09 +01: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
fc2da5047c
Fix debug build log entry for ConfigItem activation priority
...
This is not visible in release builds, minor fix.
2018-07-19 12:53:28 +02:00