From 3b0f2a0977bf6628bcf9beefad3689008acd3b9e Mon Sep 17 00:00:00 2001 From: stephb9959 Date: Tue, 31 May 2022 23:53:11 -0700 Subject: [PATCH] Framework update. --- src/RESTObjects/RESTAPI_AnalyticsObjects.cpp | 10 +- src/RESTObjects/RESTAPI_AnalyticsObjects.h | 5 +- src/RESTObjects/RESTAPI_CertObjects.cpp | 342 ++++++++++--------- src/RESTObjects/RESTAPI_CertObjects.h | 183 +++++----- src/RESTObjects/RESTAPI_FMSObjects.cpp | 35 +- src/RESTObjects/RESTAPI_FMSObjects.h | 26 +- src/RESTObjects/RESTAPI_OWLSobjects.cpp | 110 ++++++ src/RESTObjects/RESTAPI_OWLSobjects.h | 77 +++++ src/RESTObjects/RESTAPI_SecurityObjects.h | 8 +- test_scripts/update_objects.sh | 24 ++ 10 files changed, 568 insertions(+), 252 deletions(-) create mode 100644 src/RESTObjects/RESTAPI_OWLSobjects.cpp create mode 100644 src/RESTObjects/RESTAPI_OWLSobjects.h create mode 100755 test_scripts/update_objects.sh diff --git a/src/RESTObjects/RESTAPI_AnalyticsObjects.cpp b/src/RESTObjects/RESTAPI_AnalyticsObjects.cpp index aebe317..e7738ba 100644 --- a/src/RESTObjects/RESTAPI_AnalyticsObjects.cpp +++ b/src/RESTObjects/RESTAPI_AnalyticsObjects.cpp @@ -538,8 +538,8 @@ namespace OpenWifi::AnalyticsObjects { void WifiClientHistory::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj,"timestamp",timestamp); - field_to_json(Obj,"stationId",stationId); - field_to_json(Obj,"bssId",bssId); + field_to_json(Obj,"station_id",station_id); + field_to_json(Obj,"bssid",bssid); field_to_json(Obj,"ssid",ssid); field_to_json(Obj,"rssi",rssi); field_to_json(Obj,"rx_bitrate",rx_bitrate); @@ -573,13 +573,14 @@ namespace OpenWifi::AnalyticsObjects { field_to_json(Obj,"connected",connected); field_to_json(Obj,"inactive",inactive); field_to_json(Obj,"tx_retries",tx_retries); + field_to_json(Obj,"venue_id",venue_id); } bool WifiClientHistory::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj,"timestamp",timestamp); - field_from_json(Obj,"stationId",stationId); - field_from_json(Obj,"bssId",bssId); + field_from_json(Obj,"station_id",station_id); + field_from_json(Obj,"bssid",bssid); field_from_json(Obj,"ssid",ssid); field_from_json(Obj,"rssi",rssi); field_from_json(Obj,"rx_bitrate",rx_bitrate); @@ -613,6 +614,7 @@ namespace OpenWifi::AnalyticsObjects { field_from_json(Obj,"connected",connected); field_from_json(Obj,"inactive",inactive); field_from_json(Obj,"tx_retries",tx_retries); + field_from_json(Obj,"venue_id",venue_id); return true; } catch(...) { diff --git a/src/RESTObjects/RESTAPI_AnalyticsObjects.h b/src/RESTObjects/RESTAPI_AnalyticsObjects.h index 6573aca..c1328f4 100644 --- a/src/RESTObjects/RESTAPI_AnalyticsObjects.h +++ b/src/RESTObjects/RESTAPI_AnalyticsObjects.h @@ -376,8 +376,8 @@ namespace OpenWifi { struct WifiClientHistory { uint64_t timestamp=OpenWifi::Now(); - std::string stationId; - std::string bssId; + std::string station_id; + std::string bssid; std::string ssid; int64_t rssi=0; uint32_t rx_bitrate=0; @@ -411,6 +411,7 @@ namespace OpenWifi { uint64_t connected=0; uint64_t inactive=0; uint64_t tx_retries=0; + std::string venue_id; void to_json(Poco::JSON::Object &Obj) const; bool from_json(const Poco::JSON::Object::Ptr &Obj); diff --git a/src/RESTObjects/RESTAPI_CertObjects.cpp b/src/RESTObjects/RESTAPI_CertObjects.cpp index f3aca35..ea55bd4 100644 --- a/src/RESTObjects/RESTAPI_CertObjects.cpp +++ b/src/RESTObjects/RESTAPI_CertObjects.cpp @@ -3,176 +3,206 @@ // #include "RESTAPI_CertObjects.h" +#include "framework/MicroService.h" using OpenWifi::RESTAPI_utils::field_to_json; using OpenWifi::RESTAPI_utils::field_from_json; -namespace OpenWifi { - namespace CertObjects { - void CertificateEntry::to_json(Poco::JSON::Object &Obj) const { - field_to_json(Obj,"id", id); - field_to_json(Obj,"entity", entity); - field_to_json(Obj,"creator", creator); - field_to_json(Obj,"type", type); - field_to_json(Obj,"status", status); - field_to_json(Obj,"certificate", certificate); - field_to_json(Obj,"key", key); - field_to_json(Obj,"devid", devid); - field_to_json(Obj,"cas", cas); - field_to_json(Obj,"manufacturer", manufacturer); - field_to_json(Obj,"model", model); - field_to_json(Obj,"redirector", redirector); - field_to_json(Obj,"commonName", commonName); - field_to_json(Obj,"certificateId", certificateId); - field_to_json(Obj,"batch", batch); - field_to_json(Obj,"created", created); - field_to_json(Obj,"modified", modified); - field_to_json(Obj,"revoked", revoked); - field_to_json(Obj,"revokeCount", revokeCount); - } +namespace OpenWifi::CertObjects { + void CertificateEntry::to_json(Poco::JSON::Object &Obj) const { + field_to_json(Obj,"id", id); + field_to_json(Obj,"entity", entity); + field_to_json(Obj,"creator", creator); + field_to_json(Obj,"type", type); + field_to_json(Obj,"status", status); + field_to_json(Obj,"certificate", certificate); + field_to_json(Obj,"key", key); + field_to_json(Obj,"devid", devid); + field_to_json(Obj,"cas", cas); + field_to_json(Obj,"manufacturer", manufacturer); + field_to_json(Obj,"model", model); + field_to_json(Obj,"redirector", redirector); + field_to_json(Obj,"commonName", commonName); + field_to_json(Obj,"certificateId", certificateId); + field_to_json(Obj,"batch", batch); + field_to_json(Obj,"created", created); + field_to_json(Obj,"modified", modified); + field_to_json(Obj,"revoked", revoked); + field_to_json(Obj,"revokeCount", revokeCount); + field_to_json(Obj,"synched", synched); + } - bool CertificateEntry::from_json(const Poco::JSON::Object::Ptr &Obj) { - try { - field_from_json(Obj,"id", id); - field_from_json(Obj,"entity", entity); - field_from_json(Obj,"creator", creator); - field_from_json(Obj,"type", type); - field_from_json(Obj,"status", status); - field_from_json(Obj,"certificate", certificate); - field_from_json(Obj,"key", key); - field_from_json(Obj,"devid", devid); - field_from_json(Obj,"cas", cas); - field_from_json(Obj,"manufacturer", manufacturer); - field_from_json(Obj,"model", model); - field_from_json(Obj,"redirector", redirector); - field_from_json(Obj,"commonName", commonName); - field_from_json(Obj,"certificateId", certificateId); - field_from_json(Obj,"batch", batch); - field_from_json(Obj,"created", created); - field_from_json(Obj,"modified", modified); - field_from_json(Obj,"revoked", revoked); - field_from_json(Obj,"revokeCount", revokeCount); - return true; - } catch (...) { - } - return false; + bool CertificateEntry::from_json(const Poco::JSON::Object::Ptr &Obj) { + try { + field_from_json(Obj,"id", id); + field_from_json(Obj,"entity", entity); + field_from_json(Obj,"creator", creator); + field_from_json(Obj,"type", type); + field_from_json(Obj,"status", status); + field_from_json(Obj,"certificate", certificate); + field_from_json(Obj,"key", key); + field_from_json(Obj,"devid", devid); + field_from_json(Obj,"cas", cas); + field_from_json(Obj,"manufacturer", manufacturer); + field_from_json(Obj,"model", model); + field_from_json(Obj,"redirector", redirector); + field_from_json(Obj,"commonName", commonName); + field_from_json(Obj,"certificateId", certificateId); + field_from_json(Obj,"batch", batch); + field_from_json(Obj,"created", created); + field_from_json(Obj,"modified", modified); + field_from_json(Obj,"revoked", revoked); + field_from_json(Obj,"revokeCount", revokeCount); + field_from_json(Obj,"synched", synched); + return true; + } catch (...) { } + return false; + } - void EntityEntry::to_json(Poco::JSON::Object &Obj) const { - field_to_json(Obj,"id", id); - field_to_json(Obj,"creator", creator); - field_to_json(Obj,"name", name); - field_to_json(Obj,"description", description); - field_to_json(Obj,"defaultRedirector", defaultRedirector); - field_to_json(Obj,"apiKey", apiKey); - field_to_json(Obj,"serverEnrollmentProfile", serverEnrollmentProfile); - field_to_json(Obj,"clientEnrollmentProfile", clientEnrollmentProfile); - field_to_json(Obj,"organization", organization); - field_to_json(Obj,"created", created); - field_to_json(Obj,"modified", modified); - field_to_json(Obj,"suspended", suspended); - field_to_json(Obj,"deleted", deleted); - field_to_json(Obj,"notes", notes); - } + void EntityEntry::to_json(Poco::JSON::Object &Obj) const { + field_to_json(Obj,"id", id); + field_to_json(Obj,"creator", creator); + field_to_json(Obj,"name", name); + field_to_json(Obj,"description", description); + field_to_json(Obj,"defaultRedirector", defaultRedirector); + field_to_json(Obj,"apiKey", apiKey); + field_to_json(Obj,"serverEnrollmentProfile", serverEnrollmentProfile); + field_to_json(Obj,"clientEnrollmentProfile", clientEnrollmentProfile); + field_to_json(Obj,"organization", organization); + field_to_json(Obj,"created", created); + field_to_json(Obj,"modified", modified); + field_to_json(Obj,"suspended", suspended); + field_to_json(Obj,"deleted", deleted); + field_to_json(Obj,"notes", notes); + } - bool EntityEntry::from_json(const Poco::JSON::Object::Ptr &Obj) { - try { - field_from_json(Obj,"id", id); - field_from_json(Obj,"creator", creator); - field_from_json(Obj,"name", name); - field_from_json(Obj,"description", description); - field_from_json(Obj,"defaultRedirector", defaultRedirector); - field_from_json(Obj,"apiKey", apiKey); - field_from_json(Obj,"serverEnrollmentProfile", serverEnrollmentProfile); - field_from_json(Obj,"clientEnrollmentProfile", clientEnrollmentProfile); - field_from_json(Obj,"organization", organization); - field_from_json(Obj,"created", created); - field_from_json(Obj,"modified", modified); - field_from_json(Obj,"suspended", suspended); - field_from_json(Obj,"deleted", deleted); - field_from_json(Obj,"notes", notes); - return true; - } catch (...) { - } - return false; + bool EntityEntry::from_json(const Poco::JSON::Object::Ptr &Obj) { + try { + field_from_json(Obj,"id", id); + field_from_json(Obj,"creator", creator); + field_from_json(Obj,"name", name); + field_from_json(Obj,"description", description); + field_from_json(Obj,"defaultRedirector", defaultRedirector); + field_from_json(Obj,"apiKey", apiKey); + field_from_json(Obj,"serverEnrollmentProfile", serverEnrollmentProfile); + field_from_json(Obj,"clientEnrollmentProfile", clientEnrollmentProfile); + field_from_json(Obj,"organization", organization); + field_from_json(Obj,"created", created); + field_from_json(Obj,"modified", modified); + field_from_json(Obj,"suspended", suspended); + field_from_json(Obj,"deleted", deleted); + field_from_json(Obj,"notes", notes); + return true; + } catch (...) { } + return false; + } - void BatchEntry::to_json(Poco::JSON::Object &Obj) const { - field_to_json(Obj,"id", id); - field_to_json(Obj,"entity", entity); - field_to_json(Obj,"creator", creator); - field_to_json(Obj,"name", name); - field_to_json(Obj,"description", description); - field_to_json(Obj,"manufacturer", manufacturer); - field_to_json(Obj,"model", model); - field_to_json(Obj,"redirector", redirector); - field_to_json(Obj,"commonNames", commonNames); - field_to_json(Obj,"jobHistory", jobHistory); - field_to_json(Obj,"notes", notes); - field_to_json(Obj,"submitted", submitted); - field_to_json(Obj,"started", started); - field_to_json(Obj,"completed", completed); - field_to_json(Obj,"modified", modified); - } + void BatchEntry::to_json(Poco::JSON::Object &Obj) const { + field_to_json(Obj,"id", id); + field_to_json(Obj,"entity", entity); + field_to_json(Obj,"creator", creator); + field_to_json(Obj,"name", name); + field_to_json(Obj,"description", description); + field_to_json(Obj,"manufacturer", manufacturer); + field_to_json(Obj,"model", model); + field_to_json(Obj,"redirector", redirector); + field_to_json(Obj,"commonNames", commonNames); + field_to_json(Obj,"jobHistory", jobHistory); + field_to_json(Obj,"notes", notes); + field_to_json(Obj,"submitted", submitted); + field_to_json(Obj,"started", started); + field_to_json(Obj,"completed", completed); + field_to_json(Obj,"modified", modified); + } - bool BatchEntry::from_json(const Poco::JSON::Object::Ptr &Obj) { - try { - field_from_json(Obj,"id", id); - field_from_json(Obj,"entity", entity); - field_from_json(Obj,"creator", creator); - field_from_json(Obj,"name", name); - field_from_json(Obj,"description", description); - field_from_json(Obj,"manufacturer", manufacturer); - field_from_json(Obj,"model", model); - field_from_json(Obj,"redirector", redirector); - field_from_json(Obj,"commonNames", commonNames); - field_from_json(Obj,"jobHistory", jobHistory); - field_from_json(Obj,"notes", notes); - field_from_json(Obj,"submitted", submitted); - field_from_json(Obj,"started", started); - field_from_json(Obj,"completed", completed); - field_from_json(Obj,"modified", modified); - return true; - } catch (...) { - } - return false; + bool BatchEntry::from_json(const Poco::JSON::Object::Ptr &Obj) { + try { + field_from_json(Obj,"id", id); + field_from_json(Obj,"entity", entity); + field_from_json(Obj,"creator", creator); + field_from_json(Obj,"name", name); + field_from_json(Obj,"description", description); + field_from_json(Obj,"manufacturer", manufacturer); + field_from_json(Obj,"model", model); + field_from_json(Obj,"redirector", redirector); + field_from_json(Obj,"commonNames", commonNames); + field_from_json(Obj,"jobHistory", jobHistory); + field_from_json(Obj,"notes", notes); + field_from_json(Obj,"submitted", submitted); + field_from_json(Obj,"started", started); + field_from_json(Obj,"completed", completed); + field_from_json(Obj,"modified", modified); + return true; + } catch (...) { } + return false; + } - void JobEntry::to_json(Poco::JSON::Object &Obj) const { - field_to_json(Obj,"id", id); - field_to_json(Obj,"entity", entity); - field_to_json(Obj,"creator", creator); - field_to_json(Obj,"batch", batch); - field_to_json(Obj,"commonNames", commonNames); - field_to_json(Obj,"completedNames", completedNames); - field_to_json(Obj,"errorNames", errorNames); - field_to_json(Obj,"status", status); - field_to_json(Obj,"command", command); - field_to_json(Obj,"parameters", parameters); - field_to_json(Obj,"submitted", submitted); - field_to_json(Obj,"started", started); - field_to_json(Obj,"completed", completed); - } + void JobEntry::to_json(Poco::JSON::Object &Obj) const { + field_to_json(Obj,"id", id); + field_to_json(Obj,"entity", entity); + field_to_json(Obj,"creator", creator); + field_to_json(Obj,"batch", batch); + field_to_json(Obj,"commonNames", commonNames); + field_to_json(Obj,"completedNames", completedNames); + field_to_json(Obj,"errorNames", errorNames); + field_to_json(Obj,"status", status); + field_to_json(Obj,"command", command); + field_to_json(Obj,"parameters", parameters); + field_to_json(Obj,"submitted", submitted); + field_to_json(Obj,"started", started); + field_to_json(Obj,"completed", completed); + } - bool JobEntry::from_json(const Poco::JSON::Object::Ptr &Obj) { - try { - field_from_json(Obj,"id", id); - field_from_json(Obj,"entity", entity); - field_from_json(Obj,"creator", creator); - field_from_json(Obj,"batch", batch); - field_from_json(Obj,"commonNames", commonNames); - field_from_json(Obj,"completedNames", completedNames); - field_from_json(Obj,"errorNames", errorNames); - field_from_json(Obj,"status", status); - field_from_json(Obj,"command", command); - field_from_json(Obj,"parameters", parameters); - field_from_json(Obj,"submitted", submitted); - field_from_json(Obj,"started", started); - field_from_json(Obj,"completed", completed); - return true; - } catch (...) { - } - return false; + bool JobEntry::from_json(const Poco::JSON::Object::Ptr &Obj) { + try { + field_from_json(Obj,"id", id); + field_from_json(Obj,"entity", entity); + field_from_json(Obj,"creator", creator); + field_from_json(Obj,"batch", batch); + field_from_json(Obj,"commonNames", commonNames); + field_from_json(Obj,"completedNames", completedNames); + field_from_json(Obj,"errorNames", errorNames); + field_from_json(Obj,"status", status); + field_from_json(Obj,"command", command); + field_from_json(Obj,"parameters", parameters); + field_from_json(Obj,"submitted", submitted); + field_from_json(Obj,"started", started); + field_from_json(Obj,"completed", completed); + return true; + } catch (...) { } + return false; + } + + void DashBoardYearlyStats::to_json(Poco::JSON::Object &Obj) const { + field_to_json(Obj, "year", year); + field_to_json(Obj, "activeCerts", activeCerts); + field_to_json(Obj, "revokedCerts", revokedCerts); + } + + void Dashboard::to_json(Poco::JSON::Object &Obj) const { + field_to_json(Obj,"snapshot", snapshot); + field_to_json(Obj,"numberOfIssuedCerts", numberOfIssuedCerts); + field_to_json(Obj,"numberOfRevokedCerts", numberOfRevokedCerts); + field_to_json(Obj,"activeCertsPerOrganization", activeCertsPerOrganization); + field_to_json(Obj,"revokedCertsPerOrganization", revokedCertsPerOrganization); + field_to_json(Obj,"numberOfRedirectors", numberOfRedirectors); + field_to_json(Obj,"deviceTypes", deviceTypes); + field_to_json(Obj,"monthlyNumberOfCerts", monthlyNumberOfCerts); + field_to_json(Obj,"monthlyNumberOfCertsPerOrgPerYear", monthlyNumberOfCertsPerOrgPerYear); + } + + void Dashboard::reset() { + snapshot=0; + numberOfRevokedCerts = numberOfIssuedCerts = 0; + activeCertsPerOrganization.clear(); + revokedCertsPerOrganization.clear(); + numberOfRedirectors.clear(); + deviceTypes.clear(); + monthlyNumberOfCerts.clear(); + monthlyNumberOfCertsPerOrgPerYear.clear(); } } \ No newline at end of file diff --git a/src/RESTObjects/RESTAPI_CertObjects.h b/src/RESTObjects/RESTAPI_CertObjects.h index aeed486..40b75a0 100644 --- a/src/RESTObjects/RESTAPI_CertObjects.h +++ b/src/RESTObjects/RESTAPI_CertObjects.h @@ -5,97 +5,118 @@ #pragma once #include -#include "framework/MicroService.h" #include "framework/OpenWifiTypes.h" #include "RESTObjects/RESTAPI_SecurityObjects.h" -namespace OpenWifi { +namespace OpenWifi::CertObjects { - namespace CertObjects { + struct CertificateEntry { + OpenWifi::Types::UUID_t id; + OpenWifi::Types::UUID_t entity; + OpenWifi::Types::UUID_t creator; + std::string type; + std::string status; + std::string certificate; + std::string key; + std::string devid; + std::string cas; + std::string manufacturer; + std::string model; + std::string redirector; + std::string commonName; + std::string certificateId; + OpenWifi::Types::UUID_t batch; + uint64_t created = 0; + uint64_t modified = 0; + uint64_t revoked = 0; + uint64_t revokeCount = 0; + uint64_t synched = 0; - struct CertificateEntry { - OpenWifi::Types::UUID_t id; - OpenWifi::Types::UUID_t entity; - OpenWifi::Types::UUID_t creator; - std::string type; - std::string status; - std::string certificate; - std::string key; - std::string devid; - std::string cas; - std::string manufacturer; - std::string model; - std::string redirector; - std::string commonName; - std::string certificateId; - OpenWifi::Types::UUID_t batch; - uint64_t created = 0; - uint64_t modified = 0; - uint64_t revoked = 0; - uint64_t revokeCount = 0; + void to_json(Poco::JSON::Object &Obj) const; + bool from_json(const Poco::JSON::Object::Ptr &Obj); + }; - void to_json(Poco::JSON::Object &Obj) const; - bool from_json(const Poco::JSON::Object::Ptr &Obj); - }; + struct EntityEntry { + OpenWifi::Types::UUID_t id; + OpenWifi::Types::UUID_t creator; + std::string name; + std::string description; + std::string defaultRedirector; + std::string apiKey; + std::string serverEnrollmentProfile; + std::string clientEnrollmentProfile; + std::string organization; + SecurityObjects::NoteInfoVec notes; + bool suspended=false; + bool deleted=false; + uint64_t created = 0 ; + uint64_t modified = 0 ; - struct EntityEntry { - OpenWifi::Types::UUID_t id; - OpenWifi::Types::UUID_t creator; - std::string name; - std::string description; - std::string defaultRedirector; - std::string apiKey; - std::string serverEnrollmentProfile; - std::string clientEnrollmentProfile; - std::string organization; - SecurityObjects::NoteInfoVec notes; - bool suspended=false; - bool deleted=false; - uint64_t created = 0 ; - uint64_t modified = 0 ; + void to_json(Poco::JSON::Object &Obj) const; + bool from_json(const Poco::JSON::Object::Ptr &Obj); + }; - void to_json(Poco::JSON::Object &Obj) const; - bool from_json(const Poco::JSON::Object::Ptr &Obj); - }; + struct BatchEntry { + OpenWifi::Types::UUID_t id; + OpenWifi::Types::UUID_t entity; + OpenWifi::Types::UUID_t creator; + std::string name; + std::string description; + std::string manufacturer; + std::string model; + std::string redirector; + std::vector commonNames; + std::vector jobHistory; + SecurityObjects::NoteInfoVec notes; + uint64_t submitted = 0 ; + uint64_t started = 0 ; + uint64_t completed = 0 ; + uint64_t modified = 0 ; - struct BatchEntry { - OpenWifi::Types::UUID_t id; - OpenWifi::Types::UUID_t entity; - OpenWifi::Types::UUID_t creator; - std::string name; - std::string description; - std::string manufacturer; - std::string model; - std::string redirector; - std::vector commonNames; - std::vector jobHistory; - SecurityObjects::NoteInfoVec notes; - uint64_t submitted = 0 ; - uint64_t started = 0 ; - uint64_t completed = 0 ; - uint64_t modified = 0 ; + void to_json(Poco::JSON::Object &Obj) const; + bool from_json(const Poco::JSON::Object::Ptr &Obj); + }; - void to_json(Poco::JSON::Object &Obj) const; - bool from_json(const Poco::JSON::Object::Ptr &Obj); - }; + struct JobEntry { + OpenWifi::Types::UUID_t id; + OpenWifi::Types::UUID_t entity; + OpenWifi::Types::UUID_t creator; + OpenWifi::Types::UUID_t batch; + std::string command; + OpenWifi::Types::StringVec commonNames; + OpenWifi::Types::StringVec completedNames; + OpenWifi::Types::StringVec errorNames; + Types::StringPairVec parameters; + std::string status; + uint64_t submitted=0; + uint64_t started=0; + uint64_t completed=0; - struct JobEntry { - OpenWifi::Types::UUID_t id; - OpenWifi::Types::UUID_t entity; - OpenWifi::Types::UUID_t creator; - OpenWifi::Types::UUID_t batch; - std::string command; - OpenWifi::Types::StringVec commonNames; - OpenWifi::Types::StringVec completedNames; - OpenWifi::Types::StringVec errorNames; - Types::StringPairVec parameters; - std::string status; - uint64_t submitted=0; - uint64_t started=0; - uint64_t completed=0; + void to_json(Poco::JSON::Object &Obj) const; + bool from_json(const Poco::JSON::Object::Ptr &Obj); + }; + + struct DashBoardYearlyStats { + uint64_t year=0; + OpenWifi::Types::Counted3DMapSII activeCerts; + OpenWifi::Types::Counted3DMapSII revokedCerts; + + void to_json(Poco::JSON::Object &Obj) const; + }; + + struct Dashboard { + uint64_t snapshot=0; + uint64_t numberOfIssuedCerts=0; + uint64_t numberOfRevokedCerts=0; + OpenWifi::Types::CountedMap activeCertsPerOrganization; + OpenWifi::Types::CountedMap revokedCertsPerOrganization; + OpenWifi::Types::CountedMap numberOfRedirectors; + OpenWifi::Types::CountedMap deviceTypes; + OpenWifi::Types::CountedMap monthlyNumberOfCerts; + std::vector monthlyNumberOfCertsPerOrgPerYear; + + void to_json(Poco::JSON::Object &Obj) const; + void reset(); + }; - void to_json(Poco::JSON::Object &Obj) const; - bool from_json(const Poco::JSON::Object::Ptr &Obj); - }; - } } \ No newline at end of file diff --git a/src/RESTObjects/RESTAPI_FMSObjects.cpp b/src/RESTObjects/RESTAPI_FMSObjects.cpp index d5152a6..ceb3619 100644 --- a/src/RESTObjects/RESTAPI_FMSObjects.cpp +++ b/src/RESTObjects/RESTAPI_FMSObjects.cpp @@ -233,7 +233,7 @@ namespace OpenWifi::FMSObjects { UnknownFirmwares_.clear(); totalSecondsOld_.clear(); numberOfDevices = 0 ; - snapshot = std::time(nullptr); + snapshot = OpenWifi::Now(); } bool DeviceReport::from_json([[maybe_unused]] const Poco::JSON::Object::Ptr &Obj) { @@ -273,4 +273,37 @@ namespace OpenWifi::FMSObjects { } return false; } + + void DeviceCurrentInfo::to_json(Poco::JSON::Object &Obj) const { + field_to_json(Obj, "serialNumber",serialNumber); + field_to_json(Obj, "revision", revision); + field_to_json(Obj, "upgraded", upgraded); + } + + bool DeviceCurrentInfo::from_json(const Poco::JSON::Object::Ptr &Obj) { + try { + field_from_json(Obj, "serialNumber",serialNumber); + field_from_json(Obj, "revision", revision); + field_from_json(Obj, "upgraded", upgraded); + return true; + } catch(...) { + + } + return false; + } + + void DeviceCurrentInfoList::to_json(Poco::JSON::Object &Obj) const { + field_to_json(Obj, "devices",devices); + } + + bool DeviceCurrentInfoList::from_json(const Poco::JSON::Object::Ptr &Obj) { + try { + field_from_json(Obj, "devices",devices); + return true; + } catch(...) { + + } + return false; + } + } diff --git a/src/RESTObjects/RESTAPI_FMSObjects.h b/src/RESTObjects/RESTAPI_FMSObjects.h index 10a6693..60aea5f 100644 --- a/src/RESTObjects/RESTAPI_FMSObjects.h +++ b/src/RESTObjects/RESTAPI_FMSObjects.h @@ -4,9 +4,7 @@ #include -#ifndef UCENTRALFMS_RESTAPI_FMSOBJECTS_H -#define UCENTRALFMS_RESTAPI_FMSOBJECTS_H - +#pragma once #include "RESTAPI_SecurityObjects.h" #include "framework/OpenWifiTypes.h" @@ -29,7 +27,7 @@ namespace OpenWifi::FMSObjects { std::string location; std::string uploader; std::string digest; - bool latest=0; + bool latest=false; SecurityObjects::NoteInfoVec notes; uint64_t created=0; @@ -141,7 +139,21 @@ namespace OpenWifi::FMSObjects { void to_json(Poco::JSON::Object &Obj) const; bool from_json(const Poco::JSON::Object::Ptr &Obj); }; + + struct DeviceCurrentInfo { + std::string serialNumber; + std::string revision; + uint64_t upgraded=0; + + void to_json(Poco::JSON::Object &Obj) const; + bool from_json(const Poco::JSON::Object::Ptr &Obj); + }; + + struct DeviceCurrentInfoList { + std::vector devices; + + void to_json(Poco::JSON::Object &Obj) const; + bool from_json(const Poco::JSON::Object::Ptr &Obj); + }; + } - - -#endif //UCENTRALFMS_RESTAPI_FMSOBJECTS_H diff --git a/src/RESTObjects/RESTAPI_OWLSobjects.cpp b/src/RESTObjects/RESTAPI_OWLSobjects.cpp new file mode 100644 index 0000000..5a16165 --- /dev/null +++ b/src/RESTObjects/RESTAPI_OWLSobjects.cpp @@ -0,0 +1,110 @@ +// +// Created by stephane bourque on 2021-08-31. +// + +#include "framework/MicroService.h" + +using OpenWifi::RESTAPI_utils::field_to_json; +using OpenWifi::RESTAPI_utils::field_from_json; +using OpenWifi::RESTAPI_utils::EmbedDocument; + +#include "RESTAPI_OWLSobjects.h" + +// SIM -> 0x53/0x073, 0x49/0x69, 0x4d/0x6d + +namespace OpenWifi::OWLSObjects { + + void SimulationDetails::to_json(Poco::JSON::Object &Obj) const { + field_to_json(Obj,"id", id); + field_to_json(Obj,"name", name); + field_to_json(Obj,"gateway", gateway); + field_to_json(Obj,"certificate", certificate); + field_to_json(Obj,"key", key); + field_to_json(Obj,"macPrefix", macPrefix); + field_to_json(Obj,"deviceType", deviceType); + field_to_json(Obj,"devices", devices); + field_to_json(Obj,"healthCheckInterval", healthCheckInterval); + field_to_json(Obj,"stateInterval", stateInterval); + field_to_json(Obj,"minAssociations", minAssociations); + field_to_json(Obj,"maxAssociations", maxAssociations); + field_to_json(Obj,"minClients", minClients); + field_to_json(Obj,"maxClients", maxClients); + field_to_json(Obj,"simulationLength", simulationLength); + field_to_json(Obj,"threads", threads); + field_to_json(Obj,"clientInterval", clientInterval); + field_to_json(Obj,"keepAlive", keepAlive); + field_to_json(Obj,"reconnectInterval", reconnectInterval); + field_to_json(Obj,"concurrentDevices", concurrentDevices); + } + + bool SimulationDetails::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,"gateway", gateway); + field_from_json(Obj,"certificate", certificate); + field_from_json(Obj,"key", key); + field_from_json(Obj,"macPrefix", macPrefix); + field_from_json(Obj,"deviceType", deviceType); + field_from_json(Obj,"devices", devices); + field_from_json(Obj,"healthCheckInterval", healthCheckInterval); + field_from_json(Obj,"stateInterval", stateInterval); + field_from_json(Obj,"minAssociations", minAssociations); + field_from_json(Obj,"maxAssociations", maxAssociations); + field_from_json(Obj,"minClients", minClients); + field_from_json(Obj,"maxClients", maxClients); + field_from_json(Obj,"simulationLength", simulationLength); + field_from_json(Obj,"threads", threads); + field_from_json(Obj,"clientInterval", clientInterval); + field_from_json(Obj,"keepAlive", keepAlive); + field_from_json(Obj,"reconnectInterval", reconnectInterval); + field_from_json(Obj,"concurrentDevices", concurrentDevices); + return true; + } catch(...) { + + } + return false; + } + + void SimulationDetailsList::to_json(Poco::JSON::Object &Obj) const { + field_to_json(Obj,"list", list); + } + + bool SimulationDetailsList::from_json(const Poco::JSON::Object::Ptr &Obj) { + try { + field_from_json(Obj,"list", list); + return true; + } catch(...) { + + } + return false; + } + + void SimulationStatus::to_json(Poco::JSON::Object &Obj) const { + field_to_json(Obj,"id", id); + field_to_json(Obj,"simulationId", simulationId); + field_to_json(Obj,"state", state); + field_to_json(Obj,"tx", tx); + field_to_json(Obj,"rx", rx); + field_to_json(Obj,"msgsTx", msgsTx); + field_to_json(Obj,"msgsRx", msgsRx); + field_to_json(Obj,"liveDevices", liveDevices); + field_to_json(Obj,"timeToFullDevices", timeToFullDevices); + field_to_json(Obj,"startTime", startTime); + field_to_json(Obj,"endTime", endTime); + field_to_json(Obj,"errorDevices", errorDevices); + field_to_json(Obj,"owner", owner); + } + + void Dashboard::to_json([[maybe_unused]] Poco::JSON::Object &Obj) const { + + } + + bool Dashboard::from_json([[maybe_unused]] const Poco::JSON::Object::Ptr &Obj) { + return true; + } + + void Dashboard::reset() { + + } +} diff --git a/src/RESTObjects/RESTAPI_OWLSobjects.h b/src/RESTObjects/RESTAPI_OWLSobjects.h new file mode 100644 index 0000000..4dadcb6 --- /dev/null +++ b/src/RESTObjects/RESTAPI_OWLSobjects.h @@ -0,0 +1,77 @@ +// +// Created by stephane bourque on 2021-08-31. +// + +#ifndef UCENTRALSIM_RESTAPI_OWLSOBJECTS_H +#define UCENTRALSIM_RESTAPI_OWLSOBJECTS_H + +#include +#include "Poco/JSON/Object.h" + +namespace OpenWifi::OWLSObjects { + + struct SimulationDetails { + std::string id; + std::string name; + std::string gateway; + std::string certificate; + std::string key; + std::string macPrefix; + std::string deviceType; + uint64_t devices = 5; + uint64_t healthCheckInterval = 60; + uint64_t stateInterval = 60 ; + uint64_t minAssociations = 1; + uint64_t maxAssociations = 3; + uint64_t minClients = 1 ; + uint64_t maxClients = 3; + uint64_t simulationLength = 60 * 60; + uint64_t threads = 16; + uint64_t clientInterval = 1; + uint64_t keepAlive = 300; + uint64_t reconnectInterval = 30 ; + uint64_t concurrentDevices = 5; + + void to_json(Poco::JSON::Object &Obj) const; + bool from_json(const Poco::JSON::Object::Ptr &Obj); + }; + + struct SimulationDetailsList { + std::vector list; + + void to_json(Poco::JSON::Object &Obj) const; + bool from_json(const Poco::JSON::Object::Ptr &Obj); + }; + + struct SimulationStatus { + std::string id; + std::string simulationId; + std::string state; + uint64_t tx; + uint64_t rx; + uint64_t msgsTx; + uint64_t msgsRx; + uint64_t liveDevices; + uint64_t timeToFullDevices; + uint64_t startTime; + uint64_t endTime; + uint64_t errorDevices; + std::string owner; + + void to_json(Poco::JSON::Object &Obj) const; + }; + + + struct Dashboard { + int O; + + void to_json(Poco::JSON::Object &Obj) const; + bool from_json(const Poco::JSON::Object::Ptr &Obj); + void reset(); + + }; + +} + + +#endif //UCENTRALSIM_RESTAPI_OWLSOBJECTS_H diff --git a/src/RESTObjects/RESTAPI_SecurityObjects.h b/src/RESTObjects/RESTAPI_SecurityObjects.h index ac3b6bd..a3f06e8 100644 --- a/src/RESTObjects/RESTAPI_SecurityObjects.h +++ b/src/RESTObjects/RESTAPI_SecurityObjects.h @@ -9,6 +9,7 @@ #pragma once #include +#include #include "framework/OpenWifiTypes.h" #include "Poco/JSON/Object.h" #include "Poco/Data/LOB.h" @@ -27,8 +28,13 @@ namespace OpenWifi { bool Delete_ = true; bool PortalLogin_ = true; + AclTemplate() noexcept = default; + void to_json(Poco::JSON::Object &Obj) const; - bool from_json(const Poco::JSON::Object::Ptr &Obj); }; + bool from_json(const Poco::JSON::Object::Ptr &Obj); + }; + + static_assert( std::is_nothrow_move_constructible_v ); struct WebToken { std::string access_token_; diff --git a/test_scripts/update_objects.sh b/test_scripts/update_objects.sh new file mode 100755 index 0000000..8eba8b2 --- /dev/null +++ b/test_scripts/update_objects.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +dst=~/Desktop/Dropbox/clion/last_obj_update +src=~/Desktop/Dropbox/clion +rm -rf ${dst} +mkdir ${dst} + +cp ${src}/wlan-cloud-ucentralgw/src/RESTObjects/RESTAPI_GWobjects.* ${dst}/. +cp ${src}/wlan-cloud-ucentralsec/src/RESTObjects/RESTAPI_SecurityObjects.* ${dst}/. +cp ${src}/wlan-cloud-ucentralfms/src/RESTObjects/RESTAPI_FMSObjects.* ${dst}/. +cp ${src}/wlan-cloud-prov/src/RESTObjects/RESTAPI_ProvObjects.* ${dst}/. +cp ${src}/wlan-cloud-analytics/src/RESTObjects/RESTAPI_AnalyticsObjects.* ${dst}/. +cp ${src}/wlan-cloud-certportal/src/RESTObjects/RESTAPI_CertObjects.* ${dst}/. +cp ${src}/wlan-cloud-userportal/src/RESTObjects/RESTAPI_SubObjects.* ${dst}/. +cp ${src}/ucentralsim/src/RESTObjects/RESTAPI_OWLSobjects.* ${dst}/. + +cp ${dst}/*.* ${src}/wlan-cloud-ucentralgw/src/RESTObjects/. +cp ${dst}/*.* ${src}/wlan-cloud-ucentralsec/src/RESTObjects/. +cp ${dst}/*.* ${src}/wlan-cloud-ucentralfms/src/RESTObjects/. +cp ${dst}/*.* ${src}/wlan-cloud-prov/src/RESTObjects/. +cp ${dst}/*.* ${src}/wlan-cloud-analytics/src/RESTObjects/. +cp ${dst}/*.* ${src}/wlan-cloud-certportal/src/RESTObjects/. +cp ${dst}/*.* ${src}/wlan-cloud-userportal/src/RESTObjects/. +cp ${dst}/*.* ${src}/ucentralsim/src/RESTObjects/.