From 87adc8898900dad326534afef2f218a7e64927d2 Mon Sep 17 00:00:00 2001 From: Jean Flach Date: Mon, 29 Jan 2018 14:23:53 +0100 Subject: [PATCH] Remove need for init.conf --- doc/17-language-reference.md | 10 ++--- etc/CMakeLists.txt | 4 -- etc/icinga2/init.conf.cmake | 5 --- icinga-app/icinga.cpp | 86 +++++++++++++++++++++++------------- 4 files changed, 61 insertions(+), 44 deletions(-) delete mode 100644 etc/icinga2/init.conf.cmake diff --git a/doc/17-language-reference.md b/doc/17-language-reference.md index 93991a7a2..e288c611a 100644 --- a/doc/17-language-reference.md +++ b/doc/17-language-reference.md @@ -389,8 +389,8 @@ ObjectsPath |**Read-write.** Contains the path of the Icinga 2 objects f PidPath |**Read-write.** Contains the path of the Icinga 2 PID file. Defaults to RunDir + "/icinga2/icinga2.pid". Vars |**Read-write.** Contains a dictionary with global custom attributes. Not set by default. NodeName |**Read-write.** Contains the cluster node name. Set to the local hostname by default. -RunAsUser |**Read-write.** Defines the user the Icinga 2 daemon is running as. Used in the `init.conf` configuration file. -RunAsGroup |**Read-write.** Defines the group the Icinga 2 daemon is running as. Used in the `init.conf` configuration file. +RunAsUser |**Read-write.** Defines the user the Icinga 2 daemon is running as. Set in the Icinga 2 sysconfig. +RunAsGroup |**Read-write.** Defines the group the Icinga 2 daemon is running as. Set in the Icinga 2 sysconfig. PlatformName |**Read-only.** The name of the operating system, e.g. "Ubuntu". PlatformVersion |**Read-only.** The version of the operating system, e.g. "14.04.3 LTS". PlatformKernel |**Read-only.** The name of the operating system kernel, e.g. "Linux". @@ -407,9 +407,9 @@ Variable |Description --------------------|------------------- EventEngine |**Read-write.** The name of the socket event engine, can be `poll` or `epoll`. The epoll interface is only supported on Linux. AttachDebugger |**Read-write.** Whether to attach a debugger when Icinga 2 crashes. Defaults to `false`. -RLimitFiles |**Read-write.** Defines the resource limit for RLIMIT_NOFILE that should be set at start-up. Value cannot be set lower than the default `16 * 1024`. 0 disables the setting. Used in the `init.conf` configuration file. -RLimitProcesses |**Read-write.** Defines the resource limit for RLIMIT_NPROC that should be set at start-up. Value cannot be set lower than the default `16 * 1024`. 0 disables the setting. Used in the `init.conf` configuration file. -RLimitStack |**Read-write.** Defines the resource limit for RLIMIT_STACK that should be set at start-up. Value cannot be set lower than the default `256 * 1024`. 0 disables the setting. Used in the `init.conf` configuration file. +RLimitFiles |**Read-write.** Defines the resource limit for RLIMIT_NOFILE that should be set at start-up. Value cannot be set lower than the default `16 * 1024`. 0 disables the setting. Set in Icinga 2 sysconfig. +RLimitProcesses |**Read-write.** Defines the resource limit for RLIMIT_NPROC that should be set at start-up. Value cannot be set lower than the default `16 * 1024`. 0 disables the setting. Set in Icinga 2 sysconfig. +RLimitStack |**Read-write.** Defines the resource limit for RLIMIT_STACK that should be set at start-up. Value cannot be set lower than the default `256 * 1024`. 0 disables the setting. Set in Icinga 2 sysconfig. ## Apply diff --git a/etc/CMakeLists.txt b/etc/CMakeLists.txt index bce13366b..bffca3016 100644 --- a/etc/CMakeLists.txt +++ b/etc/CMakeLists.txt @@ -15,8 +15,6 @@ # along with this program; if not, write to the Free Software Foundation # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. -configure_file(icinga2/init.conf.cmake ${CMAKE_CURRENT_BINARY_DIR}/icinga2/init.conf @ONLY) - if(NOT WIN32) configure_file(icinga2/constants.conf.cmake ${CMAKE_CURRENT_BINARY_DIR}/icinga2/constants.conf @ONLY) endif() @@ -25,8 +23,6 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") configure_file(logrotate.d/icinga2.cmake ${CMAKE_CURRENT_BINARY_DIR}/logrotate.d/icinga2 @ONLY) endif() -install_if_not_exists(${CMAKE_CURRENT_BINARY_DIR}/icinga2/init.conf ${CMAKE_INSTALL_SYSCONFDIR}/icinga2) - if(NOT WIN32) install_if_not_exists(${CMAKE_CURRENT_BINARY_DIR}/icinga2/constants.conf ${CMAKE_INSTALL_SYSCONFDIR}/icinga2) install_if_not_exists(icinga2/icinga2.conf ${CMAKE_INSTALL_SYSCONFDIR}/icinga2) diff --git a/etc/icinga2/init.conf.cmake b/etc/icinga2/init.conf.cmake deleted file mode 100644 index 22406a998..000000000 --- a/etc/icinga2/init.conf.cmake +++ /dev/null @@ -1,5 +0,0 @@ -/** - * This file is read by Icinga 2 before the main - * configuration file (icinga2.conf) is processed. - */ - diff --git a/icinga-app/icinga.cpp b/icinga-app/icinga.cpp index f40a13541..af8a1dda9 100644 --- a/icinga-app/icinga.cpp +++ b/icinga-app/icinga.cpp @@ -155,21 +155,62 @@ static int Main() Application::DeclareZonesDir(Application::GetSysconfDir() + "/icinga2/zones.d"); - String icinga_user = Utility::GetFromSysconfig("ICINGA2_USER"); - if (icinga_user.IsEmpty()) - icinga_user = ICINGA_USER; - - String icinga_group = Utility::GetFromSysconfig("ICINGA2_GROUP"); - if (icinga_group.IsEmpty()) - icinga_group = ICINGA_GROUP; - - Application::DeclareRunAsUser(icinga_user); - Application::DeclareRunAsGroup(icinga_group); -#ifdef __linux__ - Application::DeclareRLimitFiles(Application::GetDefaultRLimitFiles()); - Application::DeclareRLimitProcesses(Application::GetDefaultRLimitProcesses()); - Application::DeclareRLimitStack(Application::GetDefaultRLimitStack()); -#endif /* __linux__ */ + String icingaUser = Utility::GetFromSysconfig("ICINGA2_USER"); + if (icingaUser.IsEmpty()) + icingaUser = ICINGA_USER; + + String icingaGroup = Utility::GetFromSysconfig("ICINGA2_GROUP"); + if (icingaGroup.IsEmpty()) + icingaGroup = ICINGA_GROUP; + + Application::DeclareRunAsUser(icingaUser); + Application::DeclareRunAsGroup(icingaGroup); + +#ifdef RLIMIT_NOFILE + String rLimitFiles = Utility::GetFromSysconfig("ICINGA2_RLIMIT_FILES"); + if (rLimitFiles.IsEmpty()) + Application::DeclareRLimitFiles(Application::GetDefaultRLimitFiles()); + else { + try { + Application::DeclareRLimitFiles(Convert::ToLong(rLimitFiles)); + } catch (const std::invalid_argument& ex) { + std::cout + << "Error while parsing \"ICINGA2_RLIMIT_FILES\" from sysconfig: " << ex.what() << '\n'; + return EXIT_FAILURE; + } + } +#endif /* RLIMIT_NOFILE */ + +#ifdef RLIMIT_NPROC + String rLimitProcesses = Utility::GetFromSysconfig("ICINGA2_RLIMIT_PROCESSES"); + if (rLimitProcesses.IsEmpty()) + Application::DeclareRLimitProcesses(Application::GetDefaultRLimitProcesses()); + else { + try { + Application::DeclareRLimitProcesses(Convert::ToLong(rLimitProcesses)); + } catch (const std::invalid_argument& ex) { + std::cout + << "Error while parsing \"ICINGA2_RLIMIT_PROCESSES\" from sysconfig: " << ex.what() << '\n'; + return EXIT_FAILURE; + } + } +#endif /* RLIMIT_NPROC */ + +#ifdef RLIMIT_STACK + String rLimitStack = Utility::GetFromSysconfig("ICINGA2_RLIMIT_STACK"); + if (rLimitStack.IsEmpty()) + Application::DeclareRLimitStack(Application::GetDefaultRLimitStack()); + else { + try { + Application::DeclareRLimitStack(Convert::ToLong(rLimitStack)); + } catch (const std::invalid_argument& ex) { + std::cout + << "Error while parsing \"ICINGA2_RLIMIT_STACK\" from sysconfig: " << ex.what() << '\n'; + return EXIT_FAILURE; + } + } +#endif /* RLIMIT_STACK */ + Application::DeclareConcurrency(std::thread::hardware_concurrency()); Application::DeclareMaxConcurrentChecks(Application::GetDefaultMaxConcurrentChecks()); @@ -185,21 +226,6 @@ static int Main() ScriptGlobal::Set("BuildCompilerName", ICINGA_BUILD_COMPILER_NAME); ScriptGlobal::Set("BuildCompilerVersion", ICINGA_BUILD_COMPILER_VERSION); - String initconfig = Application::GetSysconfDir() + "/icinga2/init.conf"; - - if (Utility::PathExists(initconfig)) { - std::unique_ptr expression; - try { - expression = ConfigCompiler::CompileFile(initconfig); - - ScriptFrame frame(true); - expression->Evaluate(frame); - } catch (const std::exception& ex) { - Log(LogCritical, "config", DiagnosticInformation(ex)); - return EXIT_FAILURE; - } - } - if (!autocomplete) Application::SetResourceLimits(); -- 2.40.0