diff options
Diffstat (limited to 'lib/base/configuration.cpp')
-rw-r--r-- | lib/base/configuration.cpp | 377 |
1 files changed, 377 insertions, 0 deletions
diff --git a/lib/base/configuration.cpp b/lib/base/configuration.cpp new file mode 100644 index 0000000..93996ba --- /dev/null +++ b/lib/base/configuration.cpp @@ -0,0 +1,377 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +#include "base/configuration.hpp" +#include "base/configuration-ti.cpp" +#include "base/exception.hpp" + +using namespace icinga; + +REGISTER_TYPE(Configuration); + +String Configuration::ApiBindHost = []() { +#ifndef _WIN32 + // Automatically fall back to an IPv4 default if socket() tells us that IPv6 is not supported. + int fd = socket(AF_INET6, SOCK_STREAM, 0); + if (fd < 0 && errno == EAFNOSUPPORT) { + return "0.0.0.0"; + } else if (fd >= 0) { + close(fd); + } +#endif /* _WIN32 */ + + return "::"; +}(); + +String Configuration::ApiBindPort{"5665"}; +bool Configuration::AttachDebugger{false}; +String Configuration::CacheDir; +int Configuration::Concurrency{static_cast<int>(std::thread::hardware_concurrency())}; +String Configuration::ConfigDir; +String Configuration::DataDir; +String Configuration::EventEngine; +String Configuration::IncludeConfDir; +String Configuration::InitRunDir; +String Configuration::LogDir; +String Configuration::ModAttrPath; +String Configuration::ObjectsPath; +String Configuration::PidPath; +String Configuration::PkgDataDir; +String Configuration::PrefixDir; +String Configuration::ProgramData; +int Configuration::RLimitFiles; +int Configuration::RLimitProcesses; +int Configuration::RLimitStack; +String Configuration::RunAsGroup; +String Configuration::RunAsUser; +String Configuration::SpoolDir; +String Configuration::StatePath; +double Configuration::TlsHandshakeTimeout{10}; +String Configuration::VarsPath; +String Configuration::ZonesDir; + +/* deprecated */ +String Configuration::LocalStateDir; +String Configuration::RunDir; +String Configuration::SysconfDir; + +/* internal */ +bool Configuration::m_ReadOnly{false}; + +template<typename T> +void HandleUserWrite(const String& name, T *target, const T& value, bool readOnly) +{ + if (readOnly) + BOOST_THROW_EXCEPTION(ScriptError("Configuration attribute '" + name + "' is read-only.")); + + *target = value; +} + +String Configuration::GetApiBindHost() const +{ + return Configuration::ApiBindHost; +} + +void Configuration::SetApiBindHost(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("ApiBindHost", &Configuration::ApiBindHost, val, m_ReadOnly); +} + +String Configuration::GetApiBindPort() const +{ + return Configuration::ApiBindPort; +} + +void Configuration::SetApiBindPort(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("ApiBindPort", &Configuration::ApiBindPort, val, m_ReadOnly); +} + +bool Configuration::GetAttachDebugger() const +{ + return Configuration::AttachDebugger; +} + +void Configuration::SetAttachDebugger(bool val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("AttachDebugger", &Configuration::AttachDebugger, val, m_ReadOnly); +} + +String Configuration::GetCacheDir() const +{ + return Configuration::CacheDir; +} + +void Configuration::SetCacheDir(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("CacheDir", &Configuration::CacheDir, val, m_ReadOnly); +} + +int Configuration::GetConcurrency() const +{ + return Configuration::Concurrency; +} + +void Configuration::SetConcurrency(int val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("Concurrency", &Configuration::Concurrency, val, m_ReadOnly); +} + +String Configuration::GetConfigDir() const +{ + return Configuration::ConfigDir; +} + +void Configuration::SetConfigDir(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("ConfigDir", &Configuration::ConfigDir, val, m_ReadOnly); +} + +String Configuration::GetDataDir() const +{ + return Configuration::DataDir; +} + +void Configuration::SetDataDir(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("DataDir", &Configuration::DataDir, val, m_ReadOnly); +} + +String Configuration::GetEventEngine() const +{ + return Configuration::EventEngine; +} + +void Configuration::SetEventEngine(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("EventEngine", &Configuration::EventEngine, val, m_ReadOnly); +} + +String Configuration::GetIncludeConfDir() const +{ + return Configuration::IncludeConfDir; +} + +void Configuration::SetIncludeConfDir(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("IncludeConfDir", &Configuration::IncludeConfDir, val, m_ReadOnly); +} + +String Configuration::GetInitRunDir() const +{ + return Configuration::InitRunDir; +} + +void Configuration::SetInitRunDir(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("InitRunDir", &Configuration::InitRunDir, val, m_ReadOnly); +} + +String Configuration::GetLogDir() const +{ + return Configuration::LogDir; +} + +void Configuration::SetLogDir(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("LogDir", &Configuration::LogDir, val, m_ReadOnly); +} + +String Configuration::GetModAttrPath() const +{ + return Configuration::ModAttrPath; +} + +void Configuration::SetModAttrPath(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("ModAttrPath", &Configuration::ModAttrPath, val, m_ReadOnly); +} + +String Configuration::GetObjectsPath() const +{ + return Configuration::ObjectsPath; +} + +void Configuration::SetObjectsPath(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("ObjectsPath", &Configuration::ObjectsPath, val, m_ReadOnly); +} + +String Configuration::GetPidPath() const +{ + return Configuration::PidPath; +} + +void Configuration::SetPidPath(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("PidPath", &Configuration::PidPath, val, m_ReadOnly); +} + +String Configuration::GetPkgDataDir() const +{ + return Configuration::PkgDataDir; +} + +void Configuration::SetPkgDataDir(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("PkgDataDir", &Configuration::PkgDataDir, val, m_ReadOnly); +} + +String Configuration::GetPrefixDir() const +{ + return Configuration::PrefixDir; +} + +void Configuration::SetPrefixDir(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("PrefixDir", &Configuration::PrefixDir, val, m_ReadOnly); +} + +String Configuration::GetProgramData() const +{ + return Configuration::ProgramData; +} + +void Configuration::SetProgramData(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("ProgramData", &Configuration::ProgramData, val, m_ReadOnly); +} + +int Configuration::GetRLimitFiles() const +{ + return Configuration::RLimitFiles; +} + +void Configuration::SetRLimitFiles(int val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("RLimitFiles", &Configuration::RLimitFiles, val, m_ReadOnly); +} + +int Configuration::GetRLimitProcesses() const +{ + return RLimitProcesses; +} + +void Configuration::SetRLimitProcesses(int val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("RLimitProcesses", &Configuration::RLimitProcesses, val, m_ReadOnly); +} + +int Configuration::GetRLimitStack() const +{ + return Configuration::RLimitStack; +} + +void Configuration::SetRLimitStack(int val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("RLimitStack", &Configuration::RLimitStack, val, m_ReadOnly); +} + +String Configuration::GetRunAsGroup() const +{ + return Configuration::RunAsGroup; +} + +void Configuration::SetRunAsGroup(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("RunAsGroup", &Configuration::RunAsGroup, val, m_ReadOnly); +} + +String Configuration::GetRunAsUser() const +{ + return Configuration::RunAsUser; +} + +void Configuration::SetRunAsUser(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("RunAsUser", &Configuration::RunAsUser, val, m_ReadOnly); +} + +String Configuration::GetSpoolDir() const +{ + return Configuration::SpoolDir; +} + +void Configuration::SetSpoolDir(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("SpoolDir", &Configuration::SpoolDir, val, m_ReadOnly); +} + +String Configuration::GetStatePath() const +{ + return Configuration::StatePath; +} + +void Configuration::SetStatePath(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("StatePath", &Configuration::StatePath, val, m_ReadOnly); +} + +double Configuration::GetTlsHandshakeTimeout() const +{ + return Configuration::TlsHandshakeTimeout; +} + +void Configuration::SetTlsHandshakeTimeout(double val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("TlsHandshakeTimeout", &Configuration::TlsHandshakeTimeout, val, m_ReadOnly); +} + +String Configuration::GetVarsPath() const +{ + return Configuration::VarsPath; +} + +void Configuration::SetVarsPath(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("VarsPath", &Configuration::VarsPath, val, m_ReadOnly); +} + +String Configuration::GetZonesDir() const +{ + return Configuration::ZonesDir; +} + +void Configuration::SetZonesDir(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("ZonesDir", &Configuration::ZonesDir, val, m_ReadOnly); +} + +String Configuration::GetLocalStateDir() const +{ + return Configuration::LocalStateDir; +} + +void Configuration::SetLocalStateDir(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("LocalStateDir", &Configuration::LocalStateDir, val, m_ReadOnly); +} + +String Configuration::GetSysconfDir() const +{ + return Configuration::SysconfDir; +} + +void Configuration::SetSysconfDir(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("SysconfDir", &Configuration::SysconfDir, val, m_ReadOnly); +} + +String Configuration::GetRunDir() const +{ + return Configuration::RunDir; +} + +void Configuration::SetRunDir(const String& val, bool suppress_events, const Value& cookie) +{ + HandleUserWrite("RunDir", &Configuration::RunDir, val, m_ReadOnly); +} + +bool Configuration::GetReadOnly() +{ + return m_ReadOnly; +} + +void Configuration::SetReadOnly(bool readOnly) +{ + m_ReadOnly = readOnly; +} |