mirror of
https://github.com/Telecominfraproject/wlan-cloud-ucentralsec.git
synced 2025-10-29 18:02:29 +00:00
Refactoring namespace for OpenWifi.
This commit is contained in:
@@ -73,7 +73,7 @@ add_executable( owsec
|
||||
src/RESTAPI_AssetServer.cpp src/RESTAPI_AssetServer.h
|
||||
src/RESTAPI_avatarHandler.cpp src/RESTAPI_avatarHandler.h
|
||||
src/storage_avatar.cpp src/storage_avatar.h src/storage_users.h
|
||||
src/OpenWifiTypes.h )
|
||||
src/OpenWifiTypes.h src/RESTAPI_email_handler.cpp src/RESTAPI_email_handler.h)
|
||||
|
||||
if(NOT SMALL_BUILD)
|
||||
target_link_libraries(owsec PUBLIC
|
||||
|
||||
@@ -296,6 +296,22 @@ components:
|
||||
items:
|
||||
$ref: '#/components/schemas/UserInfo'
|
||||
|
||||
EMailInfo:
|
||||
type: object
|
||||
properties:
|
||||
from:
|
||||
type: string
|
||||
format: email
|
||||
subject:
|
||||
type: string
|
||||
recipients:
|
||||
type:
|
||||
array:
|
||||
items:
|
||||
type: string
|
||||
format: email
|
||||
text:
|
||||
type: string
|
||||
|
||||
#########################################################################################
|
||||
##
|
||||
@@ -775,6 +791,36 @@ paths:
|
||||
404:
|
||||
$ref: '#/components/responses/NotFound'
|
||||
|
||||
/email:
|
||||
post:
|
||||
tags:
|
||||
- EMail
|
||||
summary: Send test email with the system
|
||||
operationId: Send a test email
|
||||
requestBody:
|
||||
description: The requested message
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/EMailInfo'
|
||||
responses:
|
||||
200:
|
||||
$ref: '#/components/responses/Success'
|
||||
403:
|
||||
$ref: '#/components/responses/Unauthorized'
|
||||
404:
|
||||
$ref: '#/components/responses/NotFound'
|
||||
500:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
errors:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
|
||||
#########################################################################################
|
||||
##
|
||||
## These are endpoints that all services in the uCentral stack must provide
|
||||
|
||||
58
src/RESTAPI_email_handler.cpp
Normal file
58
src/RESTAPI_email_handler.cpp
Normal file
@@ -0,0 +1,58 @@
|
||||
//
|
||||
// Created by stephane bourque on 2021-09-02.
|
||||
//
|
||||
|
||||
#include "RESTAPI_email_handler.h"
|
||||
|
||||
|
||||
#include "Poco/Exception.h"
|
||||
#include "Poco/JSON/Parser.h"
|
||||
|
||||
#include "Daemon.h"
|
||||
#include "SMTPMailerService.h"
|
||||
|
||||
namespace OpenWifi {
|
||||
void RESTAPI_email_handler::handleRequest(Poco::Net::HTTPServerRequest &Request,
|
||||
Poco::Net::HTTPServerResponse &Response) {
|
||||
|
||||
if (!ContinueProcessing(Request, Response))
|
||||
return;
|
||||
|
||||
if (!IsAuthorized(Request, Response))
|
||||
return;
|
||||
|
||||
if (Request.getMethod() == Poco::Net::HTTPRequest::HTTP_POST)
|
||||
DoPost(Request, Response);
|
||||
else
|
||||
BadRequest(Request, Response, "Unsupported method.");
|
||||
}
|
||||
|
||||
void RESTAPI_email_handler::DoPost(Poco::Net::HTTPServerRequest &Request, Poco::Net::HTTPServerResponse &Response) {
|
||||
try {
|
||||
Poco::JSON::Parser parser;
|
||||
auto Obj = parser.parse(Request.stream()).extract<Poco::JSON::Object::Ptr>();
|
||||
|
||||
if (Obj->has("subject") &&
|
||||
Obj->has("from") &&
|
||||
Obj->has("text") &&
|
||||
Obj->has("recipients")) {
|
||||
|
||||
auto Recipients = Obj->getArray("recipients");
|
||||
|
||||
MessageAttributes Attrs;
|
||||
|
||||
Attrs[RECIPIENT_EMAIL] = Recipients->get(0).toString();
|
||||
Attrs[SUBJECT] = Obj->get("subject").toString();
|
||||
Attrs[TEXT] = Obj->get("text").toString();
|
||||
if(SMTPMailerService()->SendMessage(Recipients->get(0).toString(), "password_reset.txt", Attrs)) {
|
||||
OK(Request, Response);
|
||||
return;
|
||||
}
|
||||
}
|
||||
} catch(const Poco::Exception &E) {
|
||||
Logger_.log(E);
|
||||
}
|
||||
BadRequest(Request, Response, "Unsupported or missing parameters.");
|
||||
}
|
||||
|
||||
}
|
||||
27
src/RESTAPI_email_handler.h
Normal file
27
src/RESTAPI_email_handler.h
Normal file
@@ -0,0 +1,27 @@
|
||||
//
|
||||
// Created by stephane bourque on 2021-09-02.
|
||||
//
|
||||
|
||||
#ifndef OWSEC_RESTAPI_EMAIL_HANDLER_H
|
||||
#define OWSEC_RESTAPI_EMAIL_HANDLER_H
|
||||
|
||||
|
||||
#include "RESTAPI_handler.h"
|
||||
|
||||
namespace OpenWifi {
|
||||
class RESTAPI_email_handler : public RESTAPIHandler {
|
||||
public:
|
||||
RESTAPI_email_handler(const RESTAPIHandler::BindingMap &bindings, Poco::Logger &L, bool Internal)
|
||||
: RESTAPIHandler(bindings, L,
|
||||
std::vector<std::string>{Poco::Net::HTTPRequest::HTTP_POST,
|
||||
Poco::Net::HTTPRequest::HTTP_OPTIONS},
|
||||
Internal) {}
|
||||
void handleRequest(Poco::Net::HTTPServerRequest &request,
|
||||
Poco::Net::HTTPServerResponse &response) override;
|
||||
static const std::list<const char *> PathName() { return std::list<const char *>{"/api/v1/email"};}
|
||||
void DoPost(Poco::Net::HTTPServerRequest &Request,
|
||||
Poco::Net::HTTPServerResponse &Response);
|
||||
};
|
||||
}
|
||||
|
||||
#endif //OWSEC_RESTAPI_EMAIL_HANDLER_H
|
||||
@@ -60,15 +60,16 @@ namespace OpenWifi {
|
||||
.File=Poco::File(TemplateDir_ + "/" +Name),
|
||||
.Attrs=Attrs});
|
||||
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void SMTPMailerService::run() {
|
||||
|
||||
Running_ = true;
|
||||
while(Running_) {
|
||||
Poco::Thread::trySleep(2000);
|
||||
|
||||
Poco::Thread::trySleep(10000);
|
||||
if(!Running_)
|
||||
break;
|
||||
{
|
||||
SubMutexGuard G(Mutex_);
|
||||
|
||||
@@ -106,11 +107,16 @@ namespace OpenWifi {
|
||||
Message.addRecipient(Poco::Net::MailRecipient(Poco::Net::MailRecipient::PRIMARY_RECIPIENT, Recipient));
|
||||
Message.setSubject(Msg.Attrs.find(SUBJECT)->second);
|
||||
|
||||
std::string Content = Utils::LoadFile(Msg.File);
|
||||
Types::StringPairVec Variables;
|
||||
FillVariables(Msg.Attrs, Variables);
|
||||
Utils::ReplaceVariables(Content, Variables);
|
||||
Message.addContent(new Poco::Net::StringPartSource(Content));
|
||||
if(Msg.Attrs.find(TEXT) != Msg.Attrs.end()) {
|
||||
std::string Content = Msg.Attrs.find(TEXT)->second;
|
||||
Message.addContent(new Poco::Net::StringPartSource(Content));
|
||||
} else {
|
||||
std::string Content = Utils::LoadFile(Msg.File);
|
||||
Types::StringPairVec Variables;
|
||||
FillVariables(Msg.Attrs, Variables);
|
||||
Utils::ReplaceVariables(Content, Variables);
|
||||
Message.addContent(new Poco::Net::StringPartSource(Content));
|
||||
}
|
||||
|
||||
auto Logo = Msg.Attrs.find(LOGO);
|
||||
if(Logo!=Msg.Attrs.end()) {
|
||||
|
||||
@@ -22,7 +22,8 @@ namespace OpenWifi {
|
||||
SUBJECT,
|
||||
TEMPLATE_TXT,
|
||||
TEMPLATE_HTML,
|
||||
LOGO
|
||||
LOGO,
|
||||
TEXT
|
||||
};
|
||||
|
||||
static const std::map<MESSAGE_ATTRIBUTES,const std::string>
|
||||
@@ -36,7 +37,9 @@ namespace OpenWifi {
|
||||
{ SUBJECT, "SUBJECT"},
|
||||
{ TEMPLATE_TXT, "TEMPLATE_TXT"},
|
||||
{ TEMPLATE_HTML, "TEMPLATE_HTML"},
|
||||
{ LOGO, "LOGO"}};
|
||||
{ LOGO, "LOGO"},
|
||||
{ TEXT, "TEXT"}
|
||||
};
|
||||
|
||||
inline const std::string & MessageAttributeToVar(MESSAGE_ATTRIBUTES Attr) {
|
||||
static const std::string EmptyString{};
|
||||
|
||||
Reference in New Issue
Block a user