diff --git a/CMakeLists.txt b/CMakeLists.txt index 97fd9c8..d4c7135 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,7 +72,7 @@ add_executable(owprov src/storage_pgql.cpp src/storage_mysql.cpp src/storage_sqlite.cpp src/storage_entity.cpp src/storage_entity.h src/storage_policies.cpp src/storage_policies.h - src/uCentralTypes.h + src/OpenWifiTypes.h src/storage_venue.cpp src/storage_venue.h src/storage_location.cpp src/storage_location.h src/storage_contact.cpp src/storage_contact.h diff --git a/README.md b/README.md index e598c97..822ffb8 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,33 @@ It's UUID value is 0000-0000-0000. Its parent entity must be empty. ## Entity -You must set the parent of an entity. +### Creation rules +- You must set the parent of an entity. +- The only properties you may set at creation are: + - name + - description + - notes + - parent + +### Modification rules +You may modify the following fields in the POST +- name +- description +- notes +You must use the query command parameters to modify other properties +- addContact=UUID +- delContact=UUID +- addLocation=UUID +- delLocation=UUID + +## Inventory Tags +### Creation rules +- Entity must point to an existing non-root entity +- If you associate a venue, it must exist + +### Modification rules + -## Venue -When creating a venue, the top venue must have its entity property set to the owning entity, and its parent property empty. -For all sub venues, their entity must be set to empty and its parent entity must be set to the venue above it. ## Management policy diff --git a/build b/build index 2edeafb..b393560 100644 --- a/build +++ b/build @@ -1 +1 @@ -20 \ No newline at end of file +23 \ No newline at end of file diff --git a/src/ALBHealthCheckServer.h b/src/ALBHealthCheckServer.h index 94735cd..5c27d66 100644 --- a/src/ALBHealthCheckServer.h +++ b/src/ALBHealthCheckServer.h @@ -20,7 +20,7 @@ #include "Daemon.h" #include "SubSystemServer.h" -namespace uCentral { +namespace OpenWifi { class ALBRequestHandler: public Poco::Net::HTTPRequestHandler /// Return a HTML document with the current date and time. diff --git a/src/AuthClient.cpp b/src/AuthClient.cpp index f642e04..d35a461 100644 --- a/src/AuthClient.cpp +++ b/src/AuthClient.cpp @@ -8,7 +8,7 @@ #include "Daemon.h" #include "OpenAPIRequest.h" -namespace uCentral { +namespace OpenWifi { class AuthClient * AuthClient::instance_ = nullptr; int AuthClient::Start() { @@ -38,7 +38,7 @@ namespace uCentral { } else { Types::StringPairVec QueryData; QueryData.push_back(std::make_pair("token",SessionToken)); - OpenAPIRequestGet Req(uSERVICE_SECURITY, + OpenAPIRequestGet Req( uSERVICE_SECURITY, "/api/v1/validateToken", QueryData, 5000); @@ -56,4 +56,33 @@ namespace uCentral { } return false; } + + bool AuthClient::IsTokenAuthorized(const std::string &SessionToken, SecurityObjects::UserInfoAndPolicy & UInfo) { + SubMutexGuard G(Mutex_); + + auto User = UserCache_.find(SessionToken); + if(User != UserCache_.end() && !IsTokenExpired(User->second.webtoken)) { + UInfo = User->second; + return true; + } else { + Types::StringPairVec QueryData; + QueryData.push_back(std::make_pair("token",SessionToken)); + OpenAPIRequestGet Req(uSERVICE_SECURITY, + "/api/v1/validateToken", + QueryData, + 5000); + Poco::JSON::Object::Ptr Response; + if(Req.Do(Response)==Poco::Net::HTTPResponse::HTTP_OK) { + if(Response->has("tokenInfo") && Response->has("userInfo")) { + SecurityObjects::UserInfoAndPolicy P; + P.from_json(Response); + UserCache_[SessionToken] = P; + UInfo = P; + } + return true; + } + + } + return false; + } } \ No newline at end of file diff --git a/src/AuthClient.h b/src/AuthClient.h index 55b3475..c06e9ad 100644 --- a/src/AuthClient.h +++ b/src/AuthClient.h @@ -13,9 +13,9 @@ #include "RESTAPI_SecurityObjects.h" #include "SubSystemServer.h" -namespace uCentral { +namespace OpenWifi { - class AuthClient : public SubSystemServer { +class AuthClient : public SubSystemServer { public: explicit AuthClient() noexcept: SubSystemServer("Authentication", "AUTH-CLNT", "authentication") @@ -31,12 +31,12 @@ namespace uCentral { int Start() override; void Stop() override; - bool IsAuthorized(Poco::Net::HTTPServerRequest & Request, std::string &SessionToken, SecurityObjects::UserInfoAndPolicy & UInfo ); + bool IsAuthorized(Poco::Net::HTTPServerRequest & Request, std::string &SessionToken, OpenWifi::SecurityObjects::UserInfoAndPolicy & UInfo ); void RemovedCachedToken(const std::string &Token); - + bool IsTokenAuthorized(const std::string &Token, SecurityObjects::UserInfoAndPolicy & UInfo); private: static AuthClient *instance_; - SecurityObjects::UserInfoCache UserCache_; + OpenWifi::SecurityObjects::UserInfoCache UserCache_; }; inline AuthClient * AuthClient() { return AuthClient::instance(); } diff --git a/src/Daemon.cpp b/src/Daemon.cpp index df985f1..32cfec3 100644 --- a/src/Daemon.cpp +++ b/src/Daemon.cpp @@ -19,7 +19,7 @@ #include "RESTAPI_server.h" #include "RESTAPI_InternalServer.h" -namespace uCentral { +namespace OpenWifi { class Daemon *Daemon::instance_ = nullptr; class Daemon *Daemon::instance() { @@ -46,7 +46,7 @@ namespace uCentral { int main(int argc, char **argv) { try { - auto App = uCentral::Daemon::instance(); + auto App = OpenWifi::Daemon::instance(); auto ExitCode = App->run(argc, argv); delete App; diff --git a/src/Daemon.h b/src/Daemon.h index e8d1f18..a1e0b1d 100644 --- a/src/Daemon.h +++ b/src/Daemon.h @@ -27,9 +27,9 @@ #include "Dashboard.h" #include "MicroService.h" -#include "uCentralTypes.h" +#include "OpenWifiTypes.h" -namespace uCentral { +namespace OpenWifi { static const char * vDAEMON_PROPERTIES_FILENAME = "owprov.properties"; static const char * vDAEMON_ROOT_ENV_VAR = "OWPROV_ROOT"; diff --git a/src/Dashboard.h b/src/Dashboard.h index 589482a..04da985 100644 --- a/src/Dashboard.h +++ b/src/Dashboard.h @@ -5,7 +5,7 @@ #ifndef UCENTRALGW_DASHBOARD_H #define UCENTRALGW_DASHBOARD_H -#include "uCentralTypes.h" +#include "OpenWifiTypes.h" #include "RESTAPI_ProvObjects.h" namespace OpenWifi { diff --git a/src/KafkaManager.cpp b/src/KafkaManager.cpp index 8e10998..370b65b 100644 --- a/src/KafkaManager.cpp +++ b/src/KafkaManager.cpp @@ -12,7 +12,7 @@ #include "Daemon.h" #include "Utils.h" -namespace uCentral { +namespace OpenWifi { class KafkaManager *KafkaManager::instance_ = nullptr; diff --git a/src/KafkaManager.h b/src/KafkaManager.h index 6d93d8f..645dcac 100644 --- a/src/KafkaManager.h +++ b/src/KafkaManager.h @@ -13,11 +13,11 @@ #include #include "SubSystemServer.h" -#include "uCentralTypes.h" +#include "OpenWifiTypes.h" #include "cppkafka/cppkafka.h" -namespace uCentral { +namespace OpenWifi { class KafkaManager : public SubSystemServer { public: diff --git a/src/Kafka_topics.h b/src/Kafka_topics.h index ba3b384..3fe1a9a 100644 --- a/src/Kafka_topics.h +++ b/src/Kafka_topics.h @@ -5,7 +5,7 @@ #ifndef UCENTRALGW_KAFKA_TOPICS_H #define UCENTRALGW_KAFKA_TOPICS_H -namespace uCentral::KafkaTopics { +namespace OpenWifi::KafkaTopics { static const std::string HEALTHCHECK{"healthcheck"}; static const std::string STATE{"state"}; static const std::string CONNECTION{"connection"}; diff --git a/src/MicroService.cpp b/src/MicroService.cpp index bc50912..d3d46c9 100644 --- a/src/MicroService.cpp +++ b/src/MicroService.cpp @@ -34,7 +34,7 @@ #include "AuthClient.h" #endif -namespace uCentral { +namespace OpenWifi { void MyErrorHandler::exception(const Poco::Exception & E) { Poco::Thread * CurrentThread = Poco::Thread::current(); diff --git a/src/MicroService.h b/src/MicroService.h index 5e30330..5882213 100644 --- a/src/MicroService.h +++ b/src/MicroService.h @@ -24,10 +24,10 @@ #include "Poco/Net/HTTPServerRequest.h" #include "Poco/Process.h" -#include "uCentralTypes.h" +#include "OpenWifiTypes.h" #include "SubSystemServer.h" -namespace uCentral { +namespace OpenWifi { static const std::string uSERVICE_SECURITY{"ucentralsec"}; static const std::string uSERVICE_GATEWAY{"ucentralgw"}; diff --git a/src/OpenAPIRequest.cpp b/src/OpenAPIRequest.cpp index 1f9d9fd..1fb8529 100644 --- a/src/OpenAPIRequest.cpp +++ b/src/OpenAPIRequest.cpp @@ -17,7 +17,7 @@ #include "Utils.h" #include "Daemon.h" -namespace uCentral { +namespace OpenWifi { OpenAPIRequestGet::OpenAPIRequestGet( const std::string & ServiceType, const std::string & EndPoint, diff --git a/src/OpenAPIRequest.h b/src/OpenAPIRequest.h index 8fe6c81..ede2a15 100644 --- a/src/OpenAPIRequest.h +++ b/src/OpenAPIRequest.h @@ -7,9 +7,9 @@ #include "Poco/JSON/Object.h" -#include "uCentralTypes.h" +#include "OpenWifiTypes.h" -namespace uCentral { +namespace OpenWifi { class OpenAPIRequestGet { public: diff --git a/src/uCentralTypes.h b/src/OpenWifiTypes.h similarity index 94% rename from src/uCentralTypes.h rename to src/OpenWifiTypes.h index 2cb3ca6..4f436d9 100644 --- a/src/uCentralTypes.h +++ b/src/OpenWifiTypes.h @@ -17,7 +17,7 @@ #include "Poco/StringTokenizer.h" -namespace uCentral::Types { +namespace OpenWifi::Types { typedef std::pair StringPair; typedef std::vector StringPairVec; typedef std::queue StringPairQueue; @@ -33,12 +33,12 @@ namespace uCentral::Types { typedef std::string UUID_t; typedef std::vector UUIDvec_t; - inline void UpdateCountedMap(CountedMap &M, const std::string &S ) { + inline void UpdateCountedMap(CountedMap &M, const std::string &S, uint64_t Increment=1) { auto it = M.find(S); if(it==M.end()) - M[S]=1; + M[S] = Increment; else - it->second += 1; + it->second += Increment; } inline std::string to_string( const StringVec &V) { diff --git a/src/RESTAPI_InternalServer.cpp b/src/RESTAPI_InternalServer.cpp index 3d48231..c21634a 100644 --- a/src/RESTAPI_InternalServer.cpp +++ b/src/RESTAPI_InternalServer.cpp @@ -10,7 +10,7 @@ #include "Utils.h" -namespace uCentral { +namespace OpenWifi { class RESTAPI_InternalServer *RESTAPI_InternalServer::instance_ = nullptr; @@ -52,7 +52,7 @@ namespace uCentral { Poco::Net::HTTPRequestHandler *InternalRequestHandlerFactory::createRequestHandler(const Poco::Net::HTTPServerRequest & Request) { Logger_.debug( - Poco::format("REQUEST(%s): %s %s", uCentral::Utils::FormatIPv6(Request.clientAddress().toString()), + Poco::format("REQUEST(%s): %s %s", Utils::FormatIPv6(Request.clientAddress().toString()), Request.getMethod(), Request.getURI())); Poco::URI uri(Request.getURI()); diff --git a/src/RESTAPI_InternalServer.h b/src/RESTAPI_InternalServer.h index f6a220b..793103b 100644 --- a/src/RESTAPI_InternalServer.h +++ b/src/RESTAPI_InternalServer.h @@ -12,7 +12,7 @@ #include "Poco/Net/HTTPServerRequest.h" #include "Poco/Net/NetException.h" -namespace uCentral { +namespace OpenWifi { class RESTAPI_InternalServer : public SubSystemServer { diff --git a/src/RESTAPI_ProvObjects.cpp b/src/RESTAPI_ProvObjects.cpp index e4de871..e4a4cf8 100644 --- a/src/RESTAPI_ProvObjects.cpp +++ b/src/RESTAPI_ProvObjects.cpp @@ -5,28 +5,25 @@ #include "RESTAPI_ProvObjects.h" #include "RESTAPI_utils.h" -using uCentral::RESTAPI_utils::field_from_json; -using uCentral::RESTAPI_utils::field_to_json; - namespace OpenWifi::ProvObjects { void ObjectInfo::to_json(Poco::JSON::Object &Obj) const { - uCentral::RESTAPI_utils::field_to_json(Obj,"id",id); - uCentral::RESTAPI_utils::field_to_json(Obj,"name",name); - uCentral::RESTAPI_utils::field_to_json(Obj,"description",description); - uCentral::RESTAPI_utils::field_to_json(Obj,"created",created); - uCentral::RESTAPI_utils::field_to_json(Obj,"modified",modified); - uCentral::RESTAPI_utils::field_to_json(Obj,"notes",notes); + RESTAPI_utils::field_to_json(Obj,"id",id); + RESTAPI_utils::field_to_json(Obj,"name",name); + RESTAPI_utils::field_to_json(Obj,"description",description); + RESTAPI_utils::field_to_json(Obj,"created",created); + RESTAPI_utils::field_to_json(Obj,"modified",modified); + RESTAPI_utils::field_to_json(Obj,"notes",notes); } bool ObjectInfo::from_json(const Poco::JSON::Object::Ptr &Obj) { try { - uCentral::RESTAPI_utils::field_from_json(Obj,"id",id); - uCentral::RESTAPI_utils::field_from_json(Obj,"name",name); - uCentral::RESTAPI_utils::field_from_json(Obj,"description",description); - uCentral::RESTAPI_utils::field_from_json(Obj,"created",created); - uCentral::RESTAPI_utils::field_from_json(Obj,"modified",modified); - uCentral::RESTAPI_utils::field_from_json(Obj,"notes",notes); + RESTAPI_utils::field_from_json(Obj,"id",id); + RESTAPI_utils::field_from_json(Obj,"name",name); + RESTAPI_utils::field_from_json(Obj,"description",description); + RESTAPI_utils::field_from_json(Obj,"created",created); + RESTAPI_utils::field_from_json(Obj,"modified",modified); + RESTAPI_utils::field_from_json(Obj,"notes",notes); return true; } catch(...) { @@ -35,18 +32,18 @@ namespace OpenWifi::ProvObjects { } void ManagementPolicyEntry::to_json(Poco::JSON::Object &Obj) const { - uCentral::RESTAPI_utils::field_to_json( Obj,"users",users); - uCentral::RESTAPI_utils::field_to_json( Obj,"resources",resources); - uCentral::RESTAPI_utils::field_to_json( Obj,"access",access); - uCentral::RESTAPI_utils::field_to_json( Obj,"policy",policy); + RESTAPI_utils::field_to_json( Obj,"users",users); + RESTAPI_utils::field_to_json( Obj,"resources",resources); + RESTAPI_utils::field_to_json( Obj,"access",access); + RESTAPI_utils::field_to_json( Obj,"policy",policy); } bool ManagementPolicyEntry::from_json(const Poco::JSON::Object::Ptr &Obj) { try { - uCentral::RESTAPI_utils::field_from_json( Obj,"users",users); - uCentral::RESTAPI_utils::field_from_json( Obj,"resources",resources); - uCentral::RESTAPI_utils::field_from_json( Obj,"access",access); - uCentral::RESTAPI_utils::field_from_json( Obj,"policy",policy); + RESTAPI_utils::field_from_json( Obj,"users",users); + RESTAPI_utils::field_from_json( Obj,"resources",resources); + RESTAPI_utils::field_from_json( Obj,"access",access); + RESTAPI_utils::field_from_json( Obj,"policy",policy); return true; } catch(...) { @@ -56,13 +53,13 @@ namespace OpenWifi::ProvObjects { void ManagementPolicy::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); - uCentral::RESTAPI_utils::field_to_json(Obj, "entries", entries); + RESTAPI_utils::field_to_json(Obj, "entries", entries); } bool ManagementPolicy::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); - uCentral::RESTAPI_utils::field_from_json(Obj, "entries", entries); + RESTAPI_utils::field_from_json(Obj, "entries", entries); return true; } catch(...) { @@ -72,23 +69,23 @@ namespace OpenWifi::ProvObjects { void Entity::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); - uCentral::RESTAPI_utils::field_to_json( Obj,"parent",parent); - uCentral::RESTAPI_utils::field_to_json( Obj,"venues",venues); - uCentral::RESTAPI_utils::field_to_json( Obj,"children",children); - uCentral::RESTAPI_utils::field_to_json( Obj,"contacts",contacts); - uCentral::RESTAPI_utils::field_to_json( Obj,"locations",locations); - uCentral::RESTAPI_utils::field_to_json( Obj,"managementPolicy",managementPolicy); + RESTAPI_utils::field_to_json( Obj,"parent",parent); + RESTAPI_utils::field_to_json( Obj,"venues",venues); + RESTAPI_utils::field_to_json( Obj,"children",children); + RESTAPI_utils::field_to_json( Obj,"contacts",contacts); + RESTAPI_utils::field_to_json( Obj,"locations",locations); + RESTAPI_utils::field_to_json( Obj,"managementPolicy",managementPolicy); } bool Entity::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); - uCentral::RESTAPI_utils::field_from_json( Obj,"parent",parent); - uCentral::RESTAPI_utils::field_from_json( Obj,"venues",venues); - uCentral::RESTAPI_utils::field_from_json( Obj,"children",children); - uCentral::RESTAPI_utils::field_from_json( Obj,"contacts",contacts); - uCentral::RESTAPI_utils::field_from_json( Obj,"locations",locations); - uCentral::RESTAPI_utils::field_from_json( Obj,"managementPolicy",managementPolicy); + RESTAPI_utils::field_from_json( Obj,"parent",parent); + RESTAPI_utils::field_from_json( Obj,"venues",venues); + RESTAPI_utils::field_from_json( Obj,"children",children); + RESTAPI_utils::field_from_json( Obj,"contacts",contacts); + RESTAPI_utils::field_from_json( Obj,"locations",locations); + RESTAPI_utils::field_from_json( Obj,"managementPolicy",managementPolicy); return true; } catch(...) { @@ -97,14 +94,14 @@ namespace OpenWifi::ProvObjects { } void DiGraphEntry::to_json(Poco::JSON::Object &Obj) const { - uCentral::RESTAPI_utils::field_to_json( Obj,"parent",parent); - uCentral::RESTAPI_utils::field_to_json( Obj,"child",child); + RESTAPI_utils::field_to_json( Obj,"parent",parent); + RESTAPI_utils::field_to_json( Obj,"child",child); } bool DiGraphEntry::from_json(const Poco::JSON::Object::Ptr &Obj) { try { - uCentral::RESTAPI_utils::field_from_json( Obj,"parent",parent); - uCentral::RESTAPI_utils::field_from_json( Obj,"child",child); + RESTAPI_utils::field_from_json( Obj,"parent",parent); + RESTAPI_utils::field_from_json( Obj,"child",child); return true; } catch (...) { @@ -114,27 +111,27 @@ namespace OpenWifi::ProvObjects { void Venue::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); - uCentral::RESTAPI_utils::field_to_json( Obj,"parent",parent); - uCentral::RESTAPI_utils::field_to_json( Obj,"owner",entity); - uCentral::RESTAPI_utils::field_to_json( Obj,"children",children); - uCentral::RESTAPI_utils::field_to_json( Obj,"devices",devices); - uCentral::RESTAPI_utils::field_to_json( Obj,"topology",topology); - uCentral::RESTAPI_utils::field_to_json( Obj,"parent",parent); - uCentral::RESTAPI_utils::field_to_json( Obj,"design",design); - uCentral::RESTAPI_utils::field_to_json( Obj,"managementPolicy",managementPolicy); + RESTAPI_utils::field_to_json( Obj,"parent",parent); + RESTAPI_utils::field_to_json( Obj,"owner",entity); + RESTAPI_utils::field_to_json( Obj,"children",children); + RESTAPI_utils::field_to_json( Obj,"devices",devices); + RESTAPI_utils::field_to_json( Obj,"topology",topology); + RESTAPI_utils::field_to_json( Obj,"parent",parent); + RESTAPI_utils::field_to_json( Obj,"design",design); + RESTAPI_utils::field_to_json( Obj,"managementPolicy",managementPolicy); } bool Venue::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); - uCentral::RESTAPI_utils::field_from_json( Obj,"parent",parent); - uCentral::RESTAPI_utils::field_from_json( Obj,"owner",entity); - uCentral::RESTAPI_utils::field_from_json( Obj,"children",children); - uCentral::RESTAPI_utils::field_from_json( Obj,"devices",devices); - uCentral::RESTAPI_utils::field_from_json( Obj,"topology",topology); - uCentral::RESTAPI_utils::field_from_json( Obj,"parent",parent); - uCentral::RESTAPI_utils::field_from_json( Obj,"design",design); - uCentral::RESTAPI_utils::field_from_json( Obj,"managementPolicy",managementPolicy); + RESTAPI_utils::field_from_json( Obj,"parent",parent); + RESTAPI_utils::field_from_json( Obj,"owner",entity); + RESTAPI_utils::field_from_json( Obj,"children",children); + RESTAPI_utils::field_from_json( Obj,"devices",devices); + RESTAPI_utils::field_from_json( Obj,"topology",topology); + RESTAPI_utils::field_from_json( Obj,"parent",parent); + RESTAPI_utils::field_from_json( Obj,"design",design); + RESTAPI_utils::field_from_json( Obj,"managementPolicy",managementPolicy); return true; } catch (...) { @@ -143,16 +140,16 @@ namespace OpenWifi::ProvObjects { } void UserInfoDigest::to_json(Poco::JSON::Object &Obj) const { - uCentral::RESTAPI_utils::field_to_json( Obj,"id",id); - uCentral::RESTAPI_utils::field_to_json( Obj,"owner",loginId); - uCentral::RESTAPI_utils::field_to_json( Obj,"children",userType); + RESTAPI_utils::field_to_json( Obj,"id",id); + RESTAPI_utils::field_to_json( Obj,"owner",loginId); + RESTAPI_utils::field_to_json( Obj,"children",userType); } bool UserInfoDigest::from_json(const Poco::JSON::Object::Ptr &Obj) { try { - uCentral::RESTAPI_utils::field_from_json( Obj,"id",id); - uCentral::RESTAPI_utils::field_from_json( Obj,"owner",loginId); - uCentral::RESTAPI_utils::field_from_json( Obj,"children",userType); + RESTAPI_utils::field_from_json( Obj,"id",id); + RESTAPI_utils::field_from_json( Obj,"owner",loginId); + RESTAPI_utils::field_from_json( Obj,"children",userType); return true; } catch(...) { } @@ -161,15 +158,15 @@ namespace OpenWifi::ProvObjects { void ManagementRole::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); - uCentral::RESTAPI_utils::field_to_json( Obj,"managementPolicy",managementPolicy); - uCentral::RESTAPI_utils::field_to_json( Obj,"users",users); + RESTAPI_utils::field_to_json( Obj,"managementPolicy",managementPolicy); + RESTAPI_utils::field_to_json( Obj,"users",users); } bool ManagementRole::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); - uCentral::RESTAPI_utils::field_from_json( Obj,"managementPolicy",managementPolicy); - uCentral::RESTAPI_utils::field_from_json( Obj,"users",users); + RESTAPI_utils::field_from_json( Obj,"managementPolicy",managementPolicy); + RESTAPI_utils::field_from_json( Obj,"users",users); return true; } catch(...) { } @@ -178,37 +175,37 @@ namespace OpenWifi::ProvObjects { void Location::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); - uCentral::RESTAPI_utils::field_to_json( Obj,"type",OpenWifi::ProvObjects::to_string(type)); - uCentral::RESTAPI_utils::field_to_json( Obj,"buildingName",buildingName); - uCentral::RESTAPI_utils::field_to_json( Obj,"addressLines",addressLines); - uCentral::RESTAPI_utils::field_to_json( Obj,"city",city); - uCentral::RESTAPI_utils::field_to_json( Obj,"state",state); - uCentral::RESTAPI_utils::field_to_json( Obj,"postal",postal); - uCentral::RESTAPI_utils::field_to_json( Obj,"country",country); - uCentral::RESTAPI_utils::field_to_json( Obj,"phones",phones); - uCentral::RESTAPI_utils::field_to_json( Obj,"mobiles",mobiles); - uCentral::RESTAPI_utils::field_to_json( Obj,"venues",venues); - uCentral::RESTAPI_utils::field_to_json( Obj,"entities",entities); - uCentral::RESTAPI_utils::field_to_json( Obj,"geoCode",geoCode); + RESTAPI_utils::field_to_json( Obj,"type",OpenWifi::ProvObjects::to_string(type)); + RESTAPI_utils::field_to_json( Obj,"buildingName",buildingName); + RESTAPI_utils::field_to_json( Obj,"addressLines",addressLines); + RESTAPI_utils::field_to_json( Obj,"city",city); + RESTAPI_utils::field_to_json( Obj,"state",state); + RESTAPI_utils::field_to_json( Obj,"postal",postal); + RESTAPI_utils::field_to_json( Obj,"country",country); + RESTAPI_utils::field_to_json( Obj,"phones",phones); + RESTAPI_utils::field_to_json( Obj,"mobiles",mobiles); + RESTAPI_utils::field_to_json( Obj,"venues",venues); + RESTAPI_utils::field_to_json( Obj,"entities",entities); + RESTAPI_utils::field_to_json( Obj,"geoCode",geoCode); } bool Location::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); std::string tmp_type; - uCentral::RESTAPI_utils::field_from_json( Obj,"type", tmp_type); + RESTAPI_utils::field_from_json( Obj,"type", tmp_type); type = location_from_string(tmp_type); - uCentral::RESTAPI_utils::field_from_json( Obj,"buildingName",buildingName); - uCentral::RESTAPI_utils::field_from_json( Obj,"addressLines",addressLines); - uCentral::RESTAPI_utils::field_from_json( Obj,"city",city); - uCentral::RESTAPI_utils::field_from_json( Obj,"state",state); - uCentral::RESTAPI_utils::field_from_json( Obj,"postal",postal); - uCentral::RESTAPI_utils::field_from_json( Obj,"country",country); - uCentral::RESTAPI_utils::field_from_json( Obj,"phones",phones); - uCentral::RESTAPI_utils::field_from_json( Obj,"mobiles",mobiles); - uCentral::RESTAPI_utils::field_from_json( Obj,"venues",venues); - uCentral::RESTAPI_utils::field_from_json( Obj,"entities",entities); - uCentral::RESTAPI_utils::field_from_json( Obj,"geoCode",geoCode); + RESTAPI_utils::field_from_json( Obj,"buildingName",buildingName); + RESTAPI_utils::field_from_json( Obj,"addressLines",addressLines); + RESTAPI_utils::field_from_json( Obj,"city",city); + RESTAPI_utils::field_from_json( Obj,"state",state); + RESTAPI_utils::field_from_json( Obj,"postal",postal); + RESTAPI_utils::field_from_json( Obj,"country",country); + RESTAPI_utils::field_from_json( Obj,"phones",phones); + RESTAPI_utils::field_from_json( Obj,"mobiles",mobiles); + RESTAPI_utils::field_from_json( Obj,"venues",venues); + RESTAPI_utils::field_from_json( Obj,"entities",entities); + RESTAPI_utils::field_from_json( Obj,"geoCode",geoCode); return true; } catch (...) { @@ -218,41 +215,41 @@ namespace OpenWifi::ProvObjects { void Contact::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); - uCentral::RESTAPI_utils::field_to_json( Obj,"type", to_string(type)); - uCentral::RESTAPI_utils::field_to_json( Obj,"title",title); - uCentral::RESTAPI_utils::field_to_json( Obj,"salutation",salutation); - uCentral::RESTAPI_utils::field_to_json( Obj,"firstname",firstname); - uCentral::RESTAPI_utils::field_to_json( Obj,"lastname",lastname); - uCentral::RESTAPI_utils::field_to_json( Obj,"initials",initials); - uCentral::RESTAPI_utils::field_to_json( Obj,"visual",visual); - uCentral::RESTAPI_utils::field_to_json( Obj,"mobiles",mobiles); - uCentral::RESTAPI_utils::field_to_json( Obj,"phones",phones); - uCentral::RESTAPI_utils::field_to_json( Obj,"primaryEmail",primaryEmail); - uCentral::RESTAPI_utils::field_to_json( Obj,"secondaryEmail",secondaryEmail); - uCentral::RESTAPI_utils::field_to_json( Obj,"accessPIN",accessPIN); - uCentral::RESTAPI_utils::field_to_json( Obj,"venues",venues); - uCentral::RESTAPI_utils::field_to_json( Obj,"entities",entities); + RESTAPI_utils::field_to_json( Obj,"type", to_string(type)); + RESTAPI_utils::field_to_json( Obj,"title",title); + RESTAPI_utils::field_to_json( Obj,"salutation",salutation); + RESTAPI_utils::field_to_json( Obj,"firstname",firstname); + RESTAPI_utils::field_to_json( Obj,"lastname",lastname); + RESTAPI_utils::field_to_json( Obj,"initials",initials); + RESTAPI_utils::field_to_json( Obj,"visual",visual); + RESTAPI_utils::field_to_json( Obj,"mobiles",mobiles); + RESTAPI_utils::field_to_json( Obj,"phones",phones); + RESTAPI_utils::field_to_json( Obj,"primaryEmail",primaryEmail); + RESTAPI_utils::field_to_json( Obj,"secondaryEmail",secondaryEmail); + RESTAPI_utils::field_to_json( Obj,"accessPIN",accessPIN); + RESTAPI_utils::field_to_json( Obj,"venues",venues); + RESTAPI_utils::field_to_json( Obj,"entities",entities); } bool Contact::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); std::string tmp_type; - uCentral::RESTAPI_utils::field_from_json( Obj,"type", tmp_type); + RESTAPI_utils::field_from_json( Obj,"type", tmp_type); type = contact_from_string(tmp_type); - uCentral::RESTAPI_utils::field_from_json( Obj,"title",title); - uCentral::RESTAPI_utils::field_from_json( Obj,"salutation",salutation); - uCentral::RESTAPI_utils::field_from_json( Obj,"firstname",firstname); - uCentral::RESTAPI_utils::field_from_json( Obj,"lastname",lastname); - uCentral::RESTAPI_utils::field_from_json( Obj,"initials",initials); - uCentral::RESTAPI_utils::field_from_json( Obj,"visual",visual); - uCentral::RESTAPI_utils::field_from_json( Obj,"mobiles",mobiles); - uCentral::RESTAPI_utils::field_from_json( Obj,"phones",phones); - uCentral::RESTAPI_utils::field_from_json( Obj,"primaryEmail",primaryEmail); - uCentral::RESTAPI_utils::field_from_json( Obj,"secondaryEmail",secondaryEmail); - uCentral::RESTAPI_utils::field_from_json( Obj,"accessPIN",accessPIN); - uCentral::RESTAPI_utils::field_from_json( Obj,"venues",venues); - uCentral::RESTAPI_utils::field_from_json( Obj,"entities",entities); + RESTAPI_utils::field_from_json( Obj,"title",title); + RESTAPI_utils::field_from_json( Obj,"salutation",salutation); + RESTAPI_utils::field_from_json( Obj,"firstname",firstname); + RESTAPI_utils::field_from_json( Obj,"lastname",lastname); + RESTAPI_utils::field_from_json( Obj,"initials",initials); + RESTAPI_utils::field_from_json( Obj,"visual",visual); + RESTAPI_utils::field_from_json( Obj,"mobiles",mobiles); + RESTAPI_utils::field_from_json( Obj,"phones",phones); + RESTAPI_utils::field_from_json( Obj,"primaryEmail",primaryEmail); + RESTAPI_utils::field_from_json( Obj,"secondaryEmail",secondaryEmail); + RESTAPI_utils::field_from_json( Obj,"accessPIN",accessPIN); + RESTAPI_utils::field_from_json( Obj,"venues",venues); + RESTAPI_utils::field_from_json( Obj,"entities",entities); return true; } catch (...) { @@ -278,29 +275,29 @@ namespace OpenWifi::ProvObjects { void InventoryTag::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); - uCentral::RESTAPI_utils::field_to_json(Obj, "serialNumber", serialNumber); - uCentral::RESTAPI_utils::field_to_json(Obj, "venue", venue); - uCentral::RESTAPI_utils::field_to_json(Obj, "entity", entity); - uCentral::RESTAPI_utils::field_to_json(Obj, "subEntity", subEntity); - uCentral::RESTAPI_utils::field_to_json(Obj, "subVenue", subVenue); - uCentral::RESTAPI_utils::field_to_json(Obj, "subscriber", subscriber); - uCentral::RESTAPI_utils::field_to_json(Obj, "deviceType", deviceType); - uCentral::RESTAPI_utils::field_to_json(Obj, "qrCode", qrCode); - uCentral::RESTAPI_utils::field_to_json(Obj, "geoCode", geoCode); + RESTAPI_utils::field_to_json(Obj, "serialNumber", serialNumber); + RESTAPI_utils::field_to_json(Obj, "venue", venue); + RESTAPI_utils::field_to_json(Obj, "entity", entity); + RESTAPI_utils::field_to_json(Obj, "subEntity", subEntity); + RESTAPI_utils::field_to_json(Obj, "subVenue", subVenue); + RESTAPI_utils::field_to_json(Obj, "subscriber", subscriber); + RESTAPI_utils::field_to_json(Obj, "deviceType", deviceType); + RESTAPI_utils::field_to_json(Obj, "qrCode", qrCode); + RESTAPI_utils::field_to_json(Obj, "geoCode", geoCode); } bool InventoryTag::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); - uCentral::RESTAPI_utils::field_from_json( Obj,"serialNumber",serialNumber); - uCentral::RESTAPI_utils::field_from_json( Obj,"venue",venue); - uCentral::RESTAPI_utils::field_from_json( Obj,"entity",entity); - uCentral::RESTAPI_utils::field_from_json( Obj,"subEntity",subEntity); - uCentral::RESTAPI_utils::field_from_json( Obj,"subVenue",subVenue); - uCentral::RESTAPI_utils::field_from_json( Obj,"subscriber",subscriber); - uCentral::RESTAPI_utils::field_from_json( Obj,"deviceType",deviceType); - uCentral::RESTAPI_utils::field_from_json(Obj, "qrCode", qrCode); - uCentral::RESTAPI_utils::field_from_json( Obj,"geoCode",geoCode); + RESTAPI_utils::field_from_json( Obj,"serialNumber",serialNumber); + RESTAPI_utils::field_from_json( Obj,"venue",venue); + RESTAPI_utils::field_from_json( Obj,"entity",entity); + RESTAPI_utils::field_from_json( Obj,"subEntity",subEntity); + RESTAPI_utils::field_from_json( Obj,"subVenue",subVenue); + RESTAPI_utils::field_from_json( Obj,"subscriber",subscriber); + RESTAPI_utils::field_from_json( Obj,"deviceType",deviceType); + RESTAPI_utils::field_from_json(Obj, "qrCode", qrCode); + RESTAPI_utils::field_from_json( Obj,"geoCode",geoCode); return true; } catch(...) { @@ -311,16 +308,16 @@ namespace OpenWifi::ProvObjects { void DeviceConfiguration::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); managementPolicy.to_json(Obj); - uCentral::RESTAPI_utils::field_to_json( Obj,"deviceTypes",deviceTypes); - uCentral::RESTAPI_utils::field_to_json( Obj,"configuration",configuration); + RESTAPI_utils::field_to_json( Obj,"deviceTypes",deviceTypes); + RESTAPI_utils::field_to_json( Obj,"configuration",configuration); } bool DeviceConfiguration::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); managementPolicy.from_json(Obj); - uCentral::RESTAPI_utils::field_from_json( Obj,"deviceTypes",deviceTypes); - uCentral::RESTAPI_utils::field_from_json( Obj,"configuration",configuration); + RESTAPI_utils::field_from_json( Obj,"deviceTypes",deviceTypes); + RESTAPI_utils::field_from_json( Obj,"configuration",configuration); return true; } catch(...) { @@ -329,8 +326,8 @@ namespace OpenWifi::ProvObjects { } void Report::to_json(Poco::JSON::Object &Obj) const { - uCentral::RESTAPI_utils::field_to_json(Obj, "snapshot", snapShot); - uCentral::RESTAPI_utils::field_to_json(Obj, "devices", tenants); + RESTAPI_utils::field_to_json(Obj, "snapshot", snapShot); + RESTAPI_utils::field_to_json(Obj, "devices", tenants); }; void Report::reset() { diff --git a/src/RESTAPI_ProvObjects.h b/src/RESTAPI_ProvObjects.h index 207f579..39de481 100644 --- a/src/RESTAPI_ProvObjects.h +++ b/src/RESTAPI_ProvObjects.h @@ -11,10 +11,10 @@ namespace OpenWifi::ProvObjects { struct ObjectInfo { - uCentral::Types::UUID_t id; + Types::UUID_t id; std::string name; std::string description; - uCentral::SecurityObjects::NoteInfoVec notes; + SecurityObjects::NoteInfoVec notes; uint64_t created; uint64_t modified; @@ -23,9 +23,9 @@ namespace OpenWifi::ProvObjects { }; struct ManagementPolicyEntry { - uCentral::Types::UUIDvec_t users; - uCentral::Types::UUIDvec_t resources; - uCentral::Types::StringVec access; + Types::UUIDvec_t users; + Types::UUIDvec_t resources; + Types::StringVec access; std::string policy; void to_json(Poco::JSON::Object &Obj) const; @@ -42,20 +42,20 @@ namespace OpenWifi::ProvObjects { struct Entity { ObjectInfo info; - uCentral::Types::UUID_t parent; - uCentral::Types::UUIDvec_t children; - uCentral::Types::UUIDvec_t venues; - uCentral::Types::UUIDvec_t contacts; - uCentral::Types::UUIDvec_t locations; - uCentral::Types::UUID_t managementPolicy; + Types::UUID_t parent; + Types::UUIDvec_t children; + Types::UUIDvec_t venues; + Types::UUIDvec_t contacts; + Types::UUIDvec_t locations; + Types::UUID_t managementPolicy; void to_json(Poco::JSON::Object &Obj) const; bool from_json(const Poco::JSON::Object::Ptr &Obj); }; struct DiGraphEntry { - uCentral::Types::UUID_t parent; - uCentral::Types::UUID_t child; + Types::UUID_t parent; + Types::UUID_t child; void to_json(Poco::JSON::Object &Obj) const; bool from_json(const Poco::JSON::Object::Ptr &Obj); @@ -65,11 +65,11 @@ namespace OpenWifi::ProvObjects { struct Venue { ObjectInfo info; - uCentral::Types::UUID_t entity; - uCentral::Types::UUID_t parent; - uCentral::Types::UUIDvec_t children; - uCentral::Types::UUID_t managementPolicy; - uCentral::Types::UUIDvec_t devices; + Types::UUID_t entity; + Types::UUID_t parent; + Types::UUIDvec_t children; + Types::UUID_t managementPolicy; + Types::UUIDvec_t devices; DiGraph topology; std::string design; @@ -88,7 +88,7 @@ namespace OpenWifi::ProvObjects { struct ManagementRole { ObjectInfo info; - uCentral::Types::UUID_t managementPolicy; + Types::UUID_t managementPolicy; std::vector users; void to_json(Poco::JSON::Object &Obj) const; @@ -135,15 +135,15 @@ namespace OpenWifi::ProvObjects { ObjectInfo info; LocationType type; std::string buildingName; - uCentral::Types::StringVec addressLines; + Types::StringVec addressLines; std::string city; std::string state; std::string postal; std::string country; - uCentral::Types::StringVec phones; - uCentral::Types::StringVec mobiles; - uCentral::Types::StringVec venues; - uCentral::Types::StringVec entities; + Types::StringVec phones; + Types::StringVec mobiles; + Types::StringVec venues; + Types::StringVec entities; std::string geoCode; void to_json(Poco::JSON::Object &Obj) const; @@ -199,13 +199,13 @@ namespace OpenWifi::ProvObjects { std::string lastname; std::string initials; std::string visual; - uCentral::Types::StringVec mobiles; - uCentral::Types::StringVec phones; + Types::StringVec mobiles; + Types::StringVec phones; std::string primaryEmail; std::string secondaryEmail; std::string accessPIN; - uCentral::Types::StringVec venues; - uCentral::Types::StringVec entities; + Types::StringVec venues; + Types::StringVec entities; void to_json(Poco::JSON::Object &Obj) const; bool from_json(const Poco::JSON::Object::Ptr &Obj); @@ -222,7 +222,7 @@ namespace OpenWifi::ProvObjects { struct DeviceConfiguration { ObjectInfo info; ManagementPolicy managementPolicy; - uCentral::Types::StringVec deviceTypes; + Types::StringVec deviceTypes; std::string configuration; void to_json(Poco::JSON::Object &Obj) const; @@ -247,7 +247,7 @@ namespace OpenWifi::ProvObjects { struct Report { uint64_t snapShot; - uCentral::Types::CountedMap tenants; + Types::CountedMap tenants; void reset(); void to_json(Poco::JSON::Object &Obj) const; diff --git a/src/RESTAPI_SecurityObjects.cpp b/src/RESTAPI_SecurityObjects.cpp index 705b0dc..ff657f5 100644 --- a/src/RESTAPI_SecurityObjects.cpp +++ b/src/RESTAPI_SecurityObjects.cpp @@ -12,10 +12,10 @@ #include "RESTAPI_SecurityObjects.h" #include "RESTAPI_utils.h" -using uCentral::RESTAPI_utils::field_to_json; -using uCentral::RESTAPI_utils::field_from_json; +using OpenWifi::RESTAPI_utils::field_to_json; +using OpenWifi::RESTAPI_utils::field_from_json; -namespace uCentral::SecurityObjects { +namespace OpenWifi::SecurityObjects { void AclTemplate::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj,"Read",Read_); @@ -303,6 +303,20 @@ namespace uCentral::SecurityObjects { return false; } + bool append_from_json(Poco::JSON::Object::Ptr Obj, const UserInfo &UInfo, NoteInfoVec & Notes) { + try { + 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}; + Notes.push_back(ii); + } + } catch(...) { + + } + return false; + } + void ProfileAction::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj,"resource", resource); field_to_json(Obj,"access", access, ResourceAccessTypeToString); diff --git a/src/RESTAPI_SecurityObjects.h b/src/RESTAPI_SecurityObjects.h index 33c762e..9ab885e 100644 --- a/src/RESTAPI_SecurityObjects.h +++ b/src/RESTAPI_SecurityObjects.h @@ -10,9 +10,9 @@ #define UCENTRAL_RESTAPI_SECURITYOBJECTS_H #include "Poco/JSON/Object.h" -#include "uCentralTypes.h" +#include "OpenWifiTypes.h" -namespace uCentral::SecurityObjects { +namespace OpenWifi::SecurityObjects { struct AclTemplate { bool Read_ = true; @@ -94,6 +94,8 @@ namespace uCentral::SecurityObjects { }; typedef std::vector UserInfoVec; + bool append_from_json(Poco::JSON::Object::Ptr Obj, const UserInfo &UInfo, NoteInfoVec & Notes); + struct InternalServiceInfo { std::string privateURI; std::string publicURI; diff --git a/src/RESTAPI_contact_handler.cpp b/src/RESTAPI_contact_handler.cpp index 9b64a6d..1eda0a2 100644 --- a/src/RESTAPI_contact_handler.cpp +++ b/src/RESTAPI_contact_handler.cpp @@ -34,14 +34,14 @@ namespace OpenWifi{ void RESTAPI_contact_handler::DoGet(Poco::Net::HTTPServerRequest &Request, Poco::Net::HTTPServerResponse &Response) { try { - std::string UUID = GetBinding(uCentral::RESTAPI::Protocol::ID,""); + std::string UUID = GetBinding(RESTAPI::Protocol::ID,""); if(UUID.empty()) { BadRequest(Request, Response, "Missing UUID."); return; } ProvObjects::Contact C; - if(Storage()->ContactDB().GetRecord(uCentral::RESTAPI::Protocol::ID,UUID,C)) { + if(Storage()->ContactDB().GetRecord(RESTAPI::Protocol::ID,UUID,C)) { Poco::JSON::Object Answer; C.to_json(Answer); ReturnObject(Request, Answer, Response); @@ -64,7 +64,7 @@ namespace OpenWifi{ void RESTAPI_contact_handler::DoPost(Poco::Net::HTTPServerRequest &Request, Poco::Net::HTTPServerResponse &Response) { try { - std::string UUID = GetBinding(uCentral::RESTAPI::Protocol::ID,""); + std::string UUID = GetBinding(RESTAPI::Protocol::ID,""); if(UUID.empty()) { BadRequest(Request, Response, "Missing UUID."); return; @@ -78,7 +78,7 @@ namespace OpenWifi{ return; } - C.info.id = uCentral::Daemon()->CreateUUID(); + C.info.id = Daemon()->CreateUUID(); C.info.created = C.info.modified = std::time(nullptr); if(C.entities.empty() || C.entities.size()!=1) { @@ -86,7 +86,7 @@ namespace OpenWifi{ return; } - std::string f{uCentral::RESTAPI::Protocol::ID}; + std::string f{RESTAPI::Protocol::ID}; if(!Storage()->EntityDB().Exists("id",C.entities[0])) { BadRequest(Request, Response, "Unknown entity: " + C.entities[0] ); return; diff --git a/src/RESTAPI_contact_handler.h b/src/RESTAPI_contact_handler.h index 1d6b5dd..683cbc2 100644 --- a/src/RESTAPI_contact_handler.h +++ b/src/RESTAPI_contact_handler.h @@ -10,7 +10,7 @@ #include "Poco/Net/HTTPServerResponse.h" namespace OpenWifi { - class RESTAPI_contact_handler : public uCentral::RESTAPIHandler { + class RESTAPI_contact_handler : public RESTAPIHandler { public: RESTAPI_contact_handler(const RESTAPIHandler::BindingMap &bindings, Poco::Logger &L, bool Internal) : RESTAPIHandler(bindings, L, diff --git a/src/RESTAPI_entity_handler.cpp b/src/RESTAPI_entity_handler.cpp index 0c335f7..ae29897 100644 --- a/src/RESTAPI_entity_handler.cpp +++ b/src/RESTAPI_entity_handler.cpp @@ -128,7 +128,7 @@ namespace OpenWifi{ // When creating an entity, it cannot have any relations other that parent, notes, name, description. Everything else // must be conveyed through PUT. - E.info.id = (UUID==EntityDB::RootUUID()) ? UUID : uCentral::Daemon()->CreateUUID() ; + E.info.id = (UUID==EntityDB::RootUUID()) ? UUID : Daemon()->CreateUUID() ; if(UUID==EntityDB::RootUUID()) E.parent=""; else if(E.parent.empty()) { @@ -196,12 +196,7 @@ namespace OpenWifi{ Poco::JSON::Parser IncomingParser; auto RawObject = IncomingParser.parse(Request.stream()).extract(); if(RawObject->has("notes")) { - uCentral::SecurityObjects::NoteInfoVec NIV; - NIV = uCentral::RESTAPI_utils::to_object_array(RawObject->get("notes").toString()); - for(auto const &i:NIV) { - uCentral::SecurityObjects::NoteInfo ii{.created=(uint64_t)std::time(nullptr), .createdBy=UserInfo_.userinfo.email, .note=i.note}; - LocalObject.info.notes.push_back(ii); - } + SecurityObjects::append_from_json(RawObject, UserInfo_.userinfo, LocalObject.info.notes); } if(RawObject->has("name")) diff --git a/src/RESTAPI_entity_handler.h b/src/RESTAPI_entity_handler.h index 3727fc6..05b0472 100644 --- a/src/RESTAPI_entity_handler.h +++ b/src/RESTAPI_entity_handler.h @@ -11,7 +11,7 @@ #include "Poco/Net/HTTPServerResponse.h" namespace OpenWifi { - class RESTAPI_entity_handler : public uCentral::RESTAPIHandler { + class RESTAPI_entity_handler : public RESTAPIHandler { public: RESTAPI_entity_handler(const RESTAPIHandler::BindingMap &bindings, Poco::Logger &L, bool Internal) : RESTAPIHandler(bindings, L, diff --git a/src/RESTAPI_entity_list_handler.cpp b/src/RESTAPI_entity_list_handler.cpp index 77ee87b..b37567b 100644 --- a/src/RESTAPI_entity_list_handler.cpp +++ b/src/RESTAPI_entity_list_handler.cpp @@ -26,7 +26,7 @@ namespace OpenWifi{ Poco::Net::HTTPServerResponse &Response) { try { if(!QB_.Select.empty()) { - auto EntityUIDs = uCentral::Utils::Split(QB_.Select); + auto EntityUIDs = Utils::Split(QB_.Select); Poco::JSON::Array Arr; for(const auto &i:EntityUIDs) { ProvObjects::Entity E; diff --git a/src/RESTAPI_entity_list_handler.h b/src/RESTAPI_entity_list_handler.h index 6418218..e7557ac 100644 --- a/src/RESTAPI_entity_list_handler.h +++ b/src/RESTAPI_entity_list_handler.h @@ -10,7 +10,7 @@ #include "Poco/Net/HTTPServerResponse.h" namespace OpenWifi { - class RESTAPI_entity_list_handler : public uCentral::RESTAPIHandler { + class RESTAPI_entity_list_handler : public RESTAPIHandler { public: RESTAPI_entity_list_handler(const RESTAPIHandler::BindingMap &bindings, Poco::Logger &L, bool Internal) : RESTAPIHandler(bindings, L, diff --git a/src/RESTAPI_handler.cpp b/src/RESTAPI_handler.cpp index 6aeb5e6..64f6a01 100644 --- a/src/RESTAPI_handler.cpp +++ b/src/RESTAPI_handler.cpp @@ -27,16 +27,16 @@ #include "Utils.h" #include "Daemon.h" -namespace uCentral { +namespace OpenWifi { bool RESTAPIHandler::ParseBindings(const std::string & Request, const std::list & EndPoints, BindingMap &bindings) { std::string Param, Value; bindings.clear(); - std::vector PathItems = uCentral::Utils::Split(Request, '/'); + std::vector PathItems = Utils::Split(Request, '/'); for(const auto &EndPoint:EndPoints) { - std::vector ParamItems = uCentral::Utils::Split(EndPoint, '/'); + std::vector ParamItems = Utils::Split(EndPoint, '/'); if (PathItems.size() != ParamItems.size()) continue; @@ -365,17 +365,17 @@ namespace uCentral { } bool RESTAPIHandler::InitQueryBlock() { - QB_.SerialNumber = GetParameter(uCentral::RESTAPI::Protocol::SERIALNUMBER, ""); - QB_.StartDate = GetParameter(uCentral::RESTAPI::Protocol::STARTDATE, 0); - QB_.EndDate = GetParameter(uCentral::RESTAPI::Protocol::ENDDATE, 0); - QB_.Offset = GetParameter(uCentral::RESTAPI::Protocol::OFFSET, 1); - QB_.Limit = GetParameter(uCentral::RESTAPI::Protocol::LIMIT, 100); - QB_.Filter = GetParameter(uCentral::RESTAPI::Protocol::FILTER, ""); - QB_.Select = GetParameter(uCentral::RESTAPI::Protocol::SELECT, ""); - QB_.Lifetime = GetBoolParameter(uCentral::RESTAPI::Protocol::LIFETIME,false); - QB_.LogType = GetParameter(uCentral::RESTAPI::Protocol::LOGTYPE,0); - QB_.LastOnly = GetBoolParameter(uCentral::RESTAPI::Protocol::LASTONLY,false); - QB_.Newest = GetBoolParameter(uCentral::RESTAPI::Protocol::NEWEST,false); + QB_.SerialNumber = GetParameter(RESTAPI::Protocol::SERIALNUMBER, ""); + QB_.StartDate = GetParameter(RESTAPI::Protocol::STARTDATE, 0); + QB_.EndDate = GetParameter(RESTAPI::Protocol::ENDDATE, 0); + QB_.Offset = GetParameter(RESTAPI::Protocol::OFFSET, 1); + QB_.Limit = GetParameter(RESTAPI::Protocol::LIMIT, 100); + QB_.Filter = GetParameter(RESTAPI::Protocol::FILTER, ""); + QB_.Select = GetParameter(RESTAPI::Protocol::SELECT, ""); + QB_.Lifetime = GetBoolParameter(RESTAPI::Protocol::LIFETIME,false); + QB_.LogType = GetParameter(RESTAPI::Protocol::LOGTYPE,0); + QB_.LastOnly = GetBoolParameter(RESTAPI::Protocol::LASTONLY,false); + QB_.Newest = GetBoolParameter(RESTAPI::Protocol::NEWEST,false); if(QB_.Offset<1) return false; return true; @@ -400,7 +400,7 @@ namespace uCentral { } [[nodiscard]] uint64_t RESTAPIHandler::GetWhen(const Poco::JSON::Object::Ptr &Obj) { - return RESTAPIHandler::Get(uCentral::RESTAPI::Protocol::WHEN, Obj); + return RESTAPIHandler::Get(RESTAPI::Protocol::WHEN, Obj); } diff --git a/src/RESTAPI_handler.h b/src/RESTAPI_handler.h index 8106efe..9c03ebb 100644 --- a/src/RESTAPI_handler.h +++ b/src/RESTAPI_handler.h @@ -26,7 +26,7 @@ #include "RESTAPI_SecurityObjects.h" -namespace uCentral { +namespace OpenWifi { class RESTAPI_PartHandler: public Poco::Net::PartHandler { diff --git a/src/RESTAPI_inventory_handler.cpp b/src/RESTAPI_inventory_handler.cpp index 8d561a3..15872fa 100644 --- a/src/RESTAPI_inventory_handler.cpp +++ b/src/RESTAPI_inventory_handler.cpp @@ -34,14 +34,14 @@ namespace OpenWifi{ void RESTAPI_inventory_handler::DoGet(Poco::Net::HTTPServerRequest &Request, Poco::Net::HTTPServerResponse &Response) { try { - std::string SerialNumber = GetBinding(uCentral::RESTAPI::Protocol::SERIALNUMBER,""); + std::string SerialNumber = GetBinding(RESTAPI::Protocol::SERIALNUMBER,""); if(SerialNumber.empty()) { BadRequest(Request, Response, "Missing SerialNumber."); return; } ProvObjects::InventoryTag IT; - if(Storage()->InventoryDB().GetRecord(uCentral::RESTAPI::Protocol::SERIALNUMBER,SerialNumber,IT)) { + if(Storage()->InventoryDB().GetRecord(RESTAPI::Protocol::SERIALNUMBER,SerialNumber,IT)) { Poco::JSON::Object Answer; IT.to_json(Answer); ReturnObject(Request, Answer, Response); @@ -59,28 +59,28 @@ namespace OpenWifi{ void RESTAPI_inventory_handler::DoDelete(Poco::Net::HTTPServerRequest &Request, Poco::Net::HTTPServerResponse &Response) { try { - std::string SerialNumber = GetBinding(uCentral::RESTAPI::Protocol::SERIALNUMBER,""); + std::string SerialNumber = GetBinding(RESTAPI::Protocol::SERIALNUMBER,""); if(SerialNumber.empty()) { BadRequest(Request, Response, "Missing SerialNumber."); return; } ProvObjects::InventoryTag IT; - if(!Storage()->InventoryDB().GetRecord(uCentral::RESTAPI::Protocol::SERIALNUMBER,SerialNumber,IT)) { + if(!Storage()->InventoryDB().GetRecord(RESTAPI::Protocol::SERIALNUMBER,SerialNumber,IT)) { NotFound(Request,Response); return; } if(!IT.entity.empty()) - Storage()->EntityDB().DeleteChild(uCentral::RESTAPI::Protocol::ID,IT.entity,IT.info.id); + Storage()->EntityDB().DeleteChild(RESTAPI::Protocol::ID,IT.entity,IT.info.id); if(!IT.subEntity.empty()) - Storage()->EntityDB().DeleteChild(uCentral::RESTAPI::Protocol::ID,IT.subEntity,IT.info.id); + Storage()->EntityDB().DeleteChild(RESTAPI::Protocol::ID,IT.subEntity,IT.info.id); if(!IT.venue.empty()) - Storage()->EntityDB().DeleteChild(uCentral::RESTAPI::Protocol::ID,IT.venue,IT.info.id); + Storage()->EntityDB().DeleteChild(RESTAPI::Protocol::ID,IT.venue,IT.info.id); if(!IT.subVenue.empty()) - Storage()->EntityDB().DeleteChild(uCentral::RESTAPI::Protocol::ID,IT.subVenue,IT.info.id); + Storage()->EntityDB().DeleteChild(RESTAPI::Protocol::ID,IT.subVenue,IT.info.id); - Storage()->InventoryDB().DeleteRecord(uCentral::RESTAPI::Protocol::ID, IT.info.id); + Storage()->InventoryDB().DeleteRecord(RESTAPI::Protocol::ID, IT.info.id); OK(Request, Response); return; } catch(const Poco::Exception &E) { @@ -92,13 +92,13 @@ namespace OpenWifi{ void RESTAPI_inventory_handler::DoPost(Poco::Net::HTTPServerRequest &Request, Poco::Net::HTTPServerResponse &Response) { try { - std::string SerialNumber = GetBinding(uCentral::RESTAPI::Protocol::SERIALNUMBER,""); + std::string SerialNumber = GetBinding(RESTAPI::Protocol::SERIALNUMBER,""); if(SerialNumber.empty()) { BadRequest(Request, Response, "Missing SerialNumber."); return; } - if(Storage()->InventoryDB().Exists(uCentral::RESTAPI::Protocol::SERIALNUMBER,SerialNumber)) { + if(Storage()->InventoryDB().Exists(RESTAPI::Protocol::SERIALNUMBER,SerialNumber)) { BadRequest(Request,Response, "SerialNumber: " + SerialNumber + " already exists."); return; } @@ -111,22 +111,19 @@ namespace OpenWifi{ return; } - if(IT.entity.empty()) { - BadRequest(Request, Response, "Device must be associated with a top entity."); + if(IT.entity.empty() || OpenWifi::EntityDB::IsRoot(IT.entity) || !Storage()->InventoryDB().Exists("id",IT.entity)) { + BadRequest(Request, Response, "Device must be associated with a non-root and existing entity. UUID="+IT.entity); return; } - IT.info.modified = IT.info.created = std::time(nullptr); - if(!IT.entity.empty() && !Storage()->InventoryDB().Exists("id",IT.entity)) { - BadRequest(Request, Response, "Entity: " + IT.entity + " does not exist."); - return; - } if(!IT.venue.empty() && !Storage()->VenueDB().Exists("id",IT.venue)) { BadRequest(Request, Response, "Venue: " + IT.venue + " does not exist."); return; } + + IT.info.modified = IT.info.created = std::time(nullptr); IT.subEntity = IT.subVenue = ""; - IT.info.id = uCentral::Daemon()->CreateUUID(); + IT.info.id = Daemon()->CreateUUID(); if(Storage()->InventoryDB().CreateRecord(IT)) { Storage()->EntityDB().AddChild("id",IT.entity,IT.info.id); @@ -148,14 +145,14 @@ namespace OpenWifi{ void RESTAPI_inventory_handler::DoPut(Poco::Net::HTTPServerRequest &Request, Poco::Net::HTTPServerResponse &Response) { try { - std::string SerialNumber = GetBinding(uCentral::RESTAPI::Protocol::SERIALNUMBER,""); + std::string SerialNumber = GetBinding(RESTAPI::Protocol::SERIALNUMBER,""); if(SerialNumber.empty()) { BadRequest(Request, Response, "Missing SerialNumber."); return; } ProvObjects::InventoryTag ExistingObject; - if(!Storage()->InventoryDB().GetRecord(uCentral::RESTAPI::Protocol::SERIALNUMBER,SerialNumber,ExistingObject)) { + if(!Storage()->InventoryDB().GetRecord(RESTAPI::Protocol::SERIALNUMBER,SerialNumber,ExistingObject)) { NotFound(Request, Response); return; } @@ -163,12 +160,7 @@ namespace OpenWifi{ Poco::JSON::Parser IncomingParser; Poco::JSON::Object::Ptr RawObject = IncomingParser.parse(Request.stream()).extract(); if(RawObject->has("notes")) { - uCentral::SecurityObjects::NoteInfoVec NIV; - NIV = uCentral::RESTAPI_utils::to_object_array(RawObject->get("notes").toString()); - for(auto const &i:NIV) { - uCentral::SecurityObjects::NoteInfo ii{.created=(uint64_t)std::time(nullptr), .createdBy=UserInfo_.userinfo.email, .note=i.note}; - ExistingObject.info.notes.push_back(ii); - } + SecurityObjects::append_from_json(RawObject, UserInfo_.userinfo, ExistingObject.info.notes); } if(RawObject->has("name")) @@ -190,6 +182,18 @@ namespace OpenWifi{ } } + if(RawObject->has("subEntity")) { + std::string subEntity{RawObject->get("subEntity").toString()}; + if(!Storage()->EntityDB().Exists("id",subEntity)) { + BadRequest(Request, Response, "subEntity association does not exist."); + return; + } + if(subEntity!=ExistingObject.entity) { + Storage()->EntityDB().DeleteChild("id", ExistingObject.subEntity, ExistingObject.info.id); + Storage()->EntityDB().AddChild("id",subEntity,ExistingObject.info.id); + } + } + if(RawObject->has("venue")) { std::string Venue{RawObject->get("venue").toString()}; if(!Storage()->VenueDB().Exists("id",Venue)) { @@ -203,6 +207,19 @@ namespace OpenWifi{ } } + if(RawObject->has("subVenue")) { + std::string subVenue{RawObject->get("subVenue").toString()}; + if(!Storage()->VenueDB().Exists("id",subVenue)) { + BadRequest(Request, Response, "Venue association does not exist."); + return; + } + if(subVenue!=ExistingObject.subVenue) { + if(!ExistingObject.subVenue.empty()) + Storage()->VenueDB().DeleteChild("id", ExistingObject.subVenue, ExistingObject.info.id); + Storage()->VenueDB().AddChild("id",subVenue,ExistingObject.info.id); + } + } + if(RawObject->has("deviceType")) { std::string DeviceType{RawObject->get("deviceType").toString()}; ExistingObject.deviceType = DeviceType; diff --git a/src/RESTAPI_inventory_handler.h b/src/RESTAPI_inventory_handler.h index 7843703..491dbac 100644 --- a/src/RESTAPI_inventory_handler.h +++ b/src/RESTAPI_inventory_handler.h @@ -10,7 +10,7 @@ #include "Poco/Net/HTTPServerResponse.h" namespace OpenWifi { - class RESTAPI_inventory_handler : public uCentral::RESTAPIHandler { + class RESTAPI_inventory_handler : public RESTAPIHandler { public: RESTAPI_inventory_handler(const RESTAPIHandler::BindingMap &bindings, Poco::Logger &L, bool Internal) : RESTAPIHandler(bindings, L, diff --git a/src/RESTAPI_inventory_list_handler.cpp b/src/RESTAPI_inventory_list_handler.cpp index 31ed07c..b8ba6ac 100644 --- a/src/RESTAPI_inventory_list_handler.cpp +++ b/src/RESTAPI_inventory_list_handler.cpp @@ -27,7 +27,7 @@ namespace OpenWifi{ try { if(!QB_.Select.empty()) { - auto DevUIIDS = uCentral::Utils::Split(QB_.Select); + auto DevUIIDS = Utils::Split(QB_.Select); Poco::JSON::Array Arr; for(const auto &i:DevUIIDS) { ProvObjects::InventoryTag E; diff --git a/src/RESTAPI_inventory_list_handler.h b/src/RESTAPI_inventory_list_handler.h index d0e5a6b..1f27b84 100644 --- a/src/RESTAPI_inventory_list_handler.h +++ b/src/RESTAPI_inventory_list_handler.h @@ -11,7 +11,7 @@ #include "Poco/Net/HTTPServerResponse.h" namespace OpenWifi { - class RESTAPI_inventory_list_handler : public uCentral::RESTAPIHandler { + class RESTAPI_inventory_list_handler : public RESTAPIHandler { public: RESTAPI_inventory_list_handler(const RESTAPIHandler::BindingMap &bindings, Poco::Logger &L, bool Internal) : RESTAPIHandler(bindings, L, diff --git a/src/RESTAPI_location_handler.h b/src/RESTAPI_location_handler.h index 317be54..13bf82a 100644 --- a/src/RESTAPI_location_handler.h +++ b/src/RESTAPI_location_handler.h @@ -10,7 +10,7 @@ #include "Poco/Net/HTTPServerResponse.h" namespace OpenWifi { - class RESTAPI_location_handler : public uCentral::RESTAPIHandler { + class RESTAPI_location_handler : public RESTAPIHandler { public: RESTAPI_location_handler(const RESTAPIHandler::BindingMap &bindings, Poco::Logger &L, bool Internal) : RESTAPIHandler(bindings, L, diff --git a/src/RESTAPI_managementPolicy_handler.h b/src/RESTAPI_managementPolicy_handler.h index 58a7739..a95babf 100644 --- a/src/RESTAPI_managementPolicy_handler.h +++ b/src/RESTAPI_managementPolicy_handler.h @@ -10,7 +10,7 @@ #include "Poco/Net/HTTPServerResponse.h" namespace OpenWifi { - class RESTAPI_managementPolicy_handler : public uCentral::RESTAPIHandler { + class RESTAPI_managementPolicy_handler : public RESTAPIHandler { public: RESTAPI_managementPolicy_handler(const RESTAPIHandler::BindingMap &bindings, Poco::Logger &L, bool Internal) : RESTAPIHandler(bindings, L, diff --git a/src/RESTAPI_protocol.h b/src/RESTAPI_protocol.h index c7c8d49..caf7f76 100644 --- a/src/RESTAPI_protocol.h +++ b/src/RESTAPI_protocol.h @@ -9,7 +9,7 @@ #ifndef UCENTRALGW_RESTAPI_PROTOCOL_H #define UCENTRALGW_RESTAPI_PROTOCOL_H -namespace uCentral::RESTAPI::Protocol { +namespace OpenWifi::RESTAPI::Protocol { static const char * CAPABILITIES = "capabilities"; static const char * LOGS = "logs"; static const char * HEALTHCHECKS = "healthchecks"; diff --git a/src/RESTAPI_server.cpp b/src/RESTAPI_server.cpp index 57d0672..94d5209 100644 --- a/src/RESTAPI_server.cpp +++ b/src/RESTAPI_server.cpp @@ -19,7 +19,7 @@ #include "RESTAPI_inventory_list_handler.h" #include "RESTAPI_entity_list_handler.h" -namespace uCentral { +namespace OpenWifi { class RESTAPI_server *RESTAPI_server::instance_ = nullptr; @@ -56,7 +56,7 @@ namespace uCentral { Poco::Net::HTTPRequestHandler *RequestHandlerFactory::createRequestHandler(const Poco::Net::HTTPServerRequest & Request) { - Logger_.debug(Poco::format("REQUEST(%s): %s %s", uCentral::Utils::FormatIPv6(Request.clientAddress().toString()), Request.getMethod(), Request.getURI())); + Logger_.debug(Poco::format("REQUEST(%s): %s %s", Utils::FormatIPv6(Request.clientAddress().toString()), Request.getMethod(), Request.getURI())); Poco::URI uri(Request.getURI()); auto *Path = uri.getPath().c_str(); diff --git a/src/RESTAPI_server.h b/src/RESTAPI_server.h index 317f524..cbf3158 100644 --- a/src/RESTAPI_server.h +++ b/src/RESTAPI_server.h @@ -13,7 +13,7 @@ #include "SubSystemServer.h" -namespace uCentral { +namespace OpenWifi { class RESTAPI_server : public SubSystemServer { diff --git a/src/RESTAPI_system_command.cpp b/src/RESTAPI_system_command.cpp index 2134f7c..da4f1e1 100644 --- a/src/RESTAPI_system_command.cpp +++ b/src/RESTAPI_system_command.cpp @@ -13,7 +13,7 @@ #include "Daemon.h" #include "RESTAPI_protocol.h" -namespace uCentral { +namespace OpenWifi { void RESTAPI_system_command::handleRequest(Poco::Net::HTTPServerRequest &Request, Poco::Net::HTTPServerResponse &Response) { @@ -36,19 +36,19 @@ namespace uCentral { Poco::JSON::Parser parser; auto Obj = parser.parse(Request.stream()).extract(); - if (Obj->has(uCentral::RESTAPI::Protocol::COMMAND)) { - auto Command = Poco::toLower(Obj->get(uCentral::RESTAPI::Protocol::COMMAND).toString()); - if (Command == uCentral::RESTAPI::Protocol::SETLOGLEVEL) { - if (Obj->has(uCentral::RESTAPI::Protocol::PARAMETERS) && - Obj->isArray(uCentral::RESTAPI::Protocol::PARAMETERS)) { - auto ParametersBlock = Obj->getArray(uCentral::RESTAPI::Protocol::PARAMETERS); + if (Obj->has(RESTAPI::Protocol::COMMAND)) { + auto Command = Poco::toLower(Obj->get(RESTAPI::Protocol::COMMAND).toString()); + if (Command == RESTAPI::Protocol::SETLOGLEVEL) { + if (Obj->has(RESTAPI::Protocol::PARAMETERS) && + Obj->isArray(RESTAPI::Protocol::PARAMETERS)) { + auto ParametersBlock = Obj->getArray(RESTAPI::Protocol::PARAMETERS); for (const auto &i:*ParametersBlock) { Poco::JSON::Parser pp; auto InnerObj = pp.parse(i).extract(); - if (InnerObj->has(uCentral::RESTAPI::Protocol::TAG) && - InnerObj->has(uCentral::RESTAPI::Protocol::VALUE)) { - auto Name = GetS(uCentral::RESTAPI::Protocol::TAG, InnerObj); - auto Value = GetS(uCentral::RESTAPI::Protocol::VALUE, InnerObj); + if (InnerObj->has(RESTAPI::Protocol::TAG) && + InnerObj->has(RESTAPI::Protocol::VALUE)) { + auto Name = GetS(RESTAPI::Protocol::TAG, InnerObj); + auto Value = GetS(RESTAPI::Protocol::VALUE, InnerObj); Daemon()->SetSubsystemLogLevel(Name, Value); Logger_.information(Poco::format("Setting log level for %s at %s", Name, Value)); } @@ -56,38 +56,38 @@ namespace uCentral { OK(Request, Response); return; } - } else if (Command == uCentral::RESTAPI::Protocol::GETLOGLEVELS) { + } else if (Command == RESTAPI::Protocol::GETLOGLEVELS) { auto CurrentLogLevels = Daemon()->GetLogLevels(); Poco::JSON::Object Result; Poco::JSON::Array Array; for(auto &[Name,Level]:CurrentLogLevels) { Poco::JSON::Object Pair; - Pair.set( uCentral::RESTAPI::Protocol::TAG,Name); - Pair.set(uCentral::RESTAPI::Protocol::VALUE,Level); + Pair.set( RESTAPI::Protocol::TAG,Name); + Pair.set(RESTAPI::Protocol::VALUE,Level); Array.add(Pair); } - Result.set(uCentral::RESTAPI::Protocol::TAGLIST,Array); + Result.set(RESTAPI::Protocol::TAGLIST,Array); ReturnObject(Request,Result,Response); return; - } else if (Command == uCentral::RESTAPI::Protocol::GETLOGLEVELNAMES) { + } else if (Command == RESTAPI::Protocol::GETLOGLEVELNAMES) { Poco::JSON::Object Result; Poco::JSON::Array LevelNamesArray; const Types::StringVec & LevelNames = Daemon()->GetLogLevelNames(); for(const auto &i:LevelNames) LevelNamesArray.add(i); - Result.set(uCentral::RESTAPI::Protocol::LIST,LevelNamesArray); + Result.set(RESTAPI::Protocol::LIST,LevelNamesArray); ReturnObject(Request,Result,Response); return; - } else if (Command == uCentral::RESTAPI::Protocol::GETSUBSYSTEMNAMES) { + } else if (Command == RESTAPI::Protocol::GETSUBSYSTEMNAMES) { Poco::JSON::Object Result; Poco::JSON::Array LevelNamesArray; const Types::StringVec & SubSystemNames = Daemon()->GetSubSystems(); for(const auto &i:SubSystemNames) LevelNamesArray.add(i); - Result.set(uCentral::RESTAPI::Protocol::LIST,LevelNamesArray); + Result.set(RESTAPI::Protocol::LIST,LevelNamesArray); ReturnObject(Request,Result,Response); return; - } else if (Command == uCentral::RESTAPI::Protocol::STATS) { + } else if (Command == RESTAPI::Protocol::STATS) { } } diff --git a/src/RESTAPI_system_command.h b/src/RESTAPI_system_command.h index 8295cbe..7b86b5d 100644 --- a/src/RESTAPI_system_command.h +++ b/src/RESTAPI_system_command.h @@ -11,7 +11,7 @@ #include "RESTAPI_handler.h" -namespace uCentral { +namespace OpenWifi { class RESTAPI_system_command : public RESTAPIHandler { public: RESTAPI_system_command(const RESTAPIHandler::BindingMap &bindings, Poco::Logger &L, bool Internal) diff --git a/src/RESTAPI_utils.cpp b/src/RESTAPI_utils.cpp index 8ca0800..d6451b6 100644 --- a/src/RESTAPI_utils.cpp +++ b/src/RESTAPI_utils.cpp @@ -4,7 +4,7 @@ #include "RESTAPI_utils.h" -namespace uCentral::RESTAPI_utils { +namespace OpenWifi::RESTAPI_utils { void EmbedDocument(const std::string & ObjName, Poco::JSON::Object & Obj, const std::string &ObjStr) { std::string D = ObjStr.empty() ? "{}" : ObjStr; diff --git a/src/RESTAPI_utils.h b/src/RESTAPI_utils.h index 48fc1e2..ed28859 100644 --- a/src/RESTAPI_utils.h +++ b/src/RESTAPI_utils.h @@ -9,10 +9,10 @@ #include "Poco/JSON/Object.h" #include "Poco/JSON/Parser.h" #include "Poco/Net/HTTPServerRequest.h" -#include "uCentralTypes.h" +#include "OpenWifiTypes.h" #include "Utils.h" -namespace uCentral::RESTAPI_utils { +namespace OpenWifi::RESTAPI_utils { void EmbedDocument(const std::string & ObjName, Poco::JSON::Object & Obj, const std::string &ObjStr); diff --git a/src/RESTAPI_venue_handler.cpp b/src/RESTAPI_venue_handler.cpp index 3938f8b..7941c70 100644 --- a/src/RESTAPI_venue_handler.cpp +++ b/src/RESTAPI_venue_handler.cpp @@ -27,14 +27,22 @@ namespace OpenWifi{ } void RESTAPI_venue_handler::DoGet(Poco::Net::HTTPServerRequest &Request, - Poco::Net::HTTPServerResponse &Response) {} + Poco::Net::HTTPServerResponse &Response) { + + } void RESTAPI_venue_handler::DoDelete(Poco::Net::HTTPServerRequest &Request, - Poco::Net::HTTPServerResponse &Response) {} + Poco::Net::HTTPServerResponse &Response) { + + } void RESTAPI_venue_handler::DoPost(Poco::Net::HTTPServerRequest &Request, - Poco::Net::HTTPServerResponse &Response) {} + Poco::Net::HTTPServerResponse &Response) { + + } void RESTAPI_venue_handler::DoPut(Poco::Net::HTTPServerRequest &Request, - Poco::Net::HTTPServerResponse &Response) {} + Poco::Net::HTTPServerResponse &Response) { + + } } \ No newline at end of file diff --git a/src/RESTAPI_venue_handler.h b/src/RESTAPI_venue_handler.h index dcc2f51..b2ae5c5 100644 --- a/src/RESTAPI_venue_handler.h +++ b/src/RESTAPI_venue_handler.h @@ -10,7 +10,7 @@ #include "Poco/Net/HTTPServerResponse.h" namespace OpenWifi { - class RESTAPI_venue_handler : public uCentral::RESTAPIHandler { + class RESTAPI_venue_handler : public RESTAPIHandler { public: RESTAPI_venue_handler(const RESTAPIHandler::BindingMap &bindings, Poco::Logger &L, bool Internal) : RESTAPIHandler(bindings, L, diff --git a/src/StorageService.cpp b/src/StorageService.cpp index 70c78a9..dc92443 100644 --- a/src/StorageService.cpp +++ b/src/StorageService.cpp @@ -7,10 +7,12 @@ // #include "Poco/Util/Application.h" +#include "Poco/Net/HTTPResponse.h" #include "StorageService.h" #include "Daemon.h" #include "Utils.h" +#include "OpenAPIRequest.h" namespace OpenWifi { @@ -26,7 +28,7 @@ namespace OpenWifi { Logger_.setLevel(Poco::Message::PRIO_NOTICE); Logger_.notice("Starting."); - std::string DBType = uCentral::Daemon()->ConfigGetString("storage.type"); + std::string DBType = Daemon()->ConfigGetString("storage.type"); if (DBType == "sqlite") { DBType_ = ORM::DBType::sqlite; @@ -58,10 +60,83 @@ namespace OpenWifi { OpenWifi::ProvObjects::Entity R; EntityDB_->GetRecord("id","xxx",R); - return 0; + Updater_.start(*this); + return 0; } + void Storage::run() { + Running_ = true ; + bool FirstRun=true; + uint64_t Retry = 10000; + while(Running_) { + if(!FirstRun) + Poco::Thread::trySleep(DeviceTypes_.empty() ? 5000 : 60000); + if(!Running_) + break; + if(UpdateDeviceTypes()) + FirstRun = false; + } + } + + + /* Get the device types... /api/v1/firmwares?deviceSet=true + { + "deviceTypes": [ + "cig_wf160d", + "cig_wf188", + "cig_wf194c", + "edgecore_eap101", + "edgecore_eap102", + "edgecore_ecs4100-12ph", + "edgecore_ecw5211", + "edgecore_ecw5410", + "edgecore_oap100", + "edgecore_spw2ac1200", + "edgecore_ssw2ac2600", + "indio_um-305ac", + "linksys_e8450-ubi", + "linksys_ea8300", + "mikrotik_nand", + "mikrotik_nand-large", + "tplink_cpe210_v3", + "tplink_cpe510_v3", + "tplink_eap225_outdoor_v1", + "tplink_ec420", + "tplink_ex227", + "tplink_ex228", + "tplink_ex447", + "wallys_dr40x9" + ] + } + */ + bool Storage::UpdateDeviceTypes() { + + Types::StringPairVec QueryData; + + QueryData.push_back(std::make_pair("deviceSet","true")); + OpenAPIRequestGet Req(uSERVICE_SECURITY, + "/api/v1/validateToken", + QueryData, + 5000); + + // TODO + Poco::JSON::Object::Ptr Response; + if(Req.Do(Response)==Poco::Net::HTTPResponse::HTTP_OK) { + if(Response->has("tokenInfo") && Response->has("userInfo")) { + SecurityObjects::UserInfoAndPolicy P; + P.from_json(Response); + } + return true; + } + + + return false; + } + void Storage::Stop() { + Running_=false; + Updater_.wakeUp(); + Updater_.join(); Logger_.notice("Stopping."); } diff --git a/src/StorageService.h b/src/StorageService.h index dc80d61..f42debe 100644 --- a/src/StorageService.h +++ b/src/StorageService.h @@ -30,7 +30,7 @@ namespace OpenWifi { - class Storage : public uCentral::SubSystemServer { +class Storage : public SubSystemServer, Poco::Runnable { public: static Storage *instance() { if (instance_ == nullptr) { @@ -58,6 +58,10 @@ namespace OpenWifi { bool Validate(const Poco::URI::QueryParameters &P, std::string &Error); + inline bool IsAcceptableDeviceType(const std::string &D) const { return (DeviceTypes_.find(D)!=DeviceTypes_.end());}; + + void run() override final; + private: static Storage *instance_; std::unique_ptr Pool_= nullptr; @@ -74,6 +78,11 @@ namespace OpenWifi { std::unique_ptr InventoryDB_; std::unique_ptr RolesDB_; + Poco::Thread Updater_; + std::set DeviceTypes_; + std::atomic_bool Running_=false; + + bool UpdateDeviceTypes(); Storage() noexcept; }; diff --git a/src/SubSystemServer.cpp b/src/SubSystemServer.cpp index 68f783d..cc2f709 100644 --- a/src/SubSystemServer.cpp +++ b/src/SubSystemServer.cpp @@ -19,7 +19,7 @@ #include "Daemon.h" -namespace uCentral { +namespace OpenWifi { SubSystemServer::SubSystemServer(std::string Name, const std::string &LoggingPrefix, std::string SubSystemConfigPrefix) : Name_(std::move(Name)), Logger_(Poco::Logger::get(LoggingPrefix)), diff --git a/src/SubSystemServer.h b/src/SubSystemServer.h index 94f6a4e..a1e8a81 100644 --- a/src/SubSystemServer.h +++ b/src/SubSystemServer.h @@ -23,7 +23,7 @@ using SubMutex = std::recursive_mutex; using SubMutexGuard = std::lock_guard; -namespace uCentral { +namespace OpenWifi { class PropertiesFileServerEntry { public: PropertiesFileServerEntry(std::string Address, uint32_t port, std::string Key_file, diff --git a/src/Utils.cpp b/src/Utils.cpp index c25301d..3d02449 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -28,7 +28,7 @@ #include "uCentralProtocol.h" #include "Daemon.h" -namespace uCentral::Utils { +namespace OpenWifi::Utils { [[nodiscard]] bool ValidSerialNumber(const std::string &Serial) { return ((Serial.size() < uCentralProtocol::SERIAL_NUMBER_LENGTH) && diff --git a/src/Utils.h b/src/Utils.h index 7d80178..88258ca 100644 --- a/src/Utils.h +++ b/src/Utils.h @@ -18,11 +18,11 @@ #include "Poco/Net/IPAddress.h" #include "Poco/String.h" #include "Poco/File.h" -#include "uCentralTypes.h" +#include "OpenWifiTypes.h" #define DBGLINE { std::cout << __FILE__ << ":" << __func__ << ":" << __LINE__ << std::endl; }; -namespace uCentral::Utils { +namespace OpenWifi::Utils { enum MediaTypeEncodings { PLAIN, diff --git a/src/storage_contact.cpp b/src/storage_contact.cpp index 51cb26d..c6b1e80 100644 --- a/src/storage_contact.cpp +++ b/src/storage_contact.cpp @@ -4,7 +4,7 @@ #include "storage_contact.h" #include "Utils.h" -#include "uCentralTypes.h" +#include "OpenWifiTypes.h" #include "RESTAPI_utils.h" #include "RESTAPI_SecurityObjects.h" @@ -50,7 +50,7 @@ template<> void ORM::DB< OpenWifi::ContactDBRecordType, OpenWifi::ProvObjects Out.info.id = In.get<0>(); Out.info.name = In.get<1>(); Out.info.description = In.get<2>(); - Out.info.notes = uCentral::RESTAPI_utils::to_object_array(In.get<3>()); + Out.info.notes = OpenWifi::RESTAPI_utils::to_object_array(In.get<3>()); Out.info.created = In.get<4>(); Out.info.modified = In.get<5>(); @@ -61,20 +61,20 @@ template<> void ORM::DB< OpenWifi::ContactDBRecordType, OpenWifi::ProvObjects Out.lastname = In.get<10>(); Out.initials = In.get<11>(); Out.visual = In.get<12>(); - uCentral::Types::from_string(In.get<13>(), Out.mobiles); - uCentral::Types::from_string(In.get<14>(), Out.phones); + OpenWifi::Types::from_string(In.get<13>(), Out.mobiles); + OpenWifi::Types::from_string(In.get<14>(), Out.phones); Out.primaryEmail = In.get<15>(); Out.secondaryEmail = In.get<16>(); Out.accessPIN = In.get<17>(); - uCentral::Types::from_string(In.get<18>(), Out.venues); - uCentral::Types::from_string(In.get<19>(), Out.entities); + OpenWifi::Types::from_string(In.get<18>(), Out.venues); + OpenWifi::Types::from_string(In.get<19>(), Out.entities); } template<> void ORM::DB< OpenWifi::ContactDBRecordType, OpenWifi::ProvObjects::Contact>::Convert(OpenWifi::ProvObjects::Contact &In, OpenWifi::ContactDBRecordType &Out) { Out.set<0>(In.info.id); Out.set<1>(In.info.name); Out.set<2>(In.info.description); - Out.set<3>(uCentral::RESTAPI_utils::to_string(In.info.notes)); + Out.set<3>(OpenWifi::RESTAPI_utils::to_string(In.info.notes)); Out.set<4>(In.info.created); Out.set<5>(In.info.modified); Out.set<6>(to_string(In.type)); @@ -84,11 +84,11 @@ template<> void ORM::DB< OpenWifi::ContactDBRecordType, OpenWifi::ProvObjects Out.set<10>(In.lastname); Out.set<11>(In.initials); Out.set<12>(In.visual); - Out.set<13>(uCentral::Types::to_string(In.mobiles)); - Out.set<14>(uCentral::Types::to_string(In.phones)); + Out.set<13>(OpenWifi::Types::to_string(In.mobiles)); + Out.set<14>(OpenWifi::Types::to_string(In.phones)); Out.set<15>(In.primaryEmail); Out.set<16>(In.secondaryEmail); Out.set<17>(In.accessPIN); - Out.set<18>(uCentral::Types::to_string(In.venues)); - Out.set<19>(uCentral::Types::to_string(In.entities)); + Out.set<18>(OpenWifi::Types::to_string(In.venues)); + Out.set<19>(OpenWifi::Types::to_string(In.entities)); } diff --git a/src/storage_entity.cpp b/src/storage_entity.cpp index f66acb8..bc9fbb1 100644 --- a/src/storage_entity.cpp +++ b/src/storage_entity.cpp @@ -4,12 +4,14 @@ #include "storage_entity.h" #include "Utils.h" -#include "uCentralTypes.h" +#include "OpenWifiTypes.h" #include "RESTAPI_utils.h" #include "RESTAPI_SecurityObjects.h" namespace OpenWifi { + const std::string EntityDB::RootUUID_{"0000-0000-0000"}; + static ORM::FieldVec EntityDB_Fields{ // object info ORM::Field{"id",64, true}, @@ -54,28 +56,28 @@ template<> void ORM::DB< OpenWifi::EntityDBRecordType, OpenWifi::ProvObjects: Out.info.id = In.get<0>(); Out.info.name = In.get<1>(); Out.info.description = In.get<2>(); - Out.info.notes = uCentral::RESTAPI_utils::to_object_array(In.get<3>()); + Out.info.notes = OpenWifi::RESTAPI_utils::to_object_array(In.get<3>()); Out.info.created = In.get<4>(); Out.info.modified = In.get<5>(); Out.parent = In.get<6>(); - uCentral::Types::from_string(In.get<7>(), Out.children); - uCentral::Types::from_string(In.get<8>(), Out.contacts); - uCentral::Types::from_string(In.get<9>(), Out.locations); + OpenWifi::Types::from_string(In.get<7>(), Out.children); + OpenWifi::Types::from_string(In.get<8>(), Out.contacts); + OpenWifi::Types::from_string(In.get<9>(), Out.locations); Out.managementPolicy = In.get<10>(); - uCentral::Types::from_string(In.get<11>(), Out.venues); + OpenWifi::Types::from_string(In.get<11>(), Out.venues); } template<> void ORM::DB< OpenWifi::EntityDBRecordType, OpenWifi::ProvObjects::Entity>::Convert(OpenWifi::ProvObjects::Entity &In, OpenWifi::EntityDBRecordType &Out) { Out.set<0>(In.info.id); Out.set<1>(In.info.name); Out.set<2>(In.info.description); - Out.set<3>(uCentral::RESTAPI_utils::to_string(In.info.notes)); + Out.set<3>(OpenWifi::RESTAPI_utils::to_string(In.info.notes)); Out.set<4>(In.info.created); Out.set<5>(In.info.modified); Out.set<6>(In.parent); - Out.set<7>(uCentral::Types::to_string(In.children)); - Out.set<8>(uCentral::Types::to_string(In.contacts)); - Out.set<9>(uCentral::Types::to_string(In.locations)); + Out.set<7>(OpenWifi::Types::to_string(In.children)); + Out.set<8>(OpenWifi::Types::to_string(In.contacts)); + Out.set<9>(OpenWifi::Types::to_string(In.locations)); Out.set<10>(In.managementPolicy); - Out.set<11>(uCentral::Types::to_string(In.venues)); + Out.set<11>(OpenWifi::Types::to_string(In.venues)); } diff --git a/src/storage_entity.h b/src/storage_entity.h index 002801b..3d28f01 100644 --- a/src/storage_entity.h +++ b/src/storage_entity.h @@ -27,9 +27,11 @@ namespace OpenWifi { class EntityDB : public ORM::DB { public: + static const std::string RootUUID_; EntityDB( ORM::DBType T, Poco::Data::SessionPool & P, Poco::Logger &L); inline bool RootExists() const { return RootExists_; }; - static inline const std::string RootUUID() { return "0000-0000-0000"; } + static inline bool IsRoot(const std::string &UUID) { return (UUID == RootUUID_); } + static inline const std::string RootUUID() { return RootUUID_; } bool CheckForRoot(); private: bool RootExists_=false; diff --git a/src/storage_inventory.cpp b/src/storage_inventory.cpp index 33ca9ed..6065358 100644 --- a/src/storage_inventory.cpp +++ b/src/storage_inventory.cpp @@ -4,7 +4,7 @@ #include "storage_inventory.h" #include "Utils.h" -#include "uCentralTypes.h" +#include "OpenWifiTypes.h" #include "RESTAPI_utils.h" #include "RESTAPI_SecurityObjects.h" @@ -47,7 +47,7 @@ template<> void ORM::DB< OpenWifi::InventoryDBRecordType, OpenWifi::ProvObjec Out.info.id = In.get<0>(); Out.info.name = In.get<1>(); Out.info.description = In.get<2>(); - Out.info.notes = uCentral::RESTAPI_utils::to_object_array(In.get<3>()); + Out.info.notes = OpenWifi::RESTAPI_utils::to_object_array(In.get<3>()); Out.info.created = In.get<4>(); Out.info.modified = In.get<5>(); Out.serialNumber = In.get<6>(); @@ -63,7 +63,7 @@ template<> void ORM::DB< OpenWifi::InventoryDBRecordType, OpenWifi::ProvObjec Out.set<0>(In.info.id); Out.set<1>(In.info.name); Out.set<2>(In.info.description); - Out.set<3>(uCentral::RESTAPI_utils::to_string(In.info.notes)); + Out.set<3>(OpenWifi::RESTAPI_utils::to_string(In.info.notes)); Out.set<4>(In.info.created); Out.set<5>(In.info.modified); Out.set<6>(In.serialNumber); diff --git a/src/storage_location.cpp b/src/storage_location.cpp index ddeaf05..6e720a0 100644 --- a/src/storage_location.cpp +++ b/src/storage_location.cpp @@ -4,7 +4,7 @@ #include "storage_location.h" #include "Utils.h" -#include "uCentralTypes.h" +#include "OpenWifiTypes.h" #include "RESTAPI_utils.h" #include "RESTAPI_SecurityObjects.h" @@ -44,44 +44,45 @@ namespace OpenWifi { } -template<> void ORM::DB< OpenWifi::LocationDBRecordType, OpenWifi::ProvObjects::Location>::Convert(OpenWifi::LocationDBRecordType &In, OpenWifi::ProvObjects::Location &Out) { +template<> void ORM::DB::Convert(OpenWifi::LocationDBRecordType &In, OpenWifi::ProvObjects::Location &Out) { Out.info.id = In.get<0>(); Out.info.name = In.get<1>(); Out.info.description = In.get<2>(); - Out.info.notes = uCentral::RESTAPI_utils::to_object_array(In.get<3>()); + Out.info.notes = OpenWifi::RESTAPI_utils::to_object_array(In.get<3>()); Out.info.created = In.get<4>(); Out.info.modified = In.get<5>(); Out.type = OpenWifi::ProvObjects::location_from_string(In.get<6>()); Out.buildingName = In.get<7>(); - uCentral::Types::from_string(In.get<8>(), Out.addressLines); + OpenWifi::Types::from_string(In.get<8>(), Out.addressLines); Out.city = In.get<9>(); Out.state = In.get<10>(); Out.postal = In.get<11>(); Out.country = In.get<12>(); - uCentral::Types::from_string(In.get<13>(), Out.phones); - uCentral::Types::from_string(In.get<14>(), Out.mobiles); - uCentral::Types::from_string(In.get<15>(), Out.venues); - uCentral::Types::from_string(In.get<16>(), Out.entities); + OpenWifi::Types::from_string(In.get<13>(), Out.phones); + OpenWifi::Types::from_string(In.get<14>(), Out.mobiles); + OpenWifi::Types::from_string(In.get<15>(), Out.venues); + OpenWifi::Types::from_string(In.get<16>(), Out.entities); Out.geoCode = In.get<17>(); } -template<> void ORM::DB< OpenWifi::LocationDBRecordType, OpenWifi::ProvObjects::Location>::Convert(OpenWifi::ProvObjects::Location &In, OpenWifi::LocationDBRecordType &Out) { +template<> void ::ORM::DB::Convert(OpenWifi::ProvObjects::Location &In, OpenWifi::LocationDBRecordType &Out) { Out.set<0>(In.info.id); Out.set<1>(In.info.name); Out.set<2>(In.info.description); - Out.set<3>(uCentral::RESTAPI_utils::to_string(In.info.notes)); + Out.set<3>(OpenWifi::RESTAPI_utils::to_string(In.info.notes)); Out.set<4>(In.info.created); Out.set<5>(In.info.modified); Out.set<6>(OpenWifi::ProvObjects::to_string(In.type)); Out.set<7>(In.buildingName); - Out.set<8>(uCentral::Types::to_string(In.addressLines)); + Out.set<8>(OpenWifi::Types::to_string(In.addressLines)); Out.set<9>(In.city); Out.set<10>(In.state); Out.set<11>(In.postal); Out.set<12>(In.country); - Out.set<13>(uCentral::Types::to_string(In.phones)); - Out.set<14>(uCentral::Types::to_string(In.mobiles)); - Out.set<15>(uCentral::Types::to_string(In.venues)); - Out.set<16>(uCentral::Types::to_string(In.entities)); + Out.set<13>(OpenWifi::Types::to_string(In.phones)); + Out.set<14>(OpenWifi::Types::to_string(In.mobiles)); + Out.set<15>(OpenWifi::Types::to_string(In.venues)); + Out.set<16>(OpenWifi::Types::to_string(In.entities)); Out.set<17>(In.geoCode); } + diff --git a/src/storage_management_roles.cpp b/src/storage_management_roles.cpp index 2986de6..645123b 100644 --- a/src/storage_management_roles.cpp +++ b/src/storage_management_roles.cpp @@ -3,7 +3,7 @@ // #include "storage_management_roles.h" -#include "uCentralTypes.h" +#include "OpenWifiTypes.h" #include "RESTAPI_utils.h" #include "RESTAPI_SecurityObjects.h" @@ -37,20 +37,20 @@ template<> void ORM::DB< OpenWifi::ManagementRoleDBRecordType, OpenWifi::Prov Out.info.id = In.get<0>(); Out.info.name = In.get<1>(); Out.info.description = In.get<2>(); - Out.info.notes = uCentral::RESTAPI_utils::to_object_array(In.get<3>()); + Out.info.notes = OpenWifi::RESTAPI_utils::to_object_array(In.get<3>()); Out.info.created = In.get<4>(); Out.info.modified = In.get<5>(); Out.managementPolicy = In.get<6>(); - Out.users = uCentral::RESTAPI_utils::to_object_array(In.get<7>()); + Out.users = OpenWifi::RESTAPI_utils::to_object_array(In.get<7>()); } template<> void ORM::DB< OpenWifi::ManagementRoleDBRecordType, OpenWifi::ProvObjects::ManagementRole>::Convert(OpenWifi::ProvObjects::ManagementRole &In, OpenWifi::ManagementRoleDBRecordType &Out) { Out.set<0>(In.info.id); Out.set<1>(In.info.name); Out.set<2>(In.info.description); - Out.set<3>(uCentral::RESTAPI_utils::to_string(In.info.notes)); + Out.set<3>(OpenWifi::RESTAPI_utils::to_string(In.info.notes)); Out.set<4>(In.info.created); Out.set<5>(In.info.modified); Out.set<6>(In.managementPolicy); - Out.set<7>(uCentral::RESTAPI_utils::to_string(In.users)); + Out.set<7>(OpenWifi::RESTAPI_utils::to_string(In.users)); } diff --git a/src/storage_mysql.cpp b/src/storage_mysql.cpp index 93f71d0..ee546b0 100644 --- a/src/storage_mysql.cpp +++ b/src/storage_mysql.cpp @@ -12,19 +12,19 @@ namespace OpenWifi { #ifdef SMALL_BUILD - int Service::Setup_MySQL() { uCentral::instance()->exit(Poco::Util::Application::EXIT_CONFIG);} + int Service::Setup_MySQL() { instance()->exit(Poco::Util::Application::EXIT_CONFIG);} #else int Storage::Setup_MySQL() { Logger_.notice("MySQL Storage enabled."); - auto NumSessions = uCentral::Daemon()->ConfigGetInt("storage.type.mysql.maxsessions", 64); - auto IdleTime = uCentral::Daemon()->ConfigGetInt("storage.type.mysql.idletime", 60); - auto Host = uCentral::Daemon()->ConfigGetString("storage.type.mysql.host"); - auto Username = uCentral::Daemon()->ConfigGetString("storage.type.mysql.username"); - auto Password = uCentral::Daemon()->ConfigGetString("storage.type.mysql.password"); - auto Database = uCentral::Daemon()->ConfigGetString("storage.type.mysql.database"); - auto Port = uCentral::Daemon()->ConfigGetString("storage.type.mysql.port"); + auto NumSessions = Daemon()->ConfigGetInt("storage.type.mysql.maxsessions", 64); + auto IdleTime = Daemon()->ConfigGetInt("storage.type.mysql.idletime", 60); + auto Host = Daemon()->ConfigGetString("storage.type.mysql.host"); + auto Username = Daemon()->ConfigGetString("storage.type.mysql.username"); + auto Password = Daemon()->ConfigGetString("storage.type.mysql.password"); + auto Database = Daemon()->ConfigGetString("storage.type.mysql.database"); + auto Port = Daemon()->ConfigGetString("storage.type.mysql.port"); std::string ConnectionStr = "host=" + Host + diff --git a/src/storage_pgql.cpp b/src/storage_pgql.cpp index 0b6ad66..61add84 100644 --- a/src/storage_pgql.cpp +++ b/src/storage_pgql.cpp @@ -12,19 +12,19 @@ namespace OpenWifi { #ifdef SMALL_BUILD - int Service::Setup_PostgreSQL() { uCentral::instance()->exit(Poco::Util::Application::EXIT_CONFIG);} + int Service::Setup_PostgreSQL() { instance()->exit(Poco::Util::Application::EXIT_CONFIG);} #else int Storage::Setup_PostgreSQL() { Logger_.notice("PostgreSQL Storage enabled."); - auto NumSessions = uCentral::Daemon()->ConfigGetInt("storage.type.postgresql.maxsessions", 64); - auto IdleTime = uCentral::Daemon()->ConfigGetInt("storage.type.postgresql.idletime", 60); - auto Host = uCentral::Daemon()->ConfigGetString("storage.type.postgresql.host"); - auto Username = uCentral::Daemon()->ConfigGetString("storage.type.postgresql.username"); - auto Password = uCentral::Daemon()->ConfigGetString("storage.type.postgresql.password"); - auto Database = uCentral::Daemon()->ConfigGetString("storage.type.postgresql.database"); - auto Port = uCentral::Daemon()->ConfigGetString("storage.type.postgresql.port"); - auto ConnectionTimeout = uCentral::Daemon()->ConfigGetString("storage.type.postgresql.connectiontimeout"); + auto NumSessions = Daemon()->ConfigGetInt("storage.type.postgresql.maxsessions", 64); + auto IdleTime = Daemon()->ConfigGetInt("storage.type.postgresql.idletime", 60); + auto Host = Daemon()->ConfigGetString("storage.type.postgresql.host"); + auto Username = Daemon()->ConfigGetString("storage.type.postgresql.username"); + auto Password = Daemon()->ConfigGetString("storage.type.postgresql.password"); + auto Database = Daemon()->ConfigGetString("storage.type.postgresql.database"); + auto Port = Daemon()->ConfigGetString("storage.type.postgresql.port"); + auto ConnectionTimeout = Daemon()->ConfigGetString("storage.type.postgresql.connectiontimeout"); std::string ConnectionStr = "host=" + Host + diff --git a/src/storage_policies.cpp b/src/storage_policies.cpp index 0a7182d..8096f75 100644 --- a/src/storage_policies.cpp +++ b/src/storage_policies.cpp @@ -4,7 +4,7 @@ #include "storage_policies.h" #include "Utils.h" -#include "uCentralTypes.h" +#include "OpenWifiTypes.h" #include "RESTAPI_utils.h" #include "RESTAPI_SecurityObjects.h" @@ -37,18 +37,18 @@ template<> void ORM::DB< OpenWifi::PolicyDBRecordType, OpenWifi::ProvObjects: Out.info.id = In.get<0>(); Out.info.name = In.get<1>(); Out.info.description = In.get<2>(); - Out.info.notes = uCentral::RESTAPI_utils::to_object_array(In.get<3>()); + Out.info.notes = OpenWifi::RESTAPI_utils::to_object_array(In.get<3>()); Out.info.created = In.get<4>(); Out.info.modified = In.get<5>(); - Out.entries = uCentral::RESTAPI_utils::to_object_array(In.get<6>()); + Out.entries = OpenWifi::RESTAPI_utils::to_object_array(In.get<6>()); } template<> void ORM::DB< OpenWifi::PolicyDBRecordType, OpenWifi::ProvObjects::ManagementPolicy>::Convert(OpenWifi::ProvObjects::ManagementPolicy &In, OpenWifi::PolicyDBRecordType &Out) { Out.set<0>(In.info.id); Out.set<1>(In.info.name); Out.set<2>(In.info.description); - Out.set<3>(uCentral::RESTAPI_utils::to_string(In.info.notes)); + Out.set<3>(OpenWifi::RESTAPI_utils::to_string(In.info.notes)); Out.set<4>(In.info.created); Out.set<5>(In.info.modified); - Out.set<6>(uCentral::RESTAPI_utils::to_string(In.entries)); + Out.set<6>(OpenWifi::RESTAPI_utils::to_string(In.entries)); } diff --git a/src/storage_sqlite.cpp b/src/storage_sqlite.cpp index dc22b1c..5115b49 100644 --- a/src/storage_sqlite.cpp +++ b/src/storage_sqlite.cpp @@ -13,9 +13,9 @@ namespace OpenWifi { int Storage::Setup_SQLite() { Logger_.notice("SQLite Storage enabled."); - auto DBName = uCentral::Daemon()->DataDir() + "/" + uCentral::Daemon()->ConfigGetString("storage.type.sqlite.db"); - auto NumSessions = uCentral::Daemon()->ConfigGetInt("storage.type.sqlite.maxsessions", 64); - auto IdleTime = uCentral::Daemon()->ConfigGetInt("storage.type.sqlite.idletime", 60); + auto DBName = Daemon()->DataDir() + "/" + Daemon()->ConfigGetString("storage.type.sqlite.db"); + auto NumSessions = Daemon()->ConfigGetInt("storage.type.sqlite.maxsessions", 64); + auto IdleTime = Daemon()->ConfigGetInt("storage.type.sqlite.idletime", 60); SQLiteConn_ = std::make_unique(); SQLiteConn_->registerConnector(); diff --git a/src/storage_venue.cpp b/src/storage_venue.cpp index 6bb3845..70e4a0b 100644 --- a/src/storage_venue.cpp +++ b/src/storage_venue.cpp @@ -3,7 +3,7 @@ // #include "storage_venue.h" -#include "uCentralTypes.h" +#include "OpenWifiTypes.h" #include "RESTAPI_utils.h" #include "RESTAPI_SecurityObjects.h" @@ -42,14 +42,14 @@ template<> void ORM::DB< OpenWifi::VenueDBRecordType, OpenWifi::ProvObjects:: Out.info.id = In.get<0>(); Out.info.name = In.get<1>(); Out.info.description = In.get<2>(); - Out.info.notes = uCentral::RESTAPI_utils::to_object_array(In.get<3>()); + Out.info.notes = OpenWifi::RESTAPI_utils::to_object_array(In.get<3>()); Out.info.created = In.get<4>(); Out.info.modified = In.get<5>(); Out.entity = In.get<6>(); Out.parent = In.get<7>(); - uCentral::Types::from_string(In.get<8>(), Out.children); - uCentral::Types::from_string(In.get<9>(), Out.devices); - Out.topology = uCentral::RESTAPI_utils::to_object_array(In.get<10>()); + OpenWifi::Types::from_string(In.get<8>(), Out.children); + OpenWifi::Types::from_string(In.get<9>(), Out.devices); + Out.topology = OpenWifi::RESTAPI_utils::to_object_array(In.get<10>()); Out.design = In.get<11>(); } @@ -57,13 +57,13 @@ template<> void ORM::DB< OpenWifi::VenueDBRecordType, OpenWifi::ProvObjects:: Out.set<0>(In.info.id); Out.set<1>(In.info.name); Out.set<2>(In.info.description); - Out.set<3>(uCentral::RESTAPI_utils::to_string(In.info.notes)); + Out.set<3>(OpenWifi::RESTAPI_utils::to_string(In.info.notes)); Out.set<4>(In.info.created); Out.set<5>(In.info.modified); Out.set<6>(In.entity); Out.set<7>(In.parent); - Out.set<8>(uCentral::Types::to_string(In.children)); - Out.set<9>(uCentral::Types::to_string(In.devices)); - Out.set<10>(uCentral::RESTAPI_utils::to_string(In.topology)); + Out.set<8>(OpenWifi::Types::to_string(In.children)); + Out.set<9>(OpenWifi::Types::to_string(In.devices)); + Out.set<10>(OpenWifi::RESTAPI_utils::to_string(In.topology)); Out.set<11>(In.design); } diff --git a/src/uCentralProtocol.h b/src/uCentralProtocol.h index 87c649d..3f8a3f6 100644 --- a/src/uCentralProtocol.h +++ b/src/uCentralProtocol.h @@ -11,7 +11,7 @@ #include "Poco/String.h" -namespace uCentral::uCentralProtocol { +namespace OpenWifi::uCentralProtocol { const int SERIAL_NUMBER_LENGTH = 30;