diff options
Diffstat (limited to 'phosphor-rsyslog-config/server-conf.hpp')
-rw-r--r-- | phosphor-rsyslog-config/server-conf.hpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/phosphor-rsyslog-config/server-conf.hpp b/phosphor-rsyslog-config/server-conf.hpp new file mode 100644 index 0000000..cb8882b --- /dev/null +++ b/phosphor-rsyslog-config/server-conf.hpp @@ -0,0 +1,76 @@ +#pragma once + +#include <sdbusplus/bus.hpp> +#include <sdbusplus/server/object.hpp> +#include <string> +#include "xyz/openbmc_project/Network/Client/server.hpp" + +namespace phosphor +{ +namespace rsyslog_config +{ + +using NetworkClient = sdbusplus::xyz::openbmc_project::Network::server::Client; +using Iface = sdbusplus::server::object::object<NetworkClient>; + +/** @class Server + * @brief Configuration for rsyslog server + * @details A concrete implementation of the + * xyz.openbmc_project.Network.Client API, in order to + * provide remote rsyslog server's address and port. + */ +class Server : public Iface +{ + public: + Server() = delete; + Server(const Server&) = delete; + Server& operator=(const Server&) = delete; + Server(Server&&) = delete; + Server& operator=(Server&&) = delete; + virtual ~Server() = default; + + /** @brief Constructor to put object onto bus at a dbus path. + * @param[in] bus - Bus to attach to. + * @param[in] path - Path to attach at. + * @param[in] filePath - rsyslog remote logging config file + */ + Server(sdbusplus::bus::bus& bus, + const std::string& path, + const char* filePath) : + Iface(bus, path.c_str()), + configFilePath(filePath) + { + } + + using NetworkClient::address; + using NetworkClient::port; + + /** @brief Override that updates rsyslog config file as well + * @param[in] value - remote server address + * @returns value of changed address + */ + virtual std::string address(std::string value) override; + + /** @brief Override that updates rsyslog config file as well + * @param[in] value - remote server port + * @returns value of changed port + */ + virtual uint16_t port(uint16_t value) override; + + private: + /** @brief Update remote server address and port in + * rsyslog config file. + * @param[in] serverAddress - remote server address + * @param[in] serverPort - remote server port + * @param[in] filePath - rsyslog config file path + */ + void writeConfig( + const std::string& serverAddress, + uint16_t serverPort, + const char* filePath); + + std::string configFilePath{}; +}; + +} // namespace rsyslog_config +} // namespace phosphor |