Commit Graph

429 Commits

Author SHA1 Message Date
Gunnar Beutner b735aae321 Windows build fix. 2013-02-05 13:19:01 +01:00
Gunnar Beutner 7a150d2c29 Validate config objects before trying to activate them.
Fixes #3619
2013-02-05 13:06:42 +01:00
Gunnar Beutner c4293cfa25 Added init script.
Fixes #3114
2013-02-04 12:52:39 +01:00
Gunnar Beutner 00fb17880c Fixed default paths for icinga2.state and icinga2.pid files. 2013-02-04 09:48:37 +01:00
Gunnar Beutner 745e86de97 Service::CheckCompletedHandler: Convert exceptions to fake check results. 2013-02-03 16:32:31 +01:00
Gunnar Beutner b997462eef Bugfix: Crash while reloading config
Fixes #3621
2013-02-03 15:47:11 +01:00
Gunnar Beutner a88d9b5646 Print DebugInfo for failed #includes
Fixes #3613
2013-02-03 01:41:00 +01:00
Gunnar Beutner 383d2369b1 Bugfix: Make sure Utility::Glob return false if no matching files were found. 2013-02-03 01:30:19 +01:00
Gunnar Beutner 5774792a23 Implemented --version and made --help output prettier. 2013-02-03 01:21:11 +01:00
Gunnar Beutner dbf762e771 Use boost::program_options to parse arguments.
Fixes #3536
Fixes #3184
2013-02-02 23:22:27 +01:00
Gunnar Beutner f2e17bdd09 Fixed compiler warnings (-Wextra). 2013-02-02 22:13:54 +01:00
Gunnar Beutner 5438c86e76 Throw exception in Utility::ToDouble/Utility::ToLong
Fixes #3617
2013-02-02 20:19:00 +01:00
Gunnar Beutner b19f88e8b8 Removed some debug output. 2013-02-02 20:06:56 +01:00
Gunnar Beutner f9ea72ddb1 Bugfix: Don't copy the enable_checks attribute to child services. 2013-02-02 20:05:18 +01:00
Gunnar Beutner b74c2c8a68 Removed the old-style validation code. 2013-02-02 20:03:30 +01:00
Gunnar Beutner 628d8374c7 Bugfixes for the type validation feature. 2013-02-02 20:03:24 +01:00
Gunnar Beutner 33aba14197 Implement type keyword in the config compiler
Fixes #3616
2013-02-02 14:28:11 +01:00
Gunnar Beutner 18f935cfa2 Added missing const qualifiers. 2013-02-02 09:19:49 +01:00
Gunnar Beutner 11cf07fa9c Config: implement support for wildcard includes
Fixes #2771
2013-02-02 00:32:18 +01:00
Gunnar Beutner 04fd703e6a Windows build fix. 2013-02-01 23:10:48 +01:00
Gunnar Beutner 00b827d5cf Implement search dirs for #include.
Fixes #3599
2013-02-01 22:44:58 +01:00
Gunnar Beutner 66f28ae02b Build fix for Windows. 2013-02-01 19:36:47 +01:00
Gunnar Beutner 5492d6fac3 Bugfix: Unhandled exception in Service::CheckTimerHandler.
Fixes #3607
2013-02-01 19:27:36 +01:00
Gunnar Beutner 05d0dc5683 Display "debug message" for exceptions (in addition to SIGABRT). 2013-02-01 19:11:15 +01:00
Gunnar Beutner 8a469e190f Fixed some more compiler warnings (when using -Wall). 2013-02-01 19:02:07 +01:00
Gunnar Beutner ee6ba4e5e9 Bug: clearing attributes should only reset their value and tx rather than deleting them entirely
Fixes #3604
2013-02-01 19:01:51 +01:00
Gunnar Beutner 7835563e03 Fixed some compiler warnings. 2013-02-01 15:44:03 +01:00
Gunnar Beutner df1199f206 Updated messages in the SIGABRT handler. 2013-02-01 14:46:06 +01:00
Gunnar Beutner 6c0a6a2207 Removed assert()s in ConfigItemBuilder::Compile. 2013-02-01 14:45:55 +01:00
Gunnar Beutner 0ca8012079 Made warning and critical messages bold. 2013-02-01 14:21:11 +01:00
Gunnar Beutner 886fd3a5b8 Implemented colored log messages. 2013-02-01 14:12:24 +01:00
Gunnar Beutner f5a3dc4d84 Config: Warn about unknown attributes. 2013-02-01 14:11:22 +01:00
Gunnar Beutner e928b1fabf Bugfix: Missing parent object causes assert in ReplicationComponent::Stop
Fixes #3601
2013-02-01 11:46:52 +01:00
Gunnar Beutner 070607a1d1 Implement Service::OnCheckResultReceived, rename ServiceStateChangeMessage to CheckResultMessage
Fixes #3597
2013-01-31 16:51:50 +01:00
Gunnar Beutner 15b260d75e Don't use exceptions in CommentProcessor::Get*.
Fixes 3595
2013-01-31 16:23:02 +01:00
Gunnar Beutner 768fd50703 Config: Changing a template ConfigItem must cause child ConfigObjects to be updated.
Fixes #2791
2013-01-31 15:26:54 +01:00
Gunnar Beutner 9862ab5324 Implement triggered downtime for services.
Fixes #3583
2013-01-31 13:57:14 +01:00
Gunnar Beutner 24e2d1d3f2 Use boost::lexical_cast instead of stringstreams. 2013-01-31 10:10:51 +01:00
Gunnar Beutner e967d931fd Fixed building with --disable-shared. 2013-01-30 23:52:11 +01:00
Gunnar Beutner a4451abad3 Fixed indentation bug in Expression::DumpValue(). 2013-01-30 23:15:37 +01:00
Gunnar Beutner eab6411892 Config: Implement dumping the config in text form
Fixes #2754
2013-01-30 23:02:46 +01:00
Gunnar Beutner b27465feae Fixed incorrect parameters for memset(). 2013-01-30 20:49:25 +01:00
Gunnar Beutner 7b03c77b66 Bugfix: some legacy_id changes didn't cause the cache to get updated. 2013-01-30 15:24:02 +01:00
Gunnar Beutner 49cc9f5898 Remove expired comments and downtimes. 2013-01-30 14:28:13 +01:00
Gunnar Beutner 4b5d91caad Implement external commands SCHEDULE_HOSTGROUP_SVC_DOWNTIME and SCHEDULE_SERVICEGROUP_HOST_DOWNTIME
Fixes #3582
2013-01-30 13:23:00 +01:00
Gunnar Beutner 3fb8c05a50 Make sure comment/downtime legacy IDs are always unique (even in a cluster context). 2013-01-30 13:02:20 +01:00
Gunnar Beutner ff0e6d91d2 Move exception_handler into libbase. Add handler for SIGABRT.
Fixes #3590
2013-01-30 11:51:15 +01:00
Gunnar Beutner c9bcc5c8bd Bugfix: Loading state files was broken.
Fixes #3562
2013-01-30 10:53:06 +01:00
Gunnar Beutner 6e119dafee Use UUIDs to uniquely identify comments and downtimes. 2013-01-30 09:59:22 +01:00
Gunnar Beutner 7c65757219 Implement Utility::NewUUID().
Fixes #3589
2013-01-30 09:08:48 +01:00
Gunnar Beutner d71de9f6cf Updated VS project files. 2013-01-29 16:37:44 +01:00
Gunnar Beutner c7550971fe Implemented comments.
Fixes #3558
2013-01-29 16:29:09 +01:00
Gunnar Beutner 08bb9470b3 Updated VS project files. 2013-01-29 15:47:38 +01:00
Gunnar Beutner e5ee9b9ea9 Renamed ExternalCommand to ExternalCommandProcessor.
Fixes #3579
2013-01-29 15:47:38 +01:00
Gunnar Beutner d753a0c9cd Bugfix: DowntimeProcessor::AddDowntime() should return new downtime ID. 2013-01-29 15:47:38 +01:00
Gunnar Beutner 07a1249a97 Add some more missing files. 2013-01-29 15:47:38 +01:00
Gunnar Beutner 4643444913 Added missing files. 2013-01-29 15:47:38 +01:00
Gunnar Beutner 8e8e607b2e Implement downtimes.
Fixes #2833
2013-01-29 14:19:54 +01:00
Gunnar Beutner 3dcd94896d Allow T_STRING for dictionary keys.
Fixes #3581
2013-01-29 12:40:00 +01:00
Gunnar Beutner 76f37c1d71 Implement Convert class, move existing type conversion functionality there
Fixes #3580
2013-01-29 12:05:46 +01:00
Gunnar Beutner c563736588 Schedule pending services using the retry interval. 2013-01-28 13:40:05 +01:00
Gunnar Beutner 366b1d1435 Decreased minimum check interval to 5 seconds. 2013-01-28 09:48:20 +01:00
Gunnar Beutner 3ffe8707ab Fix string_iless performance issue. 2013-01-28 09:43:54 +01:00
Gunnar Beutner 2e78899347 Implement statistics for passive service checks. 2013-01-28 09:01:47 +01:00
Gunnar Beutner 1bbd9d629e Use check interval (rather than retry interval) when rescheduling passive checks. 2013-01-28 08:31:29 +01:00
Gunnar Beutner a77aa596a8 Reschedule services after receiving passive check results. 2013-01-27 12:13:45 +01:00
Gunnar Beutner dbe1e7cdd5 Fixes host acknowledgement commands. 2013-01-27 12:02:22 +01:00
Gunnar Beutner e10d4f6b8b Bugfix: null derefence in Service::ApplyCheckResult. 2013-01-27 11:49:23 +01:00
Gunnar Beutner ce49e3856b Added missing host attributes. 2013-01-27 11:45:51 +01:00
Gunnar Beutner ae17878596 Implemented host acknowledgements. 2013-01-27 11:35:47 +01:00
Gunnar Beutner 8d8d1d8cd8 Reschedule service dependencies on soft state changes.
Fixes #3574
2013-01-25 16:21:21 +01:00
Gunnar Beutner b79f966b53 Performance improvements for *Group::GetMembers(). 2013-01-25 12:46:49 +01:00
Gunnar Beutner 9413466cef Disallow DynamicObject::Set() for config variables.
Fixes #3573
2013-01-25 10:12:55 +01:00
Gunnar Beutner 0449c66afc Build fix for *NIX. 2013-01-24 23:43:34 +01:00
Gunnar Beutner 54ffa0a144 Implement the PROCESS_FILE external command. 2013-01-24 23:42:02 +01:00
Gunnar Beutner 335a0b3067 Implement support for enabling/disabling passive checks. 2013-01-24 23:11:54 +01:00
Gunnar Beutner 3d0a3bb874 Build ExternalCommand class on Windows (even though it's currently unused). 2013-01-24 20:53:42 +01:00
Gunnar Beutner 0d15141c7d Build fix for FreeBSD. 2013-01-24 20:49:55 +01:00
Gunnar Beutner bbbdb41581 Finish implementing ExternalCommand::EnableHostgroupSvcChecks and ExternalCommand::DisableHostgroupSvcChecks
Fixes #3566
2013-01-24 15:12:32 +01:00
Gunnar Beutner b3e7dc32e9 Implement Host::GetServices().
Fixes #3565
2013-01-24 15:10:40 +01:00
Gunnar Beutner a0e7f751cd Added missing *::InvalidateMembersCache() calls. 2013-01-24 15:01:06 +01:00
Gunnar Beutner ab66fbfc88 Implemented the external commands "ENABLE_SERVICEGROUP_SVC_CHECKS", "DISABLE_SERVICEGROUP_SVC_CHECKS" and parts of "ENABLE_HOSTGROUP_SVC_CHECKS", "DISABLE_HOSTGROUP_SVC_CHECKS". 2013-01-24 13:39:42 +01:00
Gunnar Beutner ad5256588d Implemented ServiceGroup::GetMembers() and HostGroup::GetMembers(). 2013-01-24 13:21:35 +01:00
Gunnar Beutner 19d654b7c2 Remove stale subscriptions from local endpoint
Fixes #3563
2013-01-24 10:21:26 +01:00
Gunnar Beutner 1bbdfa2413 Config: Implement true/false as aliases for 1/0
Fixes #3551
2013-01-24 10:08:03 +01:00
Gunnar Beutner 99e58f7031 Windows fix for ConfigCompiler::ReadInput. 2013-01-23 21:58:19 +01:00
Gunnar Beutner 116e420167 Don't allow acknowledgements for services that are OK. 2013-01-23 16:18:58 +01:00
Gunnar Beutner 495caa664a Fixed ExternalCommand::ScheduleHostSvcChecks(). 2013-01-23 16:07:55 +01:00
Gunnar Beutner e334f126c8 Checker: don't report missed checks after restarting Icinga
Fixes #3253
2013-01-23 15:28:32 +01:00
Gunnar Beutner 1be64b9290 Bugfixes for acknowledgements. 2013-01-23 13:46:35 +01:00
Gunnar Beutner 249b19a69a Implement acknowledgements.
Fixes #3557
2013-01-23 13:21:07 +01:00
Gunnar Beutner bccb7ef615 Implemented the external commands "ENABLE_HOST_SVC_CHECKS" and "DISABLE_HOST_SVC_CHECKS". 2013-01-23 10:51:54 +01:00
Gunnar Beutner e6e0d69e43 Implement the external commands "SCHEDULE_FORCED_HOST_SVC_CHECKS" and "SCHEDULE_HOST_SVC_CHECKS". 2013-01-23 10:47:50 +01:00
Gunnar Beutner c99d4b19a9 Throw exception for missing types. 2013-01-23 10:41:38 +01:00
Gunnar Beutner 153ab33074 Properly deal with I/O errors when parsing config files.
Fixes #3152
2013-01-23 09:57:06 +01:00
Gunnar Beutner a63a1002a8 Implemented external command "SHUTDOWN_PROGRAM". 2013-01-22 16:24:41 +01:00
Gunnar Beutner 71ec1d2b95 Implement enable_checks property for services.
Fixes #3550
2013-01-22 16:01:08 +01:00
Gunnar Beutner f694954512 ExternalCommand: use exceptions instead of return values.
Fixes #3549
2013-01-22 15:13:51 +01:00
Gunnar Beutner 9ed49bd6e1 Implemented the external commands SCHEDULE_SVC_CHECK and SCHEDULE_FORCED_SVC_CHECK. 2013-01-22 12:56:29 +01:00
Gunnar Beutner 7e31cb639f Implement property change handler for next_check.
Fixes #3547
2013-01-22 12:44:23 +01:00
Gunnar Beutner 61f2b5f0cf Pass through timestamps to external command handlers. 2013-01-22 12:39:33 +01:00
Gunnar Beutner e887ff0550 Implemented the PROCESS_SERVICE_CHECK_RESULT external command. 2013-01-22 12:05:36 +01:00
Gunnar Beutner 20eaa441df Fixed invalid cast in Service::BeginExecuteCheck(). 2013-01-22 11:11:11 +01:00
Gunnar Beutner 8c2ab8f552 Move service check code into the Service class.
Fixes #3546
2013-01-22 11:07:09 +01:00
Gunnar Beutner c97b480b1e Implement support for anonymous multicast messages.
Fixes #3545
2013-01-22 10:14:52 +01:00
Gunnar Beutner c2c7488089 Added missing I2_ICINGA_API specifier for the TimePeriod class. 2013-01-22 10:14:08 +01:00
Gunnar Beutner 989d7139f3 Refactor scheduling stuff from *CheckTask into the checker component
Fixes #3067
2013-01-22 09:40:37 +01:00
Gunnar Beutner 02de634c12 Implement REGISTER_SCRIPTFUNCTION() and clean up how check types are registered. 2013-01-22 09:21:50 +01:00
Gunnar Beutner 7dc761236d Remove InitializeLibrary TODO.
Closes #3538
2013-01-22 09:04:36 +01:00
Gunnar Beutner c20ae866b7 Implemented support for external commands. 2013-01-22 08:34:29 +01:00
Gunnar Beutner 54ce8d51d8 Implement support for time periods. 2013-01-21 13:47:36 +01:00
Gunnar Beutner 9c74bfd5be Implement String::ToDouble().
Fixes #3544.
2013-01-21 13:44:17 +01:00
Gunnar Beutner 8f2aea6958 Made String::Split() const. 2013-01-21 13:29:00 +01:00
Gunnar Beutner 5b4712c55b Fixed incorrect argument name. 2013-01-21 13:21:10 +01:00
Gunnar Beutner 853dbfa82e Implemented command pipe (sort of). 2013-01-21 13:08:08 +01:00
Gunnar Beutner 9074a384fd Fix: replicated & local endpoints should not have local: prefix. 2013-01-18 10:37:22 +01:00
Gunnar Beutner 51bad2d2a6 Fix: DynamicObject::Unregister() failed to unregister objects. 2013-01-18 09:55:05 +01:00
Gunnar Beutner 5a7aeb1f19 Fix: Endpoints were not properly marked as local. 2013-01-18 09:37:27 +01:00
Gunnar Beutner 70c66fa542 Implemented the #library directive and fixed loading icinga.dll on Windows. 2013-01-17 15:05:34 +01:00
Gunnar Beutner 747e3e7de8 Fixed bug with invalid type in state files. 2013-01-17 15:03:44 +01:00
Gunnar Beutner ea115a2c8c Fixed DynamicObject::DumpObjects(). 2012-12-04 15:41:07 +01:00
Gunnar Beutner 28e58df3aa Removed obsolete comment. 2012-12-04 15:37:41 +01:00
Gunnar Beutner 83772d4386 Implemented DynamicType support.
Fixes #3477
2012-12-04 08:42:24 +01:00
Gunnar Beutner 18e8d4a976 Refactored IcingaApplication::Get*().
Fixes #3209, #3277
2012-11-26 08:30:52 +01:00
Gunnar Beutner 8e687ea7fe Added some more code documentation. 2012-11-26 08:29:26 +01:00
Gunnar Beutner d26af07e48 Build fix for *NIX. 2012-11-23 12:34:06 +01:00
Gunnar Beutner 0785a082e9 Minor cleanups. 2012-11-23 11:04:08 +01:00
Gunnar Beutner 334bfe388a Implemented the StdioStream and UnixSocket classes. 2012-11-23 11:03:33 +01:00
Gunnar Beutner 1055a306c9 Build fix for *NIX. 2012-11-22 12:12:24 +01:00
Gunnar Beutner 321d66023f Refactored the socket classes. 2012-11-22 12:04:32 +01:00
Gunnar Beutner 482742f00e Fixed incorrect use of boost::algorithm::is_iless. 2012-10-31 12:06:21 +01:00
Gunnar Beutner a5f361b7b6 Made type and attribute names case-insensitive.
Fixes #3223
2012-10-23 15:57:45 +02:00
Gunnar Beutner 6c32ce048e Fixed VS filters for pluginchecktask.cpp and pluginchecktask.h. 2012-10-17 12:35:18 +02:00
Gunnar Beutner 98f1244271 Fix: Added missing DLL exports for Windows. 2012-10-17 12:03:07 +02:00
Gunnar Beutner e57bf22d82 Fix: Renaming temp files didn't work on Windows.
Fixes #3216
2012-10-17 11:35:06 +02:00
Gunnar Beutner 69bf01155d Added missing GPL headers. 2012-10-16 10:41:54 +02:00
Gunnar Beutner e426548863 Bugfix: services property doesn't work when the first host definition is abstract.
Fixes #3300
2012-10-15 08:45:14 +02:00
Gunnar Beutner cfb07e9e2c Ignore Windows new-lines.
Fixes #3292
2012-10-15 08:27:07 +02:00
Gunnar Beutner ec0e319d8a Don't write local-only objects to the state file. 2012-10-12 10:16:03 +02:00
Gunnar Beutner 4e5702e31d Bugfix: Connecting to a remote node crashes Icinga2. 2012-10-11 14:17:40 +02:00
Michael Friedrich bb50720843 Configuration: add _path suffix to IcingaApplication attributes "ca" and "cert"
refs #3222
2012-10-02 15:04:17 +02:00
Michael Friedrich c2bad406ef Configuration: use underscore in attributes, document all using new locations
... from #3228

fixes #3222
2012-10-02 14:44:57 +02:00
Gunnar Beutner 115489a531 Fixed loading components when using a custom --libdir. 2012-10-02 09:26:17 +02:00
Gunnar Beutner 47fa56a805 Added methods for retrieving the installation prefix and local state dir. 2012-09-28 13:16:08 +02:00
Gunnar Beutner e55aa712b5 Made IComponent::GetConfig() usable in IComponent::Start().
Fixes #3200
2012-09-28 10:40:12 +02:00
Gunnar Beutner 5ff640fd14 Fixed Utility::Sleep on Windows. 2012-09-27 10:05:54 +02:00
Gunnar Beutner 0cb232f494 Handle some exceptions that previously caused crashes. 2012-09-27 09:58:16 +02:00
Gunnar Beutner c5479057f7 Make exception messages more verbose. 2012-09-27 09:38:28 +02:00
Gunnar Beutner 74a3bca0f6 Fixed crash in Utility::Daemonize().
Fixes #3194
2012-09-27 08:21:07 +02:00
Gunnar Beutner 426ff0b706 Added missing GPL header in scripttask.cpp. 2012-09-25 15:46:24 +02:00
Gunnar Beutner 2f0f1dcd64 Removed win32.cpp / unix.cpp files as they were no longer needed. 2012-09-25 15:45:19 +02:00
Gunnar Beutner edf812b6b5 Removed ::Sleep and implemented Utility::Sleep. 2012-09-25 15:41:43 +02:00
Gunnar Beutner e1fc41e735 Sleep for 5 seconds rather than 5 milliseconds. 2012-09-25 15:35:46 +02:00
Gunnar Beutner f8aa5f67a2 Fixed grammar mistakes. 2012-09-25 15:33:51 +02:00
Gunnar Beutner 980913d980 Properly deal with time changes (2nd attempt). 2012-09-25 15:24:14 +02:00
Gunnar Beutner c81fd071e6 Detect local time changes. 2012-09-25 14:03:41 +02:00
Gunnar Beutner a4fa8950c4 Implemented lexer rules for time durations.
Fixes #3073
2012-09-25 11:17:04 +02:00
Gunnar Beutner f53f8e64fd Renamed NagiosCheckTask to PluginCheckTask.
Fixes #3146
2012-09-25 09:08:50 +02:00
Gunnar Beutner 345ebe8061 Changed timestamp format (again).
Fixes #3153
2012-09-25 09:02:28 +02:00
Gunnar Beutner e83592582a Changed shutdown message.
Fixes #3160
2012-09-24 08:36:39 +02:00
Gunnar Beutner b9b009b6da Build fix for Windows. 2012-09-21 16:28:14 +02:00
Gunnar Beutner bb8935fe9b Added Win64 build support. 2012-09-21 16:15:36 +02:00
Gunnar Beutner 5921337b46 Merged convenience component into libicinga. 2012-09-21 13:49:14 +02:00
Gunnar Beutner 97829fbfcd Cleaned up the code a bit. 2012-09-21 09:43:06 +02:00
Gunnar Beutner c9d6728869 Build fix. 2012-09-19 13:03:17 +02:00
Gunnar Beutner 852ad5d964 Added Utility::GetPid() helper function. 2012-09-19 13:00:48 +02:00
Gunnar Beutner d98ceb7b79 Renamed default PID/state filenames. 2012-09-19 12:55:07 +02:00
Gunnar Beutner 8e2801e062 Updated documentation. 2012-09-19 12:32:39 +02:00
Gunnar Beutner ff0af9d65e Fixed more doxygen warnings. 2012-09-17 14:47:43 +02:00
Gunnar Beutner fee4246f55 Updated doxygen documentation. 2012-09-17 13:35:55 +02:00
Gunnar Beutner d4fc6fc672 Fix: Load the 'replication' component. 2012-09-17 13:32:59 +02:00
Gunnar Beutner 86c0aff719 Build fix for Windows. 2012-09-17 11:13:35 +02:00
Gunnar Beutner 0884a67ebe Fixed crash in EndpointManager::SubscriptionTimerHandler. 2012-09-17 09:47:02 +02:00
Gunnar Beutner d79a7fca0d Removed unused ThreadPool class. 2012-09-14 14:44:54 +02:00
Gunnar Beutner 063d69ed96 Added missing doc strings. 2012-09-14 14:41:17 +02:00
Gunnar Beutner 8e4bdf3872 Build fixes for Windows. 2012-09-10 14:35:01 +02:00
Gunnar Beutner 037e3d913b Refactored the libraries. 2012-09-10 14:07:32 +02:00
Gunnar Beutner c7b29c6b46 Build fix for Windows. 2012-09-07 11:46:38 +02:00
Gunnar Beutner 9bc93ce4a9 Renamed 'doc' to 'docs'.
Moved Doxygen files to docs/.
Removed cJSON directory.
Moved libraries into lib/.
Renamed 'config' to 'm4'.
Renamed 'dyn' library to 'config'.
2012-09-07 10:27:31 +02:00