summaryrefslogtreecommitdiff
path: root/src/service/smtp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/service/smtp.cpp')
-rw-r--r--src/service/smtp.cpp116
1 files changed, 61 insertions, 55 deletions
diff --git a/src/service/smtp.cpp b/src/service/smtp.cpp
index cf3dc45..96bee38 100644
--- a/src/service/smtp.cpp
+++ b/src/service/smtp.cpp
@@ -3,10 +3,6 @@
#include <iostream>
namespace smtp::service
{
- static constexpr char HOST_PROPERTY[] = "Host";
- static constexpr char USER_PROPERTY[] = "User";
- static constexpr char PORT_PROPERTY[] = "Port";
-
//
// Constructors
//
@@ -14,21 +10,10 @@ namespace smtp::service
Smtp::Smtp( ConnectionPtr connection, manage::Settings const& settings, manage::Mail const& mail_to )
:mSettingsStorage(settings), mMailTo(mail_to)
{
-// std::string from{"claiff@mail.ru"};
-// std::string to{"claiff1990@gmail.com"};
-// std::list<std::string> cc{"claiff@mail.ru"};
-// std::string subject{"subject"};
-// std::string text{"text"};
-
- // mSettingsStorage.CheckAndSetSettings({true, true, "claiff@mail.ru","nZZbXq7FbwWAqpPpy3YL", "smtp.mail.ru", "" });
- //message::Sender{ mSettingsStorage, mMailTo }.Send( "claiff@mail.ru", "subject", "text" );
- //settings.SetSettings(manage::SettingsFields{false,false,"claiff@mail.ru","nZZbXq7FbwWAqpPpy3YL","smtp.mail.ru",""});
- manage::MailsSet add_mail{"gfdgdf@fd.ru"};
- //mMailTo.AddMailsToSend( add_mail );
- mMailTo.DeleteMailToSend({"gfdgdf@fd.ru", "rwer", "fedsfsd"});
-
-// CreateService( connection );
-// CreateInterface( connection );
+ CreateService( connection );
+ CreateMessagerInterface( connection );
+ CreateSettingsManagerInterface( connection );
+ CreateMailManagerInterface( connection );
}
//
@@ -42,61 +27,82 @@ namespace smtp::service
connection->request_name( SMTP_BUS_NAME );
}
- void Smtp::CreateInterface( ConnectionPtr connection )
+ void Smtp::CreateMessagerInterface( ConnectionPtr connection )
{
- static constexpr char SMTP_OBJECT_NAME[] = "/xyz/openbmc_project/SMTP";
- static constexpr char SMTP_INTERFACE_NAME[] = "xyz.openbmc_project.SMTP";
+ static constexpr char SMTP_OBJECT_NAME[] = "/xyz/openbmc_project/SMTP/Messenger";
+ static constexpr char SMTP_INTERFACE_NAME[] = "xyz.openbmc_project.Messenger";
mObjectServer = std::make_shared<sdbusplus::asio::object_server>( connection );
- mInterface = mObjectServer->add_interface( SMTP_OBJECT_NAME, SMTP_INTERFACE_NAME );
+ mMessagerInterface = mObjectServer->add_interface( SMTP_OBJECT_NAME, SMTP_INTERFACE_NAME );
- AddProperties();
- AddMethods();
+ AddMessagerMethods();
- mInterface->initialize();
+ mMessagerInterface->initialize();
}
- void Smtp::AddProperties()
+ void Smtp::CreateSettingsManagerInterface(ConnectionPtr connection)
{
- mInterface->register_property( HOST_PROPERTY, mSettingsStorage.GetHost(), sdbusplus::asio::PropertyPermission::readOnly );
- mInterface->register_property( USER_PROPERTY, mSettingsStorage.GetUserName(), sdbusplus::asio::PropertyPermission::readOnly );
- mInterface->register_property( PORT_PROPERTY, mSettingsStorage.GetPort(), sdbusplus::asio::PropertyPermission::readOnly );
+ static constexpr char SMTP_MANAGER_OBJECT_NAME[] = "/xyz/openbmc_project/Manager";
+ static constexpr char SMTP_SETTINGS_MANAGER_INTERFACE_NAME[] = "xyz.openbmc_project.SettingsManager";
+
+ mObjectServer = std::make_shared<sdbusplus::asio::object_server>( connection );
+ mManagerSettingsInterface = mObjectServer->add_interface( SMTP_MANAGER_OBJECT_NAME, SMTP_SETTINGS_MANAGER_INTERFACE_NAME );
+
+ AddSettingsManagerMethods();
+
+ mManagerSettingsInterface->initialize();
}
- void Smtp::AddMethods()
+ void Smtp::CreateMailManagerInterface(ConnectionPtr connection)
+ {
+ static constexpr char SMTP_MANAGER_OBJECT_NAME[] = "/xyz/openbmc_project/SMTP/Manager";
+ static constexpr char SMTP_MAIL_MANAGER_INTERFACE_NAME[] = "xyz.openbmc_project.MailManager";
+
+ mObjectServer = std::make_shared<sdbusplus::asio::object_server>( connection );
+ mManagerMailInterface = mObjectServer->add_interface( SMTP_MANAGER_OBJECT_NAME, SMTP_MAIL_MANAGER_INTERFACE_NAME );
+
+ AddMailManagerMethods();
+
+ mManagerMailInterface->initialize();
+ }
+
+ void Smtp::AddMessagerMethods()
{
static constexpr char SMTP_SEND_MESSAGE_METHOD_NAME[] = "SendMail";
- static constexpr char SMTP_CHANGE_PARAMETERS_METHOD_NAME[] = "ChangeParameters";
- mInterface->register_method(SMTP_SEND_MESSAGE_METHOD_NAME, [this]( std::string const& mail_from,
+ mMessagerInterface->register_method(SMTP_SEND_MESSAGE_METHOD_NAME, [this]( std::string const& mail_from,
std::string const& theme,
std::string const& text )
{ return message::Sender{ mSettingsStorage, mMailTo }.Send( mail_from, theme, text );});
+ }
-
- mInterface->register_method(SMTP_CHANGE_PARAMETERS_METHOD_NAME, [this]( bool is_need_auth,
- bool is_need_ssl,
- std::string const& user,
- std::string const& password,
- std::string const& host,
- std::string const& port )
- { return RefreshSettings( is_need_auth, is_need_ssl, user, password, host, port);});
+ void Smtp::AddSettingsManagerMethods()
+ {
+ static constexpr char SMTP_SET_SETTINGS_METHOD_NAME[] = "SetSettings";
+ static constexpr char SMTP_GET_SETTINGS_METHOD_NAME[] = "GetSettings";
+
+ mManagerSettingsInterface->register_method(SMTP_SET_SETTINGS_METHOD_NAME, [this]( bool is_need_auth,
+ bool is_need_ssl,
+ std::string const& user,
+ std::string const& password,
+ std::string const& host,
+ std::string const& port )
+ { mSettingsStorage.SetSettings({ is_need_auth, is_need_ssl,
+ user, password, host, port});});
+
+ mManagerSettingsInterface->register_method(SMTP_GET_SETTINGS_METHOD_NAME, [this](){ return mSettingsStorage.GetSettings();});
}
- bool Smtp::RefreshSettings( bool is_need_auth, bool is_need_ssl,
- std::string const& user, std::string const& password,
- std::string const& host, std::string const& port )
+ void Smtp::AddMailManagerMethods()
{
- auto is_settings_norm = mSettingsStorage.SetSettings({is_need_auth, is_need_ssl,
- user, password, host, port});
- if(!is_settings_norm)
- {
- return false;
- }
-
- mInterface->set_property(HOST_PROPERTY, host);
- mInterface->set_property(USER_PROPERTY, user);
- mInterface->set_property(PORT_PROPERTY, port);
- return true;
+ static constexpr char SMTP_GET_MAILS_TO_SEND_METHOD_NAME[] = "GetMailsToSend";
+ static constexpr char SMTP_ADD_MAILS_TO_SEND_METHOD_NAME[] = "AddMailsToSend";
+ static constexpr char SMTP_DELETE_MAILS_METHOD_NAME[] = "DeleteMailsToSend";
+
+ mManagerMailInterface->register_method( SMTP_GET_MAILS_TO_SEND_METHOD_NAME, [this]()
+ { return mMailTo.GetMailToSend();});
+
+ mManagerMailInterface->register_method( SMTP_ADD_MAILS_TO_SEND_METHOD_NAME, [this](manage::MailsSet const& mails){ return mMailTo.AddMailsToSend(mails);});
+ mManagerMailInterface->register_method( SMTP_DELETE_MAILS_METHOD_NAME, [this](manage::MailsSet const& mails_to_delete){ return mMailTo.DeleteMailToSend(mails_to_delete);});
}
}