1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
3 #include "base/configuration.hpp"
4 #include "base/configuration-ti.cpp"
5 #include "base/exception.hpp"
7 using namespace icinga;
9 REGISTER_TYPE(Configuration);
11 String Configuration::ApiBindHost;
12 String Configuration::ApiBindPort{"5665"};
13 bool Configuration::AttachDebugger{false};
14 String Configuration::CacheDir;
15 int Configuration::Concurrency{static_cast<int>(std::thread::hardware_concurrency())};
16 String Configuration::ConfigDir;
17 String Configuration::DataDir;
18 String Configuration::EventEngine;
19 String Configuration::IncludeConfDir;
20 String Configuration::InitRunDir;
21 String Configuration::LogDir;
22 String Configuration::ModAttrPath;
23 String Configuration::ObjectsPath;
24 String Configuration::PidPath;
25 String Configuration::PkgDataDir;
26 String Configuration::PrefixDir;
27 String Configuration::ProgramData;
28 int Configuration::RLimitFiles;
29 int Configuration::RLimitProcesses;
30 int Configuration::RLimitStack;
31 String Configuration::RunAsGroup;
32 String Configuration::RunAsUser;
33 String Configuration::SpoolDir;
34 String Configuration::StatePath;
35 double Configuration::TlsHandshakeTimeout{10};
36 String Configuration::VarsPath;
37 String Configuration::ZonesDir;
40 String Configuration::LocalStateDir;
41 String Configuration::RunDir;
42 String Configuration::SysconfDir;
45 bool Configuration::m_ReadOnly{false};
48 void HandleUserWrite(const String& name, T *target, const T& value, bool readOnly)
51 BOOST_THROW_EXCEPTION(ScriptError("Configuration attribute '" + name + "' is read-only."));
56 String Configuration::GetApiBindHost() const
58 return Configuration::ApiBindHost;
61 void Configuration::SetApiBindHost(const String& val, bool suppress_events, const Value& cookie)
63 HandleUserWrite("ApiBindHost", &Configuration::ApiBindHost, val, m_ReadOnly);
66 String Configuration::GetApiBindPort() const
68 return Configuration::ApiBindPort;
71 void Configuration::SetApiBindPort(const String& val, bool suppress_events, const Value& cookie)
73 HandleUserWrite("ApiBindPort", &Configuration::ApiBindPort, val, m_ReadOnly);
76 bool Configuration::GetAttachDebugger() const
78 return Configuration::AttachDebugger;
81 void Configuration::SetAttachDebugger(bool val, bool suppress_events, const Value& cookie)
83 HandleUserWrite("AttachDebugger", &Configuration::AttachDebugger, val, m_ReadOnly);
86 String Configuration::GetCacheDir() const
88 return Configuration::CacheDir;
91 void Configuration::SetCacheDir(const String& val, bool suppress_events, const Value& cookie)
93 HandleUserWrite("CacheDir", &Configuration::CacheDir, val, m_ReadOnly);
96 int Configuration::GetConcurrency() const
98 return Configuration::Concurrency;
101 void Configuration::SetConcurrency(int val, bool suppress_events, const Value& cookie)
103 HandleUserWrite("Concurrency", &Configuration::Concurrency, val, m_ReadOnly);
106 String Configuration::GetConfigDir() const
108 return Configuration::ConfigDir;
111 void Configuration::SetConfigDir(const String& val, bool suppress_events, const Value& cookie)
113 HandleUserWrite("ConfigDir", &Configuration::ConfigDir, val, m_ReadOnly);
116 String Configuration::GetDataDir() const
118 return Configuration::DataDir;
121 void Configuration::SetDataDir(const String& val, bool suppress_events, const Value& cookie)
123 HandleUserWrite("DataDir", &Configuration::DataDir, val, m_ReadOnly);
126 String Configuration::GetEventEngine() const
128 return Configuration::EventEngine;
131 void Configuration::SetEventEngine(const String& val, bool suppress_events, const Value& cookie)
133 HandleUserWrite("EventEngine", &Configuration::EventEngine, val, m_ReadOnly);
136 String Configuration::GetIncludeConfDir() const
138 return Configuration::IncludeConfDir;
141 void Configuration::SetIncludeConfDir(const String& val, bool suppress_events, const Value& cookie)
143 HandleUserWrite("IncludeConfDir", &Configuration::IncludeConfDir, val, m_ReadOnly);
146 String Configuration::GetInitRunDir() const
148 return Configuration::InitRunDir;
151 void Configuration::SetInitRunDir(const String& val, bool suppress_events, const Value& cookie)
153 HandleUserWrite("InitRunDir", &Configuration::InitRunDir, val, m_ReadOnly);
156 String Configuration::GetLogDir() const
158 return Configuration::LogDir;
161 void Configuration::SetLogDir(const String& val, bool suppress_events, const Value& cookie)
163 HandleUserWrite("LogDir", &Configuration::LogDir, val, m_ReadOnly);
166 String Configuration::GetModAttrPath() const
168 return Configuration::ModAttrPath;
171 void Configuration::SetModAttrPath(const String& val, bool suppress_events, const Value& cookie)
173 HandleUserWrite("ModAttrPath", &Configuration::ModAttrPath, val, m_ReadOnly);
176 String Configuration::GetObjectsPath() const
178 return Configuration::ObjectsPath;
181 void Configuration::SetObjectsPath(const String& val, bool suppress_events, const Value& cookie)
183 HandleUserWrite("ObjectsPath", &Configuration::ObjectsPath, val, m_ReadOnly);
186 String Configuration::GetPidPath() const
188 return Configuration::PidPath;
191 void Configuration::SetPidPath(const String& val, bool suppress_events, const Value& cookie)
193 HandleUserWrite("PidPath", &Configuration::PidPath, val, m_ReadOnly);
196 String Configuration::GetPkgDataDir() const
198 return Configuration::PkgDataDir;
201 void Configuration::SetPkgDataDir(const String& val, bool suppress_events, const Value& cookie)
203 HandleUserWrite("PkgDataDir", &Configuration::PkgDataDir, val, m_ReadOnly);
206 String Configuration::GetPrefixDir() const
208 return Configuration::PrefixDir;
211 void Configuration::SetPrefixDir(const String& val, bool suppress_events, const Value& cookie)
213 HandleUserWrite("PrefixDir", &Configuration::PrefixDir, val, m_ReadOnly);
216 String Configuration::GetProgramData() const
218 return Configuration::ProgramData;
221 void Configuration::SetProgramData(const String& val, bool suppress_events, const Value& cookie)
223 HandleUserWrite("ProgramData", &Configuration::ProgramData, val, m_ReadOnly);
226 int Configuration::GetRLimitFiles() const
228 return Configuration::RLimitFiles;
231 void Configuration::SetRLimitFiles(int val, bool suppress_events, const Value& cookie)
233 HandleUserWrite("RLimitFiles", &Configuration::RLimitFiles, val, m_ReadOnly);
236 int Configuration::GetRLimitProcesses() const
238 return RLimitProcesses;
241 void Configuration::SetRLimitProcesses(int val, bool suppress_events, const Value& cookie)
243 HandleUserWrite("RLimitProcesses", &Configuration::RLimitProcesses, val, m_ReadOnly);
246 int Configuration::GetRLimitStack() const
248 return Configuration::RLimitStack;
251 void Configuration::SetRLimitStack(int val, bool suppress_events, const Value& cookie)
253 HandleUserWrite("RLimitStack", &Configuration::RLimitStack, val, m_ReadOnly);
256 String Configuration::GetRunAsGroup() const
258 return Configuration::RunAsGroup;
261 void Configuration::SetRunAsGroup(const String& val, bool suppress_events, const Value& cookie)
263 HandleUserWrite("RunAsGroup", &Configuration::RunAsGroup, val, m_ReadOnly);
266 String Configuration::GetRunAsUser() const
268 return Configuration::RunAsUser;
271 void Configuration::SetRunAsUser(const String& val, bool suppress_events, const Value& cookie)
273 HandleUserWrite("RunAsUser", &Configuration::RunAsUser, val, m_ReadOnly);
276 String Configuration::GetSpoolDir() const
278 return Configuration::SpoolDir;
281 void Configuration::SetSpoolDir(const String& val, bool suppress_events, const Value& cookie)
283 HandleUserWrite("SpoolDir", &Configuration::SpoolDir, val, m_ReadOnly);
286 String Configuration::GetStatePath() const
288 return Configuration::StatePath;
291 void Configuration::SetStatePath(const String& val, bool suppress_events, const Value& cookie)
293 HandleUserWrite("StatePath", &Configuration::StatePath, val, m_ReadOnly);
296 double Configuration::GetTlsHandshakeTimeout() const
298 return Configuration::TlsHandshakeTimeout;
301 void Configuration::SetTlsHandshakeTimeout(double val, bool suppress_events, const Value& cookie)
303 HandleUserWrite("TlsHandshakeTimeout", &Configuration::TlsHandshakeTimeout, val, m_ReadOnly);
306 String Configuration::GetVarsPath() const
308 return Configuration::VarsPath;
311 void Configuration::SetVarsPath(const String& val, bool suppress_events, const Value& cookie)
313 HandleUserWrite("VarsPath", &Configuration::VarsPath, val, m_ReadOnly);
316 String Configuration::GetZonesDir() const
318 return Configuration::ZonesDir;
321 void Configuration::SetZonesDir(const String& val, bool suppress_events, const Value& cookie)
323 HandleUserWrite("ZonesDir", &Configuration::ZonesDir, val, m_ReadOnly);
326 String Configuration::GetLocalStateDir() const
328 return Configuration::LocalStateDir;
331 void Configuration::SetLocalStateDir(const String& val, bool suppress_events, const Value& cookie)
333 HandleUserWrite("LocalStateDir", &Configuration::LocalStateDir, val, m_ReadOnly);
336 String Configuration::GetSysconfDir() const
338 return Configuration::SysconfDir;
341 void Configuration::SetSysconfDir(const String& val, bool suppress_events, const Value& cookie)
343 HandleUserWrite("SysconfDir", &Configuration::SysconfDir, val, m_ReadOnly);
346 String Configuration::GetRunDir() const
348 return Configuration::RunDir;
351 void Configuration::SetRunDir(const String& val, bool suppress_events, const Value& cookie)
353 HandleUserWrite("RunDir", &Configuration::RunDir, val, m_ReadOnly);
356 bool Configuration::GetReadOnly()
361 void Configuration::SetReadOnly(bool readOnly)
363 m_ReadOnly = readOnly;