summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phosphor-rsyslog-config/server-conf.cpp24
-rw-r--r--phosphor-rsyslog-config/server-conf.hpp19
2 files changed, 41 insertions, 2 deletions
diff --git a/phosphor-rsyslog-config/server-conf.cpp b/phosphor-rsyslog-config/server-conf.cpp
index 1b46965..0b5bc62 100644
--- a/phosphor-rsyslog-config/server-conf.cpp
+++ b/phosphor-rsyslog-config/server-conf.cpp
@@ -2,7 +2,6 @@
#include "utils.hpp"
#include "xyz/openbmc_project/Common/error.hpp"
#include <fstream>
-#include <phosphor-logging/log.hpp>
#include <phosphor-logging/elog.hpp>
#if __has_include("../../usr/include/phosphor-logging/elog-errors.hpp")
#include "../../usr/include/phosphor-logging/elog-errors.hpp"
@@ -128,5 +127,28 @@ bool Server::addressValid(const std::string& address)
return true;
}
+void Server::restore(const char* filePath)
+{
+ std::fstream stream(filePath, std::fstream::in);
+ std::string line;
+
+ getline(stream, line);
+
+ // Ignore if line is commented
+ if ('#' != line.at(0))
+ {
+ auto pos = line.find(':');
+ if (pos != std::string::npos)
+ {
+ //"*.* @@<address>:<port>"
+ constexpr auto start = 6; // Skip "*.* @@"
+ auto serverAddress = line.substr(start, pos - start);
+ auto serverPort = line.substr(pos + 1);
+ NetworkClient::address(std::move(serverAddress));
+ NetworkClient::port(std::stoul(serverPort));
+ }
+ }
+}
+
} // namespace rsyslog_config
} // namespace phosphor
diff --git a/phosphor-rsyslog-config/server-conf.hpp b/phosphor-rsyslog-config/server-conf.hpp
index 795cfb6..0f67f30 100644
--- a/phosphor-rsyslog-config/server-conf.hpp
+++ b/phosphor-rsyslog-config/server-conf.hpp
@@ -3,6 +3,7 @@
#include <sdbusplus/bus.hpp>
#include <sdbusplus/server/object.hpp>
#include <string>
+#include <phosphor-logging/log.hpp>
#include "xyz/openbmc_project/Network/Client/server.hpp"
namespace phosphor
@@ -10,6 +11,7 @@ namespace phosphor
namespace rsyslog_config
{
+using namespace phosphor::logging;
using NetworkClient = sdbusplus::xyz::openbmc_project::Network::server::Client;
using Iface = sdbusplus::server::object::object<NetworkClient>;
@@ -37,9 +39,19 @@ class Server : public Iface
Server(sdbusplus::bus::bus& bus,
const std::string& path,
const char* filePath) :
- Iface(bus, path.c_str()),
+ Iface(bus, path.c_str(), true),
configFilePath(filePath)
{
+ try
+ {
+ restore(configFilePath.c_str());
+ }
+ catch(const std::exception& e)
+ {
+ log<level::ERR>(e.what());
+ }
+
+ emit_object_added();
}
using NetworkClient::address;
@@ -75,6 +87,11 @@ class Server : public Iface
*/
bool addressValid(const std::string& address);
+ /** @brief Populate existing config into D-Bus properties
+ * @param[in] filePath - rsyslog config file path
+ */
+ void restore(const char* filePath);
+
std::string configFilePath{};
};
OpenPOWER on IntegriCloud