summaryrefslogtreecommitdiffstats
path: root/phosphor-rsyslog-config/server-conf.cpp
diff options
context:
space:
mode:
authorDeepak Kodihalli <dkodihal@in.ibm.com>2018-08-23 02:19:58 -0500
committerDeepak Kodihalli <dkodihal@in.ibm.com>2018-08-29 03:38:49 -0500
commitc49661925b0c59a4355aca6813a85d749c21e764 (patch)
tree65d4ecebf593f3d77cd428bf3397f7d99f762006 /phosphor-rsyslog-config/server-conf.cpp
parent9067c077034cd92e0498646b7d7a05fba890532c (diff)
downloadphosphor-logging-c49661925b0c59a4355aca6813a85d749c21e764.tar.gz
phosphor-logging-c49661925b0c59a4355aca6813a85d749c21e764.zip
Add application to configure rsyslog
The application implements the xyz.openbmc_project.Network.Client D-Bus interface to set a remote rsyslog server's address and port in the rsyslog config file. This lets us configure rsyslog to be able to stream out logs. TODO: Exception handling and validation will be handled in subsequent commits. Change-Id: I8917daab3f0de1806d2f1aafe99cb3a872f19184 Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
Diffstat (limited to 'phosphor-rsyslog-config/server-conf.cpp')
-rw-r--r--phosphor-rsyslog-config/server-conf.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/phosphor-rsyslog-config/server-conf.cpp b/phosphor-rsyslog-config/server-conf.cpp
new file mode 100644
index 0000000..16c792d
--- /dev/null
+++ b/phosphor-rsyslog-config/server-conf.cpp
@@ -0,0 +1,42 @@
+#include "server-conf.hpp"
+#include "utils.hpp"
+#include <fstream>
+
+namespace phosphor
+{
+namespace rsyslog_config
+{
+
+namespace utils = phosphor::rsyslog_utils;
+
+std::string Server::address(std::string value)
+{
+ writeConfig(value, port(), configFilePath.c_str());
+ auto result = NetworkClient::address(value);
+ return result;
+}
+
+uint16_t Server::port(uint16_t value)
+{
+ writeConfig(address(), value, configFilePath.c_str());
+ auto result = NetworkClient::port(value);
+ return result;
+}
+
+void Server::writeConfig(
+ const std::string& serverAddress,
+ uint16_t serverPort,
+ const char* filePath)
+{
+ if (serverPort && !serverAddress.empty())
+ {
+ std::fstream stream(filePath, std::fstream::out);
+ // write '*.* @@remote-host:port'
+ stream << "*.* @@" << serverAddress << ":" << serverPort;
+
+ utils::restart();
+ }
+}
+
+} // namespace rsyslog_config
+} // namespace phosphor
OpenPOWER on IntegriCloud