diff options
Diffstat (limited to 'src/service/smtp.cpp')
-rw-r--r-- | src/service/smtp.cpp | 116 |
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);}); } } |