diff --git a/build b/build index 4800c7d..fc9afb4 100644 --- a/build +++ b/build @@ -1 +1 @@ -58 \ No newline at end of file +59 \ No newline at end of file diff --git a/src/Dashboard.cpp b/src/Dashboard.cpp index 4c05a02..508b75b 100644 --- a/src/Dashboard.cpp +++ b/src/Dashboard.cpp @@ -11,7 +11,7 @@ namespace OpenWifi { void AnalyticsDashboard::Create() { - uint64_t Now = std::time(nullptr); + uint64_t Now = OpenWifi::Now(); if(LastRun_==0 || (Now-LastRun_)>120) { DB_.reset(); // Todo: call dashboard creation code. diff --git a/src/RESTObjects/RESTAPI_FMSObjects.cpp b/src/RESTObjects/RESTAPI_FMSObjects.cpp index b6f6220..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) { @@ -254,6 +254,7 @@ namespace OpenWifi::FMSObjects { field_to_json(Obj, "latestFirmware", latestFirmware); field_to_json(Obj, "latestFirmwareDate", latestFirmwareDate); field_to_json(Obj, "latestFirmwareAvailable",latestFirmwareAvailable); + field_to_json(Obj, "latestFirmwareURI",latestFirmwareURI); } bool DeviceInformation::from_json(const Poco::JSON::Object::Ptr &Obj) { @@ -265,10 +266,44 @@ namespace OpenWifi::FMSObjects { field_from_json(Obj, "latestFirmware", latestFirmware); field_from_json(Obj, "latestFirmwareDate", latestFirmwareDate); field_from_json(Obj, "latestFirmwareAvailable",latestFirmwareAvailable); + field_from_json(Obj, "latestFirmwareURI",latestFirmwareURI); return true; } catch(...) { } 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 954992e..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; @@ -136,11 +134,26 @@ namespace OpenWifi::FMSObjects { std::string latestFirmware; uint64_t latestFirmwareDate=0; bool latestFirmwareAvailable; + std::string latestFirmwareURI; 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_GWobjects.cpp b/src/RESTObjects/RESTAPI_GWobjects.cpp index c626f5f..0515bc6 100644 --- a/src/RESTObjects/RESTAPI_GWobjects.cpp +++ b/src/RESTObjects/RESTAPI_GWobjects.cpp @@ -264,7 +264,7 @@ namespace OpenWifi::GWObjects { lastContact.clear(); associations.clear(); numberOfDevices = 0 ; - snapshot = std::time(nullptr); + snapshot = OpenWifi::Now(); } void CapabilitiesModel::to_json(Poco::JSON::Object &Obj) const{ diff --git a/src/RESTObjects/RESTAPI_ProvObjects.cpp b/src/RESTObjects/RESTAPI_ProvObjects.cpp index 1fd9970..b390daf 100644 --- a/src/RESTObjects/RESTAPI_ProvObjects.cpp +++ b/src/RESTObjects/RESTAPI_ProvObjects.cpp @@ -996,14 +996,14 @@ namespace OpenWifi::ProvObjects { return false; } - void CompleteDeviceConfiguration::to_json(Poco::JSON::Object &Obj) const { + void ConfigurationDetails::to_json(Poco::JSON::Object &Obj) const { field_to_json( Obj,"configuration", configuration); field_to_json( Obj,"rrm", rrm); field_to_json( Obj,"firmwareRCOnly", firmwareRCOnly); field_to_json( Obj,"firmwareUpgrade", firmwareUpgrade); } - bool CompleteDeviceConfiguration::from_json(const Poco::JSON::Object::Ptr &Obj) { + bool ConfigurationDetails::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json( Obj,"configuration", configuration); field_from_json( Obj,"rrm", rrm); @@ -1103,7 +1103,7 @@ namespace OpenWifi::ProvObjects { } bool UpdateObjectInfo(const Poco::JSON::Object::Ptr &O, const SecurityObjects::UserInfo &U, ObjectInfo &I) { - uint64_t Now = std::time(nullptr); + uint64_t Now = OpenWifi::Now(); if(O->has("name")) I.name = O->get("name").toString(); @@ -1153,47 +1153,5 @@ namespace OpenWifi::ProvObjects { return true; } - void WebSocketNotificationContent::to_json(Poco::JSON::Object &Obj) const { - field_to_json(Obj,"title",title); - field_to_json(Obj,"type",type); - field_to_json(Obj,"success",success); - field_to_json(Obj,"error",error); - field_to_json(Obj,"warning",warning); - field_to_json(Obj,"timeStamp",timeStamp); - field_to_json(Obj,"details",details); - } - - bool WebSocketNotificationContent::from_json(const Poco::JSON::Object::Ptr &Obj) { - try { - field_from_json(Obj,"title",title); - field_from_json(Obj,"type",type); - field_from_json(Obj,"success",success); - field_from_json(Obj,"error",error); - field_from_json(Obj,"warning",warning); - field_from_json(Obj,"timeStamp",timeStamp); - field_from_json(Obj,"details",details); - return true; - } catch(...) { - - } - return false; - } - - void WebSocketNotification::to_json(Poco::JSON::Object &Obj) const { - field_to_json(Obj,"notification_id",notification_id); - field_to_json(Obj,"content",content); - } - - bool WebSocketNotification::from_json(const Poco::JSON::Object::Ptr &Obj) { - try { - field_from_json(Obj,"notification_id",notification_id); - field_from_json(Obj,"content",content); - return true; - } catch(...) { - - } - return false; - } - } diff --git a/src/RESTObjects/RESTAPI_ProvObjects.h b/src/RESTObjects/RESTAPI_ProvObjects.h index 5a68949..1daa230 100644 --- a/src/RESTObjects/RESTAPI_ProvObjects.h +++ b/src/RESTObjects/RESTAPI_ProvObjects.h @@ -633,7 +633,7 @@ namespace OpenWifi::ProvObjects { bool from_json(const Poco::JSON::Object::Ptr &Obj); }; - struct CompleteDeviceConfiguration { + struct ConfigurationDetails { DeviceConfigurationElementVec configuration; std::string rrm{"inherit"}; std::string firmwareUpgrade{"inherit"}; @@ -676,28 +676,6 @@ namespace OpenWifi::ProvObjects { bool from_json(const Poco::JSON::Object::Ptr &Obj); }; - struct WebSocketNotificationContent { - std::string title, - type, - details; - std::vector success, - error, - warning; - uint64_t timeStamp=std::time(nullptr); - - void to_json(Poco::JSON::Object &Obj) const; - bool from_json(const Poco::JSON::Object::Ptr &Obj); - }; - - struct WebSocketNotification { - inline static uint64_t xid=1; - uint64_t notification_id=++xid; - WebSocketNotificationContent content; - - void to_json(Poco::JSON::Object &Obj) const; - bool from_json(const Poco::JSON::Object::Ptr &Obj); - }; - bool UpdateObjectInfo(const Poco::JSON::Object::Ptr &O, const SecurityObjects::UserInfo &U, ObjectInfo &I); bool CreateObjectInfo(const Poco::JSON::Object::Ptr &O, const SecurityObjects::UserInfo &U, ObjectInfo &I); bool CreateObjectInfo(const SecurityObjects::UserInfo &U, ObjectInfo &I); diff --git a/src/RESTObjects/RESTAPI_SecurityObjects.cpp b/src/RESTObjects/RESTAPI_SecurityObjects.cpp index cab581f..a077e40 100644 --- a/src/RESTObjects/RESTAPI_SecurityObjects.cpp +++ b/src/RESTObjects/RESTAPI_SecurityObjects.cpp @@ -113,6 +113,8 @@ namespace OpenWifi::SecurityObjects { field_to_json(Obj,"userMustChangePassword",userMustChangePassword); field_to_json(Obj,"errorCode", errorCode); Obj.set("aclTemplate",AclTemplateObj); + field_to_json(Obj,"errorCode", errorCode); + field_to_json(Obj,"lastRefresh", lastRefresh_); } bool WebToken::from_json(const Poco::JSON::Object::Ptr &Obj) { @@ -129,6 +131,7 @@ namespace OpenWifi::SecurityObjects { field_from_json(Obj, "created", created_); field_from_json(Obj, "username", username_); field_from_json(Obj, "userMustChangePassword",userMustChangePassword); + field_from_json(Obj,"lastRefresh", lastRefresh_); return true; } catch (...) { std::cout << "Cannot parse: WebToken" << std::endl; @@ -430,7 +433,7 @@ namespace OpenWifi::SecurityObjects { SecurityObjects::NoteInfoVec NIV; NIV = RESTAPI_utils::to_object_array(Obj->get("notes").toString()); for(auto const &i:NIV) { - SecurityObjects::NoteInfo ii{.created=(uint64_t)std::time(nullptr), .createdBy=UInfo.email, .note=i.note}; + SecurityObjects::NoteInfo ii{.created=(uint64_t)OpenWifi::Now(), .createdBy=UInfo.email, .note=i.note}; Notes.push_back(ii); } } @@ -443,7 +446,7 @@ namespace OpenWifi::SecurityObjects { bool MergeNotes(const NoteInfoVec & NewNotes, const UserInfo &UInfo, NoteInfoVec & ExistingNotes) { for(auto const &i:NewNotes) { - SecurityObjects::NoteInfo ii{.created=(uint64_t)std::time(nullptr), .createdBy=UInfo.email, .note=i.note}; + SecurityObjects::NoteInfo ii{.created=(uint64_t)OpenWifi::Now(), .createdBy=UInfo.email, .note=i.note}; ExistingNotes.push_back(ii); } return true; @@ -588,6 +591,7 @@ namespace OpenWifi::SecurityObjects { field_to_json(Obj,"expires",expires); field_to_json(Obj,"idleTimeout",idleTimeout); field_to_json(Obj,"revocationDate",revocationDate); + field_to_json(Obj,"lastRefresh", lastRefresh); } bool Token::from_json(const Poco::JSON::Object::Ptr &Obj) { @@ -600,6 +604,7 @@ namespace OpenWifi::SecurityObjects { field_from_json(Obj,"expires",expires); field_from_json(Obj,"idleTimeout",idleTimeout); field_from_json(Obj,"revocationDate",revocationDate); + field_from_json(Obj,"lastRefresh", lastRefresh); return true; } catch(...) { std::cout << "Cannot parse: Token" << std::endl; diff --git a/src/RESTObjects/RESTAPI_SecurityObjects.h b/src/RESTObjects/RESTAPI_SecurityObjects.h index 1cc0df6..210b3a8 100644 --- a/src/RESTObjects/RESTAPI_SecurityObjects.h +++ b/src/RESTObjects/RESTAPI_SecurityObjects.h @@ -41,6 +41,7 @@ namespace OpenWifi { uint64_t idle_timeout_=0; AclTemplate acl_template_; uint64_t created_=0; + uint64_t lastRefresh_=0; void to_json(Poco::JSON::Object &Obj) const; bool from_json(const Poco::JSON::Object::Ptr &Obj); @@ -54,7 +55,7 @@ namespace OpenWifi { std::string UserTypeToString(USER_ROLE U); struct NoteInfo { - uint64_t created=0; // = std::time(nullptr); + uint64_t created=0; // = OpenWifi::Now(); std::string createdBy; std::string note; @@ -93,7 +94,7 @@ namespace OpenWifi { std::string uuid; std::string question; std::string method; - uint64_t created = std::time(nullptr); + uint64_t created = OpenWifi::Now(); void to_json(Poco::JSON::Object &Obj) const; bool from_json(const Poco::JSON::Object::Ptr &Obj); @@ -255,7 +256,7 @@ namespace OpenWifi { std::string locale; std::string message; uint64_t sent=0; - uint64_t created=std::time(nullptr); + uint64_t created=OpenWifi::Now(); uint64_t expires=0; uint64_t completed=0; uint64_t canceled=0; @@ -292,6 +293,7 @@ namespace OpenWifi { uint64_t expires=0; uint64_t idleTimeout=0; uint64_t revocationDate=0; + uint64_t lastRefresh=0; void to_json(Poco::JSON::Object &Obj) const; bool from_json(const Poco::JSON::Object::Ptr &Obj); @@ -302,7 +304,6 @@ namespace OpenWifi { std::string type; uint64_t created=0; std::string name; - // Poco::Data::LOB avatar; Poco::Data::BLOB avatar; };