mirror of
https://github.com/Telecominfraproject/wlan-cloud-ucentralsec.git
synced 2025-11-02 11:47:56 +00:00
Signed-off-by: stephb9959 <stephane.bourque@gmail.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
ARG DEBIAN_VERSION=11.5-slim
|
ARG DEBIAN_VERSION=11.5-slim
|
||||||
ARG POCO_VERSION=poco-tip-v1
|
ARG POCO_VERSION=poco-tip-v2
|
||||||
ARG CPPKAFKA_VERSION=tip-v1
|
ARG CPPKAFKA_VERSION=tip-v1
|
||||||
|
|
||||||
FROM debian:$DEBIAN_VERSION AS build-base
|
FROM debian:$DEBIAN_VERSION AS build-base
|
||||||
|
@@ -304,6 +304,7 @@ namespace OpenWifi::GWObjects {
|
|||||||
field_to_json(Obj,"serialNumber",serialNumber);
|
field_to_json(Obj,"serialNumber",serialNumber);
|
||||||
field_to_json(Obj,"timeout",timeout);
|
field_to_json(Obj,"timeout",timeout);
|
||||||
field_to_json(Obj,"type",type);
|
field_to_json(Obj,"type",type);
|
||||||
|
field_to_json(Obj,"scriptId",scriptId);
|
||||||
field_to_json(Obj,"script",script);
|
field_to_json(Obj,"script",script);
|
||||||
field_to_json(Obj,"when",when);
|
field_to_json(Obj,"when",when);
|
||||||
field_to_json(Obj,"signature", signature);
|
field_to_json(Obj,"signature", signature);
|
||||||
@@ -317,6 +318,7 @@ namespace OpenWifi::GWObjects {
|
|||||||
field_from_json(Obj,"timeout",timeout);
|
field_from_json(Obj,"timeout",timeout);
|
||||||
field_from_json(Obj,"type",type);
|
field_from_json(Obj,"type",type);
|
||||||
field_from_json(Obj,"script",script);
|
field_from_json(Obj,"script",script);
|
||||||
|
field_from_json(Obj,"scriptId",scriptId);
|
||||||
field_from_json(Obj,"when",when);
|
field_from_json(Obj,"when",when);
|
||||||
field_from_json(Obj,"signature", signature);
|
field_from_json(Obj,"signature", signature);
|
||||||
field_from_json(Obj,"deferred", deferred);
|
field_from_json(Obj,"deferred", deferred);
|
||||||
@@ -422,5 +424,56 @@ namespace OpenWifi::GWObjects {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScriptEntry::to_json(Poco::JSON::Object &Obj) const {
|
||||||
|
field_to_json(Obj,"id", id);
|
||||||
|
field_to_json(Obj,"name", name);
|
||||||
|
field_to_json(Obj,"description", description);
|
||||||
|
field_to_json(Obj,"uri", uri);
|
||||||
|
field_to_json(Obj,"content", content);
|
||||||
|
field_to_json(Obj,"version", version);
|
||||||
|
field_to_json(Obj,"type", type);
|
||||||
|
field_to_json(Obj,"created", created);
|
||||||
|
field_to_json(Obj,"modified", modified);
|
||||||
|
field_to_json(Obj,"author", author);
|
||||||
|
field_to_json(Obj,"restricted", restricted);
|
||||||
|
field_to_json(Obj,"deferred", deferred);
|
||||||
|
field_to_json(Obj,"timeout", timeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ScriptEntry::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
||||||
|
try {
|
||||||
|
field_from_json(Obj,"id", id);
|
||||||
|
field_from_json(Obj,"name", name);
|
||||||
|
field_from_json(Obj,"description", description);
|
||||||
|
field_from_json(Obj,"uri", uri);
|
||||||
|
field_from_json(Obj,"content", content);
|
||||||
|
field_from_json(Obj,"version", version);
|
||||||
|
field_from_json(Obj,"type", type);
|
||||||
|
field_from_json(Obj,"created", created);
|
||||||
|
field_from_json(Obj,"modified", modified);
|
||||||
|
field_from_json(Obj,"author", author);
|
||||||
|
field_from_json(Obj,"restricted", restricted);
|
||||||
|
field_from_json(Obj,"deferred", deferred);
|
||||||
|
field_from_json(Obj,"timeout", timeout);
|
||||||
|
return true;
|
||||||
|
} catch (const Poco::Exception &E) {
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScriptEntryList::to_json(Poco::JSON::Object &Obj) const {
|
||||||
|
field_to_json(Obj,"scripts",scripts);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ScriptEntryList::from_json(const Poco::JSON::Object::Ptr &Obj) {
|
||||||
|
try {
|
||||||
|
field_from_json(Obj,"scripts",scripts);
|
||||||
|
return true;
|
||||||
|
} catch (const Poco::Exception &E) {
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -216,11 +216,38 @@ namespace OpenWifi::GWObjects {
|
|||||||
void to_json(Poco::JSON::Object &Obj) const;
|
void to_json(Poco::JSON::Object &Obj) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct ScriptEntry {
|
||||||
|
std::string id;
|
||||||
|
std::string name;
|
||||||
|
std::string description;
|
||||||
|
std::string uri;
|
||||||
|
std::string content;
|
||||||
|
std::string version;
|
||||||
|
std::string type;
|
||||||
|
std::uint64_t created;
|
||||||
|
std::uint64_t modified;
|
||||||
|
std::string author;
|
||||||
|
Types::StringVec restricted;
|
||||||
|
bool deferred=false;
|
||||||
|
std::uint64_t timeout=30;
|
||||||
|
|
||||||
|
void to_json(Poco::JSON::Object &Obj) const;
|
||||||
|
bool from_json(const Poco::JSON::Object::Ptr &Obj);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ScriptEntryList {
|
||||||
|
std::vector<ScriptEntry> scripts;
|
||||||
|
|
||||||
|
void to_json(Poco::JSON::Object &Obj) const;
|
||||||
|
bool from_json(const Poco::JSON::Object::Ptr &Obj);
|
||||||
|
};
|
||||||
|
|
||||||
struct ScriptRequest {
|
struct ScriptRequest {
|
||||||
std::string serialNumber;
|
std::string serialNumber;
|
||||||
uint64_t timeout=30;
|
uint64_t timeout=30;
|
||||||
std::string type;
|
std::string type;
|
||||||
std::string script;
|
std::string script;
|
||||||
|
std::string scriptId;
|
||||||
std::uint64_t when;
|
std::uint64_t when;
|
||||||
std::string signature;
|
std::string signature;
|
||||||
bool deferred;
|
bool deferred;
|
||||||
|
@@ -245,7 +245,7 @@ namespace OpenWifi {
|
|||||||
Poco::Logger::root().setChannel(Splitter);
|
Poco::Logger::root().setChannel(Splitter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Poco::Logger::root().information(fmt::format("Enabled console logs: asynch={} websocket={}",UseAsync,DisableWebSocketLogging));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MicroService::SetColorConsoleLogs(bool UseAsync, bool DisableWebSocketLogging, const std::string & FormatterPattern) {
|
void MicroService::SetColorConsoleLogs(bool UseAsync, bool DisableWebSocketLogging, const std::string & FormatterPattern) {
|
||||||
@@ -274,7 +274,7 @@ namespace OpenWifi {
|
|||||||
Poco::Logger::root().setChannel(Splitter);
|
Poco::Logger::root().setChannel(Splitter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Poco::Logger::root().information(fmt::format("Enabled color console logs: asynch={} websocket={}",UseAsync,DisableWebSocketLogging));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MicroService::SetSQLLogs([[maybe_unused]] bool UseAsync,[[maybe_unused]] bool DisableWebSocketLogging,[[maybe_unused]] const std::string & FormatterPattern) {
|
void MicroService::SetSQLLogs([[maybe_unused]] bool UseAsync,[[maybe_unused]] bool DisableWebSocketLogging,[[maybe_unused]] const std::string & FormatterPattern) {
|
||||||
@@ -327,6 +327,7 @@ namespace OpenWifi {
|
|||||||
Poco::Logger::root().setChannel(Splitter);
|
Poco::Logger::root().setChannel(Splitter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Poco::Logger::root().information(fmt::format("Enabled file logs: asynch={} websocket={}",UseAsync,DisableWebSocketLogging));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DaemonPostInitialization(Poco::Util::Application &self);
|
void DaemonPostInitialization(Poco::Util::Application &self);
|
||||||
|
@@ -229,6 +229,8 @@ namespace OpenWifi::RESTAPI::Errors {
|
|||||||
static const struct msg ApiKeyDoesNotExist{1150,"API Key does not exist."};
|
static const struct msg ApiKeyDoesNotExist{1150,"API Key does not exist."};
|
||||||
|
|
||||||
static const struct msg DeviceIsRestricted{1151,"Device is protected by regulation. This function is not allowed."};
|
static const struct msg DeviceIsRestricted{1151,"Device is protected by regulation. This function is not allowed."};
|
||||||
|
static const struct msg InvalidURI{1152,"Invalid URI."};
|
||||||
|
static const struct msg InvalidScriptSelection{1153,"Only script or scriptId must be specified. Not both."};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -487,6 +487,25 @@ void ReplaceVariables( std::string & Content , const Types::StringPairVec & P) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[[nodiscard]] bool wgetfile(const Poco::URI &uri, const std::string &FileName) {
|
||||||
|
try {
|
||||||
|
Poco::Net::HTTPSClientSession session(uri.getHost(), uri.getPort());
|
||||||
|
|
||||||
|
// send request
|
||||||
|
Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_GET, uri.getPath(), Poco::Net::HTTPMessage::HTTP_1_1);
|
||||||
|
session.sendRequest(req);
|
||||||
|
|
||||||
|
Poco::Net::HTTPResponse res;
|
||||||
|
std::istream &is = session.receiveResponse(res);
|
||||||
|
std::fstream os(FileName,std::ios_base::trunc | std::ios_base::binary | std::ios_base::out);
|
||||||
|
Poco::StreamCopier::copyStream(is,os);
|
||||||
|
return true;
|
||||||
|
} catch (...) {
|
||||||
|
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool ExtractBase64CompressedData(const std::string &CompressedData,
|
bool ExtractBase64CompressedData(const std::string &CompressedData,
|
||||||
std::string &UnCompressedData, uint64_t compress_sz ) {
|
std::string &UnCompressedData, uint64_t compress_sz ) {
|
||||||
std::istringstream ifs(CompressedData);
|
std::istringstream ifs(CompressedData);
|
||||||
@@ -531,4 +550,14 @@ bool ExtractBase64CompressedData(const std::string &CompressedData,
|
|||||||
return "*******";
|
return "*******";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[[nodiscard]] bool ValidateURI(const std::string &uri) {
|
||||||
|
try {
|
||||||
|
Poco::URI u(uri);
|
||||||
|
return true;
|
||||||
|
} catch (...) {
|
||||||
|
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -115,8 +115,10 @@ namespace OpenWifi::Utils {
|
|||||||
[[nodiscard]] std::string BinaryFileToHexString(const Poco::File &F);
|
[[nodiscard]] std::string BinaryFileToHexString(const Poco::File &F);
|
||||||
[[nodiscard]] std::string SecondsToNiceText(uint64_t Seconds);
|
[[nodiscard]] std::string SecondsToNiceText(uint64_t Seconds);
|
||||||
[[nodiscard]] bool wgets(const std::string &URL, std::string &Response);
|
[[nodiscard]] bool wgets(const std::string &URL, std::string &Response);
|
||||||
[[nodiscard]] bool IsAlphaNumeric(const std::string &s);
|
[[nodiscard]] bool wgetfile(const Poco::URI &uri, const std::string &FileName);
|
||||||
|
[[nodiscard]] bool IsAlphaNumeric(const std::string &s);
|
||||||
[[nodiscard]] std::string SanitizeToken(const std::string &Token);
|
[[nodiscard]] std::string SanitizeToken(const std::string &Token);
|
||||||
|
[[nodiscard]] bool ValidateURI(const std::string &uri);
|
||||||
|
|
||||||
template< typename T >
|
template< typename T >
|
||||||
std::string int_to_hex( T i )
|
std::string int_to_hex( T i )
|
||||||
|
Reference in New Issue
Block a user