diff options
author | eportnov <eportnov@ibs.ru> | 2022-09-09 12:47:21 +0300 |
---|---|---|
committer | eportnov <eportnov@ibs.ru> | 2022-09-09 12:48:14 +0300 |
commit | 11ecce5d84de881233342847faae24b9be314a47 (patch) | |
tree | 5f9d9f998b1227a64f5b5549771e6fee1ada2b52 | |
parent | b4ee6951877dda289ad12adaf3cc470d8a27190e (diff) | |
download | openbmc-11ecce5d84de881233342847faae24b9be314a47.tar.xz |
add smtp to git
24 files changed, 12 insertions, 840 deletions
diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/network/obmc-sila-snmp_git.bb b/meta-ibs/meta-cp2-5422/recipes-phosphor/network/obmc-sila-snmp_git.bb index 4e4d0f3107..b44f5ddd6c 100644 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/network/obmc-sila-snmp_git.bb +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/network/obmc-sila-snmp_git.bb @@ -7,7 +7,7 @@ PV = "1.0+git${SRCPV}" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" -SRC_URI = "git://git@git.sila.ru/srv/pub/scm/git/openbmc/obmc-sila-snmp.git;branch=master;protocol=ssh" +SRC_URI = "http://git.sila.ru/openbmc/obmc-sila-smtp.git/;branch=master" SRCREV = "a7db2279b461f7aa6659e262962fc50ca98eb901" diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/CMakeLists.txt b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/CMakeLists.txt deleted file mode 100644 index 4d93f95770..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/CMakeLists.txt +++ /dev/null @@ -1,118 +0,0 @@ -cmake_minimum_required(VERSION 3.5) - -project(smtp LANGUAGES CXX) - -cmake_policy(SET CMP0054 NEW) - -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -fno-rtti") -# Silence sdbusplus warnings -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-parameter") -set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Os -flto") -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0") - -if(NOT ${YOCTO_DEPENDENCIES}) - include(ExternalProject) - - ExternalProject_Add( - Boost - URL "https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2" - URL_MD5 "33334dd7f862e8ac9fe1cc7c6584fb6d" - SOURCE_DIR ${CMAKE_BINARY_DIR}/src/boost - BINARY_DIR ${CMAKE_BINARY_DIR}/libs/boost - CONFIGURE_COMMAND cd <SOURCE_DIR> && ./bootstrap.sh - BUILD_COMMAND cd <SOURCE_DIR> && ./b2 --exec-prefix=<BINARY_DIR> - --prefix=<BINARY_DIR> --with-system --with-coroutine install - INSTALL_COMMAND "" - UPDATE_COMMAND "") - - set(CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/libs/boost/ ${CMAKE_PREFIX_PATH}) - include_directories(SYSTEM ${CMAKE_BINARY_DIR}/libs/boost/include) - link_directories(SYSTEM ${CMAKE_BINARY_DIR}/libs/boost/lib) - - ExternalProject_Add( - sdbusplus-project - PREFIX ${CMAKE_BINARY_DIR}/sdbusplus-project - GIT_REPOSITORY https://github.com/openbmc/sdbusplus.git - GIT_TAG afe80cf2e5dc4aefe3b041adeb0230e61929bf12 - SOURCE_DIR ${CMAKE_BINARY_DIR}/sdbusplus-src - BINARY_DIR ${CMAKE_BINARY_DIR}/sdbusplus-build - CONFIGURE_COMMAND "" - BUILD_COMMAND cd ${CMAKE_BINARY_DIR}/sdbusplus-src && ./bootstrap.sh && - ./configure --enable-transaction && make -j libsdbusplus.la - INSTALL_COMMAND "" - LOG_DOWNLOAD ON - UPDATE_COMMAND "") - - include_directories(${CMAKE_BINARY_DIR}/sdbusplus-src) - link_directories(${CMAKE_BINARY_DIR}/sdbusplus-src/.libs) - - # Boost related definitions - add_definitions(-DBOOST_COROUTINES_NO_DEPRECATION_WARNING) - add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY) - add_definitions(-DBOOST_SYSTEM_NO_DEPRECATED) - add_definitions(-DBOOST_ALL_NO_LIB) - add_definitions(-DBOOST_NO_RTTI) - add_definitions(-DBOOST_NO_TYPEID) - add_definitions(-DBOOST_ASIO_DISABLE_THREADS) -else() - # Include Boost library. This allows specify exact version of BOOST to be - # used, especially important while using valgrind, to point BOOST that is - # compiled with valgrind support - if(${BOOST_VERSION}) - find_package(Boost ${BOOST_VERSION} EXACT) - else() - find_package(Boost 1.69 REQUIRED COMPONENTS coroutine context) - endif() - message("++ Using Boost version: " ${Boost_VERSION}) - - include_directories(${Boost_INCLUDE_DIRS}) - link_directories(${Boost_LIBRARY_DIRS}) -endif() - -include_directories(src) - -set(SRC_DIR src) -set(SRC_FILES - ${SRC_DIR}/main.cpp - ${SRC_DIR}/smtp_service.cpp - ${SRC_DIR}/smtp_service.hpp - ${SRC_DIR}/message_sender.hpp - ${SRC_DIR}/message_sender.cpp - ${SRC_DIR}/settings_storage.hpp - - ${SRC_DIR}/message_builder/date.hpp - ${SRC_DIR}/message_builder/date.cpp - ${SRC_DIR}/message_builder/mail_to.hpp - ${SRC_DIR}/message_builder/mail_to.cpp - ${SRC_DIR}/message_builder/cc.hpp - ${SRC_DIR}/message_builder/cc.cpp - ${SRC_DIR}/message_builder/subject.hpp - ${SRC_DIR}/message_builder/subject.cpp - ${SRC_DIR}/message_builder/text.hpp - ${SRC_DIR}/message_builder/text.cpp - ${SRC_DIR}/message_builder/from.hpp - ${SRC_DIR}/message_builder/from.cpp - - ${SRC_DIR}/message_builder/types/idecorator.hpp - ) - -add_executable(smtp ${SRC_FILES}) -if(NOT ${YOCTO_DEPENDENCIES}) - add_dependencies(smtp sdbusplus-project) -endif() -target_link_libraries(smtp boost_context) -target_link_libraries(smtp sdbusplus) -target_link_libraries(smtp systemd) -target_link_libraries(smtp curl) - -#target_link_libraries(curl_smtp curl) -#target_link_libraries (${PROJECT_NAME} ${Boost_LIBRARIES}) -#target_link_libraries (${PROJECT_NAME} ${SDBUSPLUSPLUS_LIBRARIES} -# phosphor_logging) -install(TARGETS smtp DESTINATION bin) -install(FILES ${PROJECT_SOURCE_DIR}/xyz.openbmc_project.SMTP.service - DESTINATION /lib/systemd/system/) diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/main.cpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/main.cpp deleted file mode 100644 index ba2848da3e..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/main.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include <sdbusplus/asio/connection.hpp> - -#include "smtp_service.hpp" - -int main() -{ - boost::asio::io_service io_context; - - auto connection = std::make_shared<sdbusplus::asio::connection>( io_context ); - smtp::SmtpService smtp{ connection }; - - io_context.run(); - return 0; -} diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/cc.cpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/cc.cpp deleted file mode 100644 index c686ef2057..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/cc.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "cc.hpp" - -namespace smtp::message_builder -{ - Cc::Cc( std::list<std::string> const& mail_to ) - : mMailTo( mail_to ) - { - - } - - std::string Cc::Get() const - { - std::string result; - if( mBase ) - { - result = mBase->Get(); - } - - if( mMailTo.empty() ) - { - return result; - } - - for(const auto& cc : mMailTo) - { - result += "Cc: " + cc + "\r\n"; - } - - return result; - } -} diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/cc.hpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/cc.hpp deleted file mode 100644 index 5062c370ad..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/cc.hpp +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include <list> - -#include "types/idecorator.hpp" -#include "types/imessage_build.hpp" - -namespace smtp::message_builder -{ - class Cc : public types::IDecorator<types::IMessageBuilder> - { - public: - explicit Cc( std::list<std::string> const& mail_to ); - ~Cc() override = default; - - std::string Get() const override; - private: - std::list<std::string> const& mMailTo; - }; -} - diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/date.cpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/date.cpp deleted file mode 100644 index 96ee2e155d..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/date.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "date.hpp" - -namespace smtp::message_builder -{ - std::string Date::Get() const - { - std::string result; - - if( mBase ) - { - result = mBase->Get(); - } - result += "Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n"; - return result; - } -} diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/date.hpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/date.hpp deleted file mode 100644 index 00fb6cbb15..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/date.hpp +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include "types/idecorator.hpp" -#include "types/imessage_build.hpp" - -namespace smtp::message_builder -{ - class Date : public types::IDecorator<types::IMessageBuilder> - { - public: - Date() = default; - ~Date() override = default; - - std::string Get() const override; - }; -} - diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/from.cpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/from.cpp deleted file mode 100644 index 094e1a2fa4..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/from.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "from.hpp" - -namespace smtp::message_builder -{ - - From::From( std::string const& mail_to ) - :mMailTo( mail_to ) - { - - } - - std::string From::Get() const - { - std::string result; - if( mBase ) - { - result = mBase->Get(); - } - result += "From: " + mMailTo + "\r\n"; - return result; - } -} diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/from.hpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/from.hpp deleted file mode 100644 index 4605469b87..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/from.hpp +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include "types/idecorator.hpp" -#include "types/imessage_build.hpp" - -namespace smtp::message_builder -{ - class From : public types::IDecorator<types::IMessageBuilder> - { - public: - explicit From( std::string const& mail_to ); - ~From() override = default; - - std::string Get() const override; - private: - std::string const& mMailTo; - }; -} - diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/mail_to.cpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/mail_to.cpp deleted file mode 100644 index c73e2a7888..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/mail_to.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "mail_to.hpp" - -namespace smtp::message_builder -{ - MailTo::MailTo( std::string const& mail_to) - : mMailTo( mail_to ) - { - - } - - std::string MailTo::Get() const - { - std::string result; - if( mBase ) - { - result = mBase->Get(); - } - - result += "To: " + mMailTo +"\r\n"; - - return result; - } -} diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/mail_to.hpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/mail_to.hpp deleted file mode 100644 index 0245fd69a6..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/mail_to.hpp +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include <list> - -#include "types/idecorator.hpp" -#include "types/imessage_build.hpp" - -namespace smtp::message_builder -{ - class MailTo : public types::IDecorator<types::IMessageBuilder> - { - public: - explicit MailTo( std::string const& mail_to ); - ~MailTo() override = default; - - std::string Get() const override; - private: - std::string const& mMailTo; - }; -} - diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/subject.cpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/subject.cpp deleted file mode 100644 index 84e7e43e07..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/subject.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "subject.hpp" - -namespace smtp::message_builder -{ - Subject::Subject( std::string const& subject ) - : mSubject(subject) - { - - } - - std::string Subject::Get() const - { - std::string result; - if( mBase ) - { - result = mBase->Get(); - } - result += "Subject: " + mSubject + "\r\n"; - return result; - } -} diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/subject.hpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/subject.hpp deleted file mode 100644 index bf8bfab591..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/subject.hpp +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include "types/idecorator.hpp" -#include "types/imessage_build.hpp" - -namespace smtp::message_builder -{ - class Subject : public types::IDecorator<types::IMessageBuilder> - { - public: - explicit Subject( std::string const& subject ); - ~Subject() override = default; - - std::string Get() const override; - private: - std::string const& mSubject; - }; -} - diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/text.cpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/text.cpp deleted file mode 100644 index e5e6bf069c..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/text.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "text.hpp" - -namespace smtp::message_builder -{ - Text::Text( std::string const& text) - : mText( text ) - { - - } - - std::string Text::Get() const - { - std::string result; - if( mBase ) - { - result = mBase->Get(); - } - - result += "\r\n"; - result += mText + "\r\n"; - - return result; - } -} diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/text.hpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/text.hpp deleted file mode 100644 index 4df90e15c9..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/text.hpp +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include "types/idecorator.hpp" -#include "types/imessage_build.hpp" - -namespace smtp::message_builder -{ - class Text : public types::IDecorator<types::IMessageBuilder> - { - public: - explicit Text( std::string const& text ); - ~Text() override = default; - - std::string Get() const override; - private: - std::string const& mText; - }; -} - diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/types/idecorator.hpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/types/idecorator.hpp deleted file mode 100644 index 3fabcd4902..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/types/idecorator.hpp +++ /dev/null @@ -1,82 +0,0 @@ -#pragma once
-
-#include <memory>
-
-namespace smtp::message_builder::types
-{
-
-/**
- * @brief Базовый интерфейс описания декоратора
- * @details См. https://refactoring.guru/ru/design-patterns/decorator
- * @tparam T Тип декорируемого класса, T должен обладать возможностью наследования (в том числе виртуальный деструктор)
- */
- template < typename T, typename TPointerType = std::shared_ptr<T> > class IDecorator : public T
- {
- public:
- using PointerType = TPointerType;
- using Type = IDecorator<T, TPointerType>;
-
- ~IDecorator() override = default;
-
- /**
- * @brief Установить указатель на декорируемый класс
- * @details По возможности используйте метод Apply() как наиболее универсальный
- * @param base Указатель на декорируемый класс
- */
- void SetBase( PointerType const& base ) noexcept
- {
- mBase = base;
- }
-
- void SetBase( PointerType&& base ) noexcept
- {
- mBase = std::move( base );
- }
-
- /**
- * @brief Установить указатель на декорируемый класс (цепочка обязанностей)
- * @details См. https://refactoring.guru/ru/design-patterns/chain-of-responsibility/cpp/example
- * @details Цепь вызовов: декоратор1 -> декоратор2 -> базовый класс
- * @param base_or_decorator Указатель на декорируемый класс или целевой декоратор
- */
- Type& Apply( PointerType const& base_or_decorator ) noexcept
- {
- if( !base_or_decorator )
- {
- return *this;
- }
-
- SetBase( base_or_decorator );
- return GetApplyResult();
- }
-
- Type& Apply( PointerType&& base_or_decorator ) noexcept
- {
- if( !base_or_decorator )
- {
- return *this;
- }
-
- SetBase( std::move( base_or_decorator ) );
- return GetApplyResult();
- }
-
- private:
- Type& GetApplyResult() noexcept
- {
- auto as_decorator = dynamic_cast< Type * >( mBase.get() );
- if( as_decorator )
- {
- return *as_decorator;
- }
-
- return *this;
- }
-
- protected:
- PointerType mBase;
- };
-
- template < typename T, typename TDeleter = std::default_delete<T> > using IDecoratorUnique = IDecorator<T, std::unique_ptr<T, TDeleter> >;
-
-} // namespace sbis::devices::generic::types
diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/types/imessage_build.hpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/types/imessage_build.hpp deleted file mode 100644 index 4c4f1b8be1..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_builder/types/imessage_build.hpp +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include <string> - -namespace smtp::message_builder::types -{ - class IMessageBuilder - { - public: - virtual ~IMessageBuilder() = default; - - virtual std::string Get() const = 0; - }; -} diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_sender.cpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_sender.cpp deleted file mode 100644 index 5b2950ca7f..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_sender.cpp +++ /dev/null @@ -1,123 +0,0 @@ -#include <string.h> - -#include "message_sender.hpp" -#include "message_builder/date.hpp" -#include "message_builder/mail_to.hpp" -#include "message_builder/cc.hpp" -#include "message_builder/subject.hpp" -#include "message_builder/text.hpp" -#include "message_builder/from.hpp" - -namespace smtp -{ - static std::string mText = ""; - - // - // Constructors/Destructors - // - MessageSender::MessageSender( SettingsStorage const& settings_storage ) - : mSettingsStorage( settings_storage ) - { - - } - - // - //Public methods - // - bool MessageSender::Send( std::string const& mail_from, std::string const& mail_to, std::list<std::string> const& cc, - std::string const& subject, std::string const& text ) - { - CURLcode result = CURLE_OK; - - struct curl_slist *recipients = NULL; - struct WriteThis upload_ctx; - - upload_ctx.counter = 0; - - auto curl = curl_easy_init(); - - if( !curl ) - { - //Error - return false; - } - mText = GetText( mail_from, mail_to, cc, subject, text); - FillRecipients( curl, mail_to, cc, recipients ); - - curl_easy_setopt(curl, CURLOPT_USERNAME, mSettingsStorage.username.c_str()); - curl_easy_setopt(curl, CURLOPT_PASSWORD, mSettingsStorage.password.c_str()); - curl_easy_setopt(curl, CURLOPT_URL, GetHostPortData().c_str()); - - curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_ALL); - curl_easy_setopt(curl, CURLOPT_MAIL_FROM, mail_from.c_str()); - - curl_easy_setopt(curl, CURLOPT_READFUNCTION, ReadCallBack); - curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx); - curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); - curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); - - result = curl_easy_perform(curl); - - if (result != CURLE_OK) - { - fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(result)); - return false; - } - - curl_slist_free_all(recipients); - curl_easy_cleanup(curl); - return true; - } - - // - //Private methods - // - std::string MessageSender::GetText( std::string const& mail_from, std::string const& mail_to, std::list<std::string> const& cc, - std::string const& subject, std::string const& text ) const - { - auto text_decorator = std::make_shared<message_builder::Text>( text ); - text_decorator->Apply( std::make_shared<message_builder::Subject>( subject ) ) - .Apply( std::make_shared<message_builder::Cc>( cc ) ) - .Apply( std::make_shared<message_builder::From>( mail_from ) ) - .Apply( std::make_shared<message_builder::MailTo>( mail_to ) ) - .Apply( std::make_shared<message_builder::Date>() ); - return text_decorator->Get(); - } - - void MessageSender::FillRecipients( CURL* curl, std::string const& mail_to, std::list<std::string> const& cc, curl_slist* recipients ) - { - recipients = curl_slist_append( recipients, mail_to.c_str() ); - - for( const auto& recipient : cc ) - { - recipients = curl_slist_append( recipients, recipient.c_str() ); - } - - curl_easy_setopt( curl, CURLOPT_MAIL_RCPT, recipients ); - } - - std::string MessageSender::GetHostPortData() const - { - auto result = "smtp://" + mSettingsStorage.host; - if( !mSettingsStorage.port.empty() ) - { - result += ":" + mSettingsStorage.port; - } - return result; - } - - size_t MessageSender::ReadCallBack( void *ptr, size_t size, size_t nmemb, void *userp ) - { - struct WriteThis *pooh = reinterpret_cast<WriteThis*>( userp ); - if( size * nmemb < 1 ) - { - return 0; - } - if( pooh->counter++ > 0 ) - { - return 0; - } - memcpy( ptr, mText.c_str(), mText.size() ); - return mText.size(); - } -} diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_sender.hpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_sender.hpp deleted file mode 100644 index 0728f0ee1f..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/message_sender.hpp +++ /dev/null @@ -1,48 +0,0 @@ -#pragma once - -#include <list> -#include <memory> - -#include <curl/curl.h> - -#include "settings_storage.hpp" - -namespace smtp -{ - struct WriteThis - { - int counter; - }; - - class MessageSender - { - public: - MessageSender( SettingsStorage const& settings_storage ); - ~MessageSender() = default; - - bool Send( std::string const& mail_from, std::string const& mail_to, std::list<std::string> const& cc, - std::string const& subject, std::string const& text ); - private: - std::string GetText( std::string const& mail_from, std::string const& mail_to, std::list<std::string> const& cc, - std::string const& subject, std::string const& textt ) const; - void InitSenders( std::string const& mail_from, std::list<std::string> const& mail_to ); - void FillRecipients( CURL* curl, std::string const& mail_to, std::list<std::string> const& cc, curl_slist* recipients ); - std::string GetHostPortData() const; - void ProcessSending(const std::string &mail_from, const std::list<std::string> &mail_to, const std::string &subject, const std::string &text); - timeval GetNowTime() const noexcept; - bool IsTimeOut( timeval const& start_time ) const noexcept; - long GetTimeDiff( timeval const& left, timeval const& right ) const noexcept; - timeval GetTimeout() const; - int ProcessHandle( timeval& timeout ) const; - void ClearPtrs(); - static size_t ReadCallBack( void *ptr, size_t size, size_t nmemb, void *userp ); - -// CURL *curl; -// CURLM *mcurl; - struct WriteThis pooh; - struct curl_slist* recipients = NULL; - SettingsStorage const& mSettingsStorage; - }; -} - - diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/settings_storage.hpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/settings_storage.hpp deleted file mode 100644 index d442d6ff1f..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/settings_storage.hpp +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include <string> - -namespace smtp -{ - struct SettingsStorage - { - std::string username; - std::string password; - std::string host; - std::string port; - }; -} diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/smtp_service.cpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/smtp_service.cpp deleted file mode 100644 index 6235e4c8ca..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/smtp_service.cpp +++ /dev/null @@ -1,96 +0,0 @@ -#include "smtp_service.hpp" -#include "message_sender.hpp" - -namespace smtp -{ - static constexpr char HOST_PROPERTY[] = "Host"; - static constexpr char USER_PROPERTY[] = "User"; - static constexpr char PORT_PROPERTY[] = "Port"; - - // - // Constructors - // - - SmtpService::SmtpService( ConnectionPtr connection ) - { - FillStorageByDefault(); - CreateService( connection ); - CreateInterface( connection ); - } - - // - // Private methods - // - - void SmtpService::FillStorageByDefault() - { - mStorage.host = ""; - mStorage.username = ""; - mStorage.password = ""; - mStorage.port = ""; - } - - void SmtpService::CreateService( ConnectionPtr connection ) - { - static constexpr char SMTP_BUS_NAME[] = "xyz.openbmc_project.SMTP"; - - connection->request_name( SMTP_BUS_NAME ); - } - - void SmtpService::CreateInterface( ConnectionPtr connection ) - { - static constexpr char SMTP_OBJECT_NAME[] = "/xyz/openbmc_project/SMTP"; - static constexpr char SMTP_INTERFACE_NAME[] = "xyz.openbmc_project.SMTP"; - - mObjectServer = std::make_shared<sdbusplus::asio::object_server>( connection ); - mInterface = mObjectServer->add_interface( SMTP_OBJECT_NAME, SMTP_INTERFACE_NAME ); - - AddProperties(); - AddMethods(); - - mInterface->initialize(); - } - - void SmtpService::AddProperties() - { - mInterface->register_property( HOST_PROPERTY, mStorage.host, sdbusplus::asio::PropertyPermission::readOnly ); - mInterface->register_property( USER_PROPERTY, mStorage.username, sdbusplus::asio::PropertyPermission::readOnly ); - mInterface->register_property( PORT_PROPERTY, mStorage.port, sdbusplus::asio::PropertyPermission::readOnly ); - } - - void SmtpService::AddMethods() - { - 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, - std::string const& mail_to, - std::list<std::string> const& cc, - std::string const& theme, - std::string const& text ) - { return MessageSender{ mStorage }.Send( mail_from, mail_to, cc, theme, text );}); - - - mInterface->register_method(SMTP_CHANGE_PARAMETERS_METHOD_NAME, [this]( std::string const& user, - std::string const& password, - std::string const& host, - std::string const& port ) - { return RefreshSettings(user, password, host, port);}); - } - - bool SmtpService::RefreshSettings(std::string const& user, - std::string const& password, - std::string const& host, - std::string const& port) - { - mStorage.username = user; - mStorage.password = password; - mStorage.host = host; - mStorage.port = port; - - mInterface->set_property(HOST_PROPERTY, host); - mInterface->set_property(USER_PROPERTY, user); - mInterface->set_property(PORT_PROPERTY, port); - return true; - } -} diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/smtp_service.hpp b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/smtp_service.hpp deleted file mode 100644 index 7149e3aef6..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/src/smtp_service.hpp +++ /dev/null @@ -1,36 +0,0 @@ -#pragma once - -#include <boost/asio/io_service.hpp> - -#include <sdbusplus/asio/connection.hpp> -#include <sdbusplus/asio/object_server.hpp> - -#include "settings_storage.hpp" - -namespace smtp -{ - using ConnectionPtr = std::shared_ptr<sdbusplus::asio::connection>; - using InterfacePtr = std::shared_ptr<sdbusplus::asio::dbus_interface>; - using ObjectServerPtr = std::shared_ptr<sdbusplus::asio::object_server>; - - class SmtpService - { - public: - SmtpService( ConnectionPtr connection ); - ~SmtpService() = default; - private: - void FillStorageByDefault(); - void CreateService( ConnectionPtr bus ); - void CreateInterface( ConnectionPtr connection ); - void AddProperties(); - void AddMethods(); - bool RefreshSettings(std::string const& user, - std::string const& password, - std::string const& host, - std::string const& port); - - InterfacePtr mInterface; - ObjectServerPtr mObjectServer; - SettingsStorage mStorage; - }; -} diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/xyz.openbmc_project.SMTP.service b/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/xyz.openbmc_project.SMTP.service deleted file mode 100644 index a7c89ef9c0..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/files/xyz.openbmc_project.SMTP.service +++ /dev/null @@ -1,9 +0,0 @@ -[Unit] -Description=SMTP client - -[Service] -ExecStart=/usr/bin/smtp -Type=oneshot - -[Install] -WantedBy=basic.target diff --git a/meta-ibs/meta-cp2-5422/recipes-support/smtp/smtp.bb b/meta-ibs/meta-cp2-5422/recipes-support/smtp/smtp.bb index 13df29f92d..ffa29826bb 100644 --- a/meta-ibs/meta-cp2-5422/recipes-support/smtp/smtp.bb +++ b/meta-ibs/meta-cp2-5422/recipes-support/smtp/smtp.bb @@ -1,39 +1,18 @@ -SUMMARY = "Simple SMTP client" -DESCRIPTION = "Simple SMTP client" - -S = "${WORKDIR}" +SUMMARY = "Simple SMTP manager" +DESCRIPTION = "Simple SMTP manager" +PR = "r1" +PV = "1.0+git${SRCPV}" LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "\ - file://${IBSBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658 \ - " +LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" -SYSTEMD_SERVICE:${PN} = "xyz.openbmc_project.SMTP.service" +SRC_URI = "git://git@git.sila.ru/srv/pub/scm/git/openbmc/obmc-sila-smtp.git;branch=master;protocol=ssh" +SRCREV = "9fa4addff6f90a8b5697a594e034f5517d64dd25" -DEPENDS = "boost systemd sdbusplus curl" +S = "${WORKDIR}/git" inherit cmake systemd -SRC_URI = "file://xyz.openbmc_project.SMTP.service \ - file://CMakeLists.txt \ - file://src/main.cpp \ - file://src/smtp_service.cpp \ - file://src/smtp_service.hpp \ - file://src/message_sender.cpp \ - file://src/message_sender.hpp \ - file://src/settings_storage.hpp \ - file://src/message_builder/cc.hpp \ - file://src/message_builder/cc.cpp \ - file://src/message_builder/date.hpp \ - file://src/message_builder/date.cpp \ - file://src/message_builder/mail_to.hpp \ - file://src/message_builder/mail_to.cpp \ - file://src/message_builder/from.hpp \ - file://src/message_builder/from.cpp \ - file://src/message_builder/subject.hpp \ - file://src/message_builder/subject.cpp \ - file://src/message_builder/text.hpp \ - file://src/message_builder/text.cpp \ - file://src/message_builder/types/idecorator.hpp \ - file://src/message_builder/types/imessage_build.hpp \ - " +DEPENDS = "boost systemd sdbusplus curl" + +SYSTEMD_SERVICE:${PN} = "xyz.openbmc_project.SMTP.service" |