mirror of
https://github.com/Telecominfraproject/wlan-cloud-owprov.git
synced 2025-11-03 12:08:08 +00:00
Signed-off-by: stephb9959 <stephane.bourque@gmail.com>
This commit is contained in:
@@ -54,7 +54,5 @@ namespace OpenWifi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -60,9 +60,7 @@ namespace OpenWifi {
|
|||||||
|
|
||||||
void AddJob( Job* newJob ) {
|
void AddJob( Job* newJob ) {
|
||||||
std::lock_guard G(Mutex_);
|
std::lock_guard G(Mutex_);
|
||||||
|
|
||||||
jobs_.push_back(newJob);
|
jobs_.push_back(newJob);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -231,11 +231,7 @@ namespace OpenWifi{
|
|||||||
auto JobId = MicroService::instance().CreateUUID();
|
auto JobId = MicroService::instance().CreateUUID();
|
||||||
Types::StringVec Parameters{UUID};;
|
Types::StringVec Parameters{UUID};;
|
||||||
auto NewJob = new VenueConfigUpdater(JobId,"VenueConfigurationUpdater", Parameters, 0, UserInfo_.userinfo, Logger());
|
auto NewJob = new VenueConfigUpdater(JobId,"VenueConfigurationUpdater", Parameters, 0, UserInfo_.userinfo, Logger());
|
||||||
|
|
||||||
std::cout << "Adding new job" << std::endl;
|
|
||||||
JobController()->AddJob(dynamic_cast<Job*>(NewJob));
|
JobController()->AddJob(dynamic_cast<Job*>(NewJob));
|
||||||
std::cout << "Job added" << std::endl;
|
|
||||||
|
|
||||||
SNL.to_json(Answer);
|
SNL.to_json(Answer);
|
||||||
Answer.set("jobId",JobId);
|
Answer.set("jobId",JobId);
|
||||||
return ReturnObject(Answer);
|
return ReturnObject(Answer);
|
||||||
@@ -249,10 +245,7 @@ namespace OpenWifi{
|
|||||||
auto JobId = MicroService::instance().CreateUUID();
|
auto JobId = MicroService::instance().CreateUUID();
|
||||||
Types::StringVec Parameters{UUID};;
|
Types::StringVec Parameters{UUID};;
|
||||||
auto NewJob = new VenueUpgrade(JobId,"VenueFirmwareUpgrade", Parameters, 0, UserInfo_.userinfo, Logger());
|
auto NewJob = new VenueUpgrade(JobId,"VenueFirmwareUpgrade", Parameters, 0, UserInfo_.userinfo, Logger());
|
||||||
std::cout << "Adding new job" << std::endl;
|
|
||||||
JobController()->AddJob(dynamic_cast<Job*>(NewJob));
|
JobController()->AddJob(dynamic_cast<Job*>(NewJob));
|
||||||
std::cout << "Job added" << std::endl;
|
|
||||||
|
|
||||||
SNL.to_json(Answer);
|
SNL.to_json(Answer);
|
||||||
Answer.set("jobId",JobId);
|
Answer.set("jobId",JobId);
|
||||||
return ReturnObject(Answer);
|
return ReturnObject(Answer);
|
||||||
@@ -266,10 +259,7 @@ namespace OpenWifi{
|
|||||||
auto JobId = MicroService::instance().CreateUUID();
|
auto JobId = MicroService::instance().CreateUUID();
|
||||||
Types::StringVec Parameters{UUID};;
|
Types::StringVec Parameters{UUID};;
|
||||||
auto NewJob = new VenueRebooter(JobId,"VenueRebooter", Parameters, 0, UserInfo_.userinfo, Logger());
|
auto NewJob = new VenueRebooter(JobId,"VenueRebooter", Parameters, 0, UserInfo_.userinfo, Logger());
|
||||||
std::cout << "Adding new job" << std::endl;
|
|
||||||
JobController()->AddJob(dynamic_cast<Job*>(NewJob));
|
JobController()->AddJob(dynamic_cast<Job*>(NewJob));
|
||||||
std::cout << "Job added" << std::endl;
|
|
||||||
|
|
||||||
SNL.to_json(Answer);
|
SNL.to_json(Answer);
|
||||||
Answer.set("jobId",JobId);
|
Answer.set("jobId",JobId);
|
||||||
return ReturnObject(Answer);
|
return ReturnObject(Answer);
|
||||||
|
|||||||
@@ -27,11 +27,6 @@ namespace OpenWifi {
|
|||||||
inline uint64_t Now() { return std::time(nullptr); };
|
inline uint64_t Now() { return std::time(nullptr); };
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace OpenWifi::Utils {
|
|
||||||
std::vector<unsigned char> base64decode(const std::string& input);
|
|
||||||
std::string base64encode(const unsigned char *input, uint32_t size);
|
|
||||||
}
|
|
||||||
|
|
||||||
using namespace std::chrono_literals;
|
using namespace std::chrono_literals;
|
||||||
|
|
||||||
#include "Poco/Util/Application.h"
|
#include "Poco/Util/Application.h"
|
||||||
@@ -243,11 +238,6 @@ namespace OpenWifi::RESTAPI_utils {
|
|||||||
Obj.set(Field,Value);
|
Obj.set(Field,Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void field_to_json(Poco::JSON::Object &Obj, const char *Field, const Poco::Data::BLOB &Value) {
|
|
||||||
auto Result = Utils::base64encode((const unsigned char *)Value.rawContent(),Value.size());
|
|
||||||
Obj.set(Field,Result);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void field_to_json(Poco::JSON::Object &Obj, const char *Field, const Types::StringPairVec & S) {
|
inline void field_to_json(Poco::JSON::Object &Obj, const char *Field, const Types::StringPairVec & S) {
|
||||||
Poco::JSON::Array Array;
|
Poco::JSON::Array Array;
|
||||||
for(const auto &i:S) {
|
for(const auto &i:S) {
|
||||||
@@ -344,12 +334,12 @@ namespace OpenWifi::RESTAPI_utils {
|
|||||||
|
|
||||||
inline void field_from_json(const Poco::JSON::Object::Ptr &Obj, const char *Field, double & Value) {
|
inline void field_from_json(const Poco::JSON::Object::Ptr &Obj, const char *Field, double & Value) {
|
||||||
if(Obj->has(Field) && !Obj->isNull(Field))
|
if(Obj->has(Field) && !Obj->isNull(Field))
|
||||||
Value = (double)Obj->get(Field);
|
Value = (double) Obj->get(Field);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void field_from_json(const Poco::JSON::Object::Ptr &Obj, const char *Field, float & Value) {
|
inline void field_from_json(const Poco::JSON::Object::Ptr &Obj, const char *Field, float & Value) {
|
||||||
if(Obj->has(Field) && !Obj->isNull(Field))
|
if(Obj->has(Field) && !Obj->isNull(Field))
|
||||||
Value = (float)Obj->get(Field);
|
Value = (float) Obj->get(Field);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void field_from_json(const Poco::JSON::Object::Ptr &Obj, const char *Field, bool &Value) {
|
inline void field_from_json(const Poco::JSON::Object::Ptr &Obj, const char *Field, bool &Value) {
|
||||||
@@ -384,14 +374,7 @@ namespace OpenWifi::RESTAPI_utils {
|
|||||||
|
|
||||||
inline void field_from_json(const Poco::JSON::Object::Ptr &Obj, const char *Field, uint64_t &Value) {
|
inline void field_from_json(const Poco::JSON::Object::Ptr &Obj, const char *Field, uint64_t &Value) {
|
||||||
if(Obj->has(Field) && !Obj->isNull(Field))
|
if(Obj->has(Field) && !Obj->isNull(Field))
|
||||||
Value = (uint64_t)Obj->get(Field);
|
Value = (uint64_t ) Obj->get(Field);
|
||||||
}
|
|
||||||
|
|
||||||
inline void field_from_json(const Poco::JSON::Object::Ptr &Obj, const char *Field, Poco::Data::BLOB &Value) {
|
|
||||||
if(Obj->has(Field) && !Obj->isNull(Field)) {
|
|
||||||
auto Result = Utils::base64decode(Obj->get(Field).toString());
|
|
||||||
Value.assignRaw((const unsigned char *)&Result[0],Result.size());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void field_from_json(const Poco::JSON::Object::Ptr &Obj, const char *Field, Types::StringPairVec &Vec) {
|
inline void field_from_json(const Poco::JSON::Object::Ptr &Obj, const char *Field, Types::StringPairVec &Vec) {
|
||||||
@@ -2081,17 +2064,6 @@ namespace OpenWifi {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool AssignIfPresent(const Poco::JSON::Object::Ptr &O, const std::string &Field, Poco::Data::BLOB &Value) {
|
|
||||||
if(O->has(Field)) {
|
|
||||||
std::string Content = O->get(Field).toString();
|
|
||||||
auto DecodedBlob = Utils::base64decode(Content);
|
|
||||||
Value.assignRaw((const unsigned char *)&DecodedBlob[0],DecodedBlob.size());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template <typename T> bool AssignIfPresent(const Poco::JSON::Object::Ptr &O, const std::string &Field, const T &value, T & assignee) {
|
template <typename T> bool AssignIfPresent(const Poco::JSON::Object::Ptr &O, const std::string &Field, const T &value, T & assignee) {
|
||||||
if(O->has(Field)) {
|
if(O->has(Field)) {
|
||||||
assignee = value;
|
assignee = value;
|
||||||
@@ -5020,8 +4992,12 @@ namespace OpenWifi {
|
|||||||
|
|
||||||
for(const auto &client:Clients_) {
|
for(const auto &client:Clients_) {
|
||||||
if(client.second.second == UserName) {
|
if(client.second.second == UserName) {
|
||||||
if(client.second.first->Send(Payload))
|
try {
|
||||||
Sent++;
|
if (client.second.first->Send(Payload))
|
||||||
|
Sent++;
|
||||||
|
} catch (...) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Sent>0;
|
return Sent>0;
|
||||||
@@ -5043,70 +5019,70 @@ namespace OpenWifi {
|
|||||||
int flags;
|
int flags;
|
||||||
int n;
|
int n;
|
||||||
bool Done=false;
|
bool Done=false;
|
||||||
Poco::Buffer<char> IncomingFrame(0);
|
try {
|
||||||
n = WS_->receiveFrame(IncomingFrame, flags);
|
Poco::Buffer<char> IncomingFrame(0);
|
||||||
auto Op = flags & Poco::Net::WebSocket::FRAME_OP_BITMASK;
|
n = WS_->receiveFrame(IncomingFrame, flags);
|
||||||
|
auto Op = flags & Poco::Net::WebSocket::FRAME_OP_BITMASK;
|
||||||
|
|
||||||
if(n==0) {
|
if (n == 0) {
|
||||||
return delete this;
|
return delete this;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(Op) {
|
switch (Op) {
|
||||||
case Poco::Net::WebSocket::FRAME_OP_PING: {
|
case Poco::Net::WebSocket::FRAME_OP_PING: {
|
||||||
WS_->sendFrame("", 0,
|
WS_->sendFrame("", 0,
|
||||||
(int)Poco::Net::WebSocket::FRAME_OP_PONG |
|
(int)Poco::Net::WebSocket::FRAME_OP_PONG |
|
||||||
(int)Poco::Net::WebSocket::FRAME_FLAG_FIN);
|
(int)Poco::Net::WebSocket::FRAME_FLAG_FIN);
|
||||||
}
|
} break;
|
||||||
break;
|
case Poco::Net::WebSocket::FRAME_OP_PONG: {
|
||||||
case Poco::Net::WebSocket::FRAME_OP_PONG: {
|
} break;
|
||||||
}
|
case Poco::Net::WebSocket::FRAME_OP_CLOSE: {
|
||||||
break;
|
Logger().warning(Poco::format("CLOSE(%s): Client is closing its connection.", Id_));
|
||||||
case Poco::Net::WebSocket::FRAME_OP_CLOSE: {
|
Done = true;
|
||||||
Logger().warning(Poco::format("CLOSE(%s): Client is closing its connection.",Id_));
|
} break;
|
||||||
Done=true;
|
case Poco::Net::WebSocket::FRAME_OP_TEXT: {
|
||||||
}
|
IncomingFrame.append(0);
|
||||||
break;
|
if (!Authenticated_) {
|
||||||
case Poco::Net::WebSocket::FRAME_OP_TEXT: {
|
std::string Frame{IncomingFrame.begin()};
|
||||||
IncomingFrame.append(0);
|
auto Tokens = Utils::Split(Frame, ':');
|
||||||
if(!Authenticated_) {
|
bool Expired = false, Contacted = false;
|
||||||
std::string Frame{IncomingFrame.begin()};
|
if (Tokens.size() == 2 &&
|
||||||
auto Tokens = Utils::Split(Frame,':');
|
AuthClient()->IsAuthorized(Tokens[1], UserInfo_, Expired, Contacted)) {
|
||||||
bool Expired = false, Contacted = false;
|
Authenticated_ = true;
|
||||||
if(Tokens.size()==2 && AuthClient()->IsAuthorized(Tokens[1], UserInfo_, Expired, Contacted)) {
|
std::string S{"Welcome! Bienvenue! Bienvenidos!"};
|
||||||
Authenticated_=true;
|
WS_->sendFrame(S.c_str(), S.size());
|
||||||
std::string S{"Welcome! Bienvenue! Bienvenidos!"};
|
WebSocketClientServer()->SetUser(Id_, UserInfo_.userinfo.email);
|
||||||
WS_->sendFrame(S.c_str(),S.size());
|
} else {
|
||||||
WebSocketClientServer()->SetUser(Id_,UserInfo_.userinfo.email);
|
std::string S{"Invalid token. Closing connection."};
|
||||||
} else {
|
WS_->sendFrame(S.c_str(), S.size());
|
||||||
std::string S{"Invalid token. Closing connection."};
|
Done = true;
|
||||||
WS_->sendFrame(S.c_str(),S.size());
|
}
|
||||||
Done=true;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
Poco::JSON::Parser P;
|
Poco::JSON::Parser P;
|
||||||
auto Obj = P.parse(IncomingFrame.begin())
|
auto Obj =
|
||||||
.extract<Poco::JSON::Object::Ptr>();
|
P.parse(IncomingFrame.begin()).extract<Poco::JSON::Object::Ptr>();
|
||||||
std::string Answer;
|
std::string Answer;
|
||||||
if(Processor_!= nullptr)
|
if (Processor_ != nullptr)
|
||||||
Processor_->Processor(Obj, Answer, Done);
|
Processor_->Processor(Obj, Answer, Done);
|
||||||
if (!Answer.empty())
|
if (!Answer.empty())
|
||||||
WS_->sendFrame(Answer.c_str(), (int) Answer.size());
|
WS_->sendFrame(Answer.c_str(), (int)Answer.size());
|
||||||
else {
|
else {
|
||||||
WS_->sendFrame("{}", 2);
|
WS_->sendFrame("{}", 2);
|
||||||
}
|
}
|
||||||
} catch (const Poco::JSON::JSONException & E) {
|
} catch (const Poco::JSON::JSONException &E) {
|
||||||
Logger().log(E);
|
Logger().log(E);
|
||||||
}
|
Done=true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
} break;
|
||||||
default:
|
default: {
|
||||||
{
|
}
|
||||||
|
}
|
||||||
}
|
} catch (...) {
|
||||||
}
|
Done=true;
|
||||||
|
}
|
||||||
|
|
||||||
if(Done) {
|
if(Done) {
|
||||||
delete this;
|
delete this;
|
||||||
|
|||||||
Reference in New Issue
Block a user