mirror of
				https://github.com/Telecominfraproject/wlan-cloud-owprov.git
				synced 2025-10-30 18:18:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			920 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			920 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //
 | |
| //	License type: BSD 3-Clause License
 | |
| //	License copy: https://github.com/Telecominfraproject/wlan-cloud-ucentralgw/blob/master/LICENSE
 | |
| //
 | |
| //	Created by Stephane Bourque on 2021-03-04.
 | |
| //	Arilia Wireless Inc.
 | |
| //
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include "RESTObjects/RESTAPI_SecurityObjects.h"
 | |
| 
 | |
| namespace OpenWifi::ProvObjects {
 | |
| 
 | |
|     enum FIRMWARE_UPGRADE_RULES {
 | |
|         dont_upgrade,
 | |
|         upgrade_inherit,
 | |
|         upgrade_release_only,
 | |
|         upgrade_latest
 | |
|     };
 | |
| 
 | |
|     struct ObjectInfo {
 | |
|         Types::UUID_t id;
 | |
|         std::string name;
 | |
|         std::string description;
 | |
|         SecurityObjects::NoteInfoVec notes;
 | |
|         uint64_t created = 0;
 | |
|         uint64_t modified = 0;
 | |
|         Types::TagList tags;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct SerialNumberList {
 | |
|         Types::UUIDvec_t serialNumbers;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ManagementPolicyEntry {
 | |
|         Types::UUIDvec_t users;
 | |
|         Types::UUIDvec_t resources;
 | |
|         Types::StringVec access;
 | |
|         std::string policy;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ManagementPolicy {
 | |
|         ObjectInfo info;
 | |
|         std::vector<ManagementPolicyEntry> entries;
 | |
|         Types::StringVec inUse;
 | |
|         Types::UUID_t entity;
 | |
|         Types::UUID_t venue;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     typedef std::vector<ManagementPolicy> ManagementPolicyVec;
 | |
| 
 | |
|     struct RRMAlgorithmDetails {
 | |
|         std::string name;
 | |
|         std::string parameters;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct RRMDetails {
 | |
|         std::string vendor;
 | |
|         std::string schedule;
 | |
|         std::vector<RRMAlgorithmDetails> algorithms;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct DeviceRules {
 | |
|         std::string rcOnly{"inherit"};
 | |
|         std::string rrm{"inherit"};
 | |
|         std::string firmwareUpgrade{"inherit"};
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct Entity {
 | |
|         ObjectInfo info;
 | |
|         Types::UUID_t parent;
 | |
|         Types::UUIDvec_t children;
 | |
|         Types::UUIDvec_t venues;
 | |
|         Types::UUIDvec_t contacts;    // all contacts associated in this entity
 | |
|         Types::UUIDvec_t locations; // all locations associated in this entity
 | |
|         Types::UUID_t managementPolicy;
 | |
|         Types::UUIDvec_t deviceConfiguration;
 | |
|         Types::UUIDvec_t devices;
 | |
|         DeviceRules deviceRules;
 | |
|         Types::StringVec sourceIP;
 | |
|         Types::UUIDvec_t variables;
 | |
|         Types::UUIDvec_t managementPolicies;
 | |
|         Types::UUIDvec_t managementRoles;
 | |
|         Types::UUIDvec_t maps;
 | |
|         Types::UUIDvec_t configurations;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     typedef std::vector<Entity> EntityVec;
 | |
| 
 | |
|     struct DiGraphEntry {
 | |
|         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);
 | |
|     };
 | |
| 
 | |
|     typedef std::vector<DiGraphEntry> DiGraph;
 | |
| 
 | |
|     struct Venue {
 | |
|         ObjectInfo info;
 | |
|         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;
 | |
|         Types::UUIDvec_t deviceConfiguration;
 | |
|         Types::UUIDvec_t contacts;
 | |
|         std::string location;
 | |
|         DeviceRules deviceRules;
 | |
|         Types::StringVec sourceIP;
 | |
|         Types::UUIDvec_t variables;
 | |
|         Types::UUIDvec_t configurations;
 | |
|         Types::UUIDvec_t maps;
 | |
|         Types::UUIDvec_t managementPolicies;
 | |
|         Types::UUIDvec_t managementRoles;
 | |
|         Types::UUIDvec_t boards;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     typedef std::vector<Venue> VenueVec;
 | |
| 
 | |
|     struct UserInfoDigest {
 | |
|         std::string id;
 | |
|         std::string loginId;
 | |
|         std::string userType;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ManagementRole {
 | |
|         ObjectInfo info;
 | |
|         Types::UUID_t managementPolicy;
 | |
|         Types::UUIDvec_t users;
 | |
|         Types::StringVec inUse;
 | |
|         Types::UUID_t entity;
 | |
|         Types::UUID_t venue;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     typedef std::vector<ManagementRole> ManagementRoleVec;
 | |
| 
 | |
|     enum LocationType {
 | |
|         LT_SERVICE,
 | |
|         LT_EQUIPMENT,
 | |
|         LT_AUTO,
 | |
|         LT_MANUAL,
 | |
|         LT_SPECIAL,
 | |
|         LT_UNKNOWN,
 | |
|         LT_CORPORATE
 | |
|     };
 | |
| 
 | |
|     inline std::string to_string(LocationType L) {
 | |
|         switch (L) {
 | |
|             case LT_SERVICE:
 | |
|                 return "SERVICE";
 | |
|             case LT_EQUIPMENT:
 | |
|                 return "EQUIPMENT";
 | |
|             case LT_AUTO:
 | |
|                 return "AUTO";
 | |
|             case LT_MANUAL:
 | |
|                 return "MANUAL";
 | |
|             case LT_SPECIAL:
 | |
|                 return "SPECIAL";
 | |
|             case LT_UNKNOWN:
 | |
|                 return "UNKNOWN";
 | |
|             case LT_CORPORATE:
 | |
|                 return "CORPORATE";
 | |
|             default:
 | |
|                 return "UNKNOWN";
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     inline LocationType location_from_string(const std::string &S) {
 | |
|         if (!Poco::icompare(S, "SERVICE"))
 | |
|             return LT_SERVICE;
 | |
|         else if (!Poco::icompare(S, "EQUIPMENT"))
 | |
|             return LT_EQUIPMENT;
 | |
|         else if (!Poco::icompare(S, "AUTO"))
 | |
|             return LT_AUTO;
 | |
|         else if (!Poco::icompare(S, "MANUAL"))
 | |
|             return LT_MANUAL;
 | |
|         else if (!Poco::icompare(S, "SPECIAL"))
 | |
|             return LT_SPECIAL;
 | |
|         else if (!Poco::icompare(S, "UNKNOWN"))
 | |
|             return LT_UNKNOWN;
 | |
|         else if (!Poco::icompare(S, "CORPORATE"))
 | |
|             return LT_CORPORATE;
 | |
|         return LT_UNKNOWN;
 | |
|     }
 | |
| 
 | |
|     struct Location {
 | |
|         ObjectInfo info;
 | |
|         LocationType type;
 | |
|         std::string buildingName;
 | |
|         Types::StringVec addressLines;
 | |
|         std::string city;
 | |
|         std::string state;
 | |
|         std::string postal;
 | |
|         std::string country;
 | |
|         Types::StringVec phones;
 | |
|         Types::StringVec mobiles;
 | |
|         std::string geoCode;
 | |
|         Types::StringVec inUse;
 | |
|         Types::UUID_t entity;
 | |
|         Types::UUID_t managementPolicy;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     typedef std::vector<Location> LocationVec;
 | |
| 
 | |
|     struct OperatorLocation {
 | |
|         ObjectInfo info;
 | |
|         std::string type;
 | |
|         std::string buildingName;
 | |
|         Types::StringVec addressLines;
 | |
|         std::string city;
 | |
|         std::string state;
 | |
|         std::string postal;
 | |
|         std::string country;
 | |
|         Types::StringVec phones;
 | |
|         Types::StringVec mobiles;
 | |
|         std::string geoCode;
 | |
|         Types::UUID_t operatorId;
 | |
|         Types::UUID_t subscriberDeviceId;
 | |
|         Types::UUID_t managementPolicy;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     typedef std::vector<Location> LocationVec;
 | |
| 
 | |
|     struct SubLocation {
 | |
|         std::string type;
 | |
|         std::string buildingName;
 | |
|         Types::StringVec addressLines;
 | |
|         std::string city;
 | |
|         std::string state;
 | |
|         std::string postal;
 | |
|         std::string country;
 | |
|         Types::StringVec phones;
 | |
|         Types::StringVec mobiles;
 | |
|         std::string geoCode;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct OperatorLocationList {
 | |
|         std::vector<OperatorLocation> locations;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     enum ContactType {
 | |
|         CT_SUBSCRIBER,
 | |
|         CT_USER,
 | |
|         CT_INSTALLER,
 | |
|         CT_CSR,
 | |
|         CT_MANAGER,
 | |
|         CT_BUSINESSOWNER,
 | |
|         CT_TECHNICIAN,
 | |
|         CT_CORPORATE,
 | |
|         CT_UNKNOWN
 | |
|     };
 | |
| 
 | |
|     inline std::string to_string(ContactType L) {
 | |
|         switch (L) {
 | |
|             case CT_SUBSCRIBER:
 | |
|                 return "SUBSCRIBER";
 | |
|             case CT_USER:
 | |
|                 return "USER";
 | |
|             case CT_INSTALLER:
 | |
|                 return "INSTALLER";
 | |
|             case CT_CSR:
 | |
|                 return "CSR";
 | |
|             case CT_MANAGER:
 | |
|                 return "MANAGER";
 | |
|             case CT_BUSINESSOWNER:
 | |
|                 return "BUSINESSOWNER";
 | |
|             case CT_TECHNICIAN:
 | |
|                 return "TECHNICIAN";
 | |
|             case CT_CORPORATE:
 | |
|                 return "CORPORATE";
 | |
|             case CT_UNKNOWN:
 | |
|                 return "UNKNOWN";
 | |
|             default:
 | |
|                 return "UNKNOWN";
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     inline ContactType contact_from_string(const std::string &S) {
 | |
|         if (!Poco::icompare(S, "SUBSCRIBER"))
 | |
|             return CT_SUBSCRIBER;
 | |
|         else if (!Poco::icompare(S, "USER"))
 | |
|             return CT_USER;
 | |
|         else if (!Poco::icompare(S, "INSTALLER"))
 | |
|             return CT_INSTALLER;
 | |
|         else if (!Poco::icompare(S, "CSR"))
 | |
|             return CT_CSR;
 | |
|         else if (!Poco::icompare(S, "BUSINESSOWNER"))
 | |
|             return CT_BUSINESSOWNER;
 | |
|         else if (!Poco::icompare(S, "TECHNICIAN"))
 | |
|             return CT_TECHNICIAN;
 | |
|         else if (!Poco::icompare(S, "CORPORATE"))
 | |
|             return CT_CORPORATE;
 | |
|         else if (!Poco::icompare(S, "UNKNOWN"))
 | |
|             return CT_UNKNOWN;
 | |
|         return CT_UNKNOWN;
 | |
|     }
 | |
| 
 | |
|     struct Contact {
 | |
|         ObjectInfo info;
 | |
|         ContactType type = CT_USER;
 | |
|         std::string title;
 | |
|         std::string salutation;
 | |
|         std::string firstname;
 | |
|         std::string lastname;
 | |
|         std::string initials;
 | |
|         std::string visual;
 | |
|         Types::StringVec mobiles;
 | |
|         Types::StringVec phones;
 | |
|         std::string primaryEmail;
 | |
|         std::string secondaryEmail;
 | |
|         std::string accessPIN;
 | |
|         Types::StringVec inUse;
 | |
|         Types::UUID_t entity;
 | |
|         Types::UUID_t managementPolicy;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     typedef std::vector<Contact> ContactVec;
 | |
| 
 | |
|     struct OperatorContact {
 | |
|         ObjectInfo info;
 | |
|         std::string type;
 | |
|         std::string title;
 | |
|         std::string salutation;
 | |
|         std::string firstname;
 | |
|         std::string lastname;
 | |
|         std::string initials;
 | |
|         std::string visual;
 | |
|         Types::StringVec mobiles;
 | |
|         Types::StringVec phones;
 | |
|         std::string primaryEmail;
 | |
|         std::string secondaryEmail;
 | |
|         std::string accessPIN;
 | |
|         Types::UUID_t operatorId;
 | |
|         Types::UUID_t subscriberDeviceId;
 | |
|         Types::UUID_t managementPolicy;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct SubContact {
 | |
|         std::string type;
 | |
|         std::string title;
 | |
|         std::string salutation;
 | |
|         std::string firstname;
 | |
|         std::string lastname;
 | |
|         std::string initials;
 | |
|         std::string visual;
 | |
|         Types::StringVec mobiles;
 | |
|         Types::StringVec phones;
 | |
|         std::string primaryEmail;
 | |
|         std::string secondaryEmail;
 | |
|         std::string accessPIN;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct OperatorContactList {
 | |
|         std::vector<OperatorContact> contacts;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     typedef std::vector<OperatorContact> OperatorContactVec;
 | |
| 
 | |
|     struct DeviceConfigurationElement {
 | |
|         std::string name;
 | |
|         std::string description;
 | |
|         uint64_t weight;
 | |
|         std::string configuration;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     typedef std::vector<DeviceConfigurationElement> DeviceConfigurationElementVec;
 | |
| 
 | |
|     struct DeviceConfiguration {
 | |
|         ObjectInfo info;
 | |
|         Types::UUID_t managementPolicy;
 | |
|         Types::StringVec deviceTypes;
 | |
|         DeviceConfigurationElementVec configuration;
 | |
|         Types::StringVec inUse;
 | |
|         Types::UUIDvec_t variables;
 | |
|         DeviceRules deviceRules;
 | |
|         bool subscriberOnly = false;
 | |
|         std::string venue;
 | |
|         std::string entity;
 | |
|         std::string subscriber;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     typedef std::vector<DeviceConfiguration> DeviceConfigurationVec;
 | |
| 
 | |
|     struct InventoryTag {
 | |
|         ObjectInfo info;
 | |
|         std::string serialNumber;
 | |
|         std::string venue;
 | |
|         std::string entity;
 | |
|         std::string subscriber;
 | |
|         std::string deviceType;
 | |
|         std::string qrCode;
 | |
|         std::string geoCode;
 | |
|         std::string location;
 | |
|         std::string contact;
 | |
|         std::string deviceConfiguration;
 | |
|         DeviceRules deviceRules;
 | |
|         Types::UUID_t managementPolicy;
 | |
|         std::string state;
 | |
|         std::string devClass;
 | |
|         std::string locale;
 | |
|         std::string realMacAddress;
 | |
|         bool doNotAllowOverrides = false;
 | |
|         std::uint64_t imported=0;
 | |
|         std::uint64_t connected=0;
 | |
|         std::string platform{"AP"};
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     typedef std::vector<InventoryTag> InventoryTagVec;
 | |
| 
 | |
|     struct InventoryTagList {
 | |
|         InventoryTagVec taglist;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct InventoryConfigApplyResult {
 | |
|         std::string appliedConfiguration;
 | |
|         Types::StringVec errors;
 | |
|         Types::StringVec warnings;
 | |
|         uint64_t errorCode;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct Report {
 | |
|         uint64_t snapShot = 0;
 | |
|         Types::CountedMap tenants;
 | |
| 
 | |
|         void reset();
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|     };
 | |
| 
 | |
|     struct ExpandedUseEntry {
 | |
|         std::string uuid;
 | |
|         std::string name;
 | |
|         std::string description;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ExpandedUseEntryList {
 | |
|         std::string type;
 | |
|         std::vector<ExpandedUseEntry> entries;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ExpandedUseEntryMapList {
 | |
|         std::vector<ExpandedUseEntryList> entries;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct UuidList {
 | |
|         Types::UUIDvec_t list;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     enum ACLACCESS {
 | |
|         NONE = 0, READ = 1, MODIFY = 2, CREATE = 3, DELETE = 4
 | |
|     };
 | |
| 
 | |
|     struct ObjectACL {
 | |
|         UuidList users;
 | |
|         UuidList roles;
 | |
|         uint64_t access = (uint64_t) NONE;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ObjectACLList {
 | |
|         std::vector<ObjectACL> list;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct Map {
 | |
|         ObjectInfo info;
 | |
|         std::string data;
 | |
|         std::string entity;
 | |
|         std::string creator;
 | |
|         std::string visibility{"private"};
 | |
|         ObjectACLList access;
 | |
|         Types::UUID_t managementPolicy;
 | |
|         std::string venue;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct MapList {
 | |
|         std::vector<Map> list;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     enum SignupStatusCodes {
 | |
|         SignupCreated = 0,
 | |
|         SignupWaitingForEmail,
 | |
|         SignupWaitingForDevice,
 | |
|         SignupSuccess,
 | |
|         SignupFailure,
 | |
|         SignupCanceled,
 | |
|         SignupTimedOut
 | |
|     };
 | |
| 
 | |
|     struct SignupEntry {
 | |
|         ObjectInfo info;
 | |
|         std::string email;
 | |
|         std::string userId;
 | |
|         std::string macAddress;
 | |
|         std::string serialNumber;
 | |
|         uint64_t submitted = 0;
 | |
|         uint64_t completed = 0;
 | |
|         std::string status;
 | |
|         uint64_t error = 0;
 | |
|         uint64_t statusCode = 0;
 | |
|         std::string deviceID;
 | |
|         std::string registrationId;
 | |
|         std::string operatorId;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct Variable {
 | |
|         std::string type;
 | |
|         uint64_t weight = 0;
 | |
|         std::string prefix;
 | |
|         std::string value;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct VariableList {
 | |
|         std::vector<Variable> variables;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct VariableBlock {
 | |
|         ObjectInfo info;
 | |
|         std::vector<Variable> variables;
 | |
|         std::string entity;
 | |
|         std::string venue;
 | |
|         std::string subscriber;
 | |
|         std::string inventory;
 | |
|         Types::UUIDvec_t configurations;
 | |
|         Types::UUID_t managementPolicy;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct VariableBlockList {
 | |
|         std::vector<VariableBlock> variableBlocks;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct Operator {
 | |
|         ObjectInfo info;
 | |
|         Types::UUID_t managementPolicy;
 | |
|         Types::UUIDvec_t managementRoles;
 | |
|         DeviceRules deviceRules;
 | |
|         std::vector<Variable> variables;
 | |
|         bool defaultOperator = false;
 | |
|         Types::StringVec sourceIP;
 | |
|         std::string registrationId;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct OperatorList {
 | |
|         std::vector<Operator> operators;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct VenueDeviceList {
 | |
|         std::string id;
 | |
|         std::string name;
 | |
|         std::string description;
 | |
|         Types::UUIDvec_t devices;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ServiceClass {
 | |
|         ObjectInfo info;
 | |
|         Types::UUID_t operatorId;
 | |
|         Types::UUID_t managementPolicy;
 | |
|         double cost = 0.0;
 | |
|         std::string currency;
 | |
|         std::string period;
 | |
|         std::string billingCode;
 | |
|         std::vector<Variable> variables;
 | |
|         bool defaultService = false;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ServiceClassList {
 | |
|         std::vector<ServiceClass> serviceClasses;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ConfigurationDetails {
 | |
|         DeviceConfigurationElementVec configuration;
 | |
|         std::string rrm{"inherit"};
 | |
|         std::string firmwareUpgrade{"inherit"};
 | |
|         std::string firmwareRCOnly{"inherit"};
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct SubscriberDevice {
 | |
|         ObjectInfo info;
 | |
|         std::string serialNumber;
 | |
|         std::string deviceType;
 | |
|         Types::UUID_t operatorId;
 | |
|         Types::UUID_t subscriberId;
 | |
|         SubLocation location;
 | |
|         SubContact contact;
 | |
|         Types::UUID_t managementPolicy;
 | |
|         Types::UUID_t serviceClass;
 | |
|         std::string qrCode;
 | |
|         std::string geoCode;
 | |
|         DeviceRules deviceRules;
 | |
|         std::string state;
 | |
|         std::string locale;
 | |
|         std::string billingCode;
 | |
|         DeviceConfigurationElementVec configuration;
 | |
|         bool suspended = false;
 | |
|         std::string realMacAddress;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct SubscriberDeviceList {
 | |
|         std::vector<SubscriberDevice> subscriberDevices;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ConfigurationOverride {
 | |
|         std::string source;
 | |
|         std::string reason;
 | |
|         std::string parameterName;
 | |
|         std::string parameterType;
 | |
|         std::string parameterValue;
 | |
|         std::uint64_t modified;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct ConfigurationOverrideList {
 | |
|         std::string serialNumber;
 | |
|         Types::UUID_t managementPolicy;
 | |
|         std::vector<ConfigurationOverride> overrides;
 | |
| 
 | |
|         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);
 | |
| 
 | |
|     struct GLBLRAccountInfo {
 | |
|         ObjectInfo info;
 | |
|         std::string privateKey;
 | |
|         std::string country, province, city, organization, commonName;
 | |
|         std::string CSR, CSRPrivateKey, CSRPublicKey;
 | |
|         std::string GlobalReachAcctId;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct GLBLRCertificateInfo {
 | |
|         std::string id;
 | |
|         std::string name;
 | |
|         std::string accountId;
 | |
|         std::string csr;
 | |
|         std::string certificate;
 | |
|         std::string certificateChain;
 | |
|         std::string certificateId;
 | |
|         std::uint64_t expiresAt = 0;
 | |
|         std::uint64_t created = 0;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
| 
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct GooglOrionAccountInfo {
 | |
|         ObjectInfo info;
 | |
|         std::string privateKey;
 | |
|         std::string certificate;
 | |
|         std::vector<std::string> cacerts;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct RADIUSServer {
 | |
|         std::string     Hostname;
 | |
|         std::string     IP;
 | |
|         std::uint64_t   Port=0;
 | |
|         std::string     Secret;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct RADIUSEndPointRadiusType {
 | |
|         std::vector<RADIUSServer>    Authentication;
 | |
|         std::vector<RADIUSServer>    Accounting;
 | |
|         std::vector<RADIUSServer>    CoA;
 | |
|         std::uint64_t AccountingInterval = 60;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct RADIUSEndPointRadsecType {
 | |
|         std::string     Hostname;
 | |
|         std::string     IP;
 | |
|         std::uint64_t   Port=2083;
 | |
|         std::string     Secret{"radsec"};
 | |
|         std::string     OpenRoamingType;
 | |
|         std::string     UseOpenRoamingAccount;
 | |
|         std::uint64_t   Weight=0;
 | |
|         std::string     Certificate;
 | |
|         std::string     PrivateKey;
 | |
|         std::vector<std::string>    CaCerts;
 | |
|         bool AllowSelfSigned=false;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct RADIUSEndPoint {
 | |
|         ObjectInfo                  info;
 | |
|         std::string                 Type{"radius"};
 | |
|         std::string                 PoolStrategy{"none"};
 | |
|         bool                        UseGWProxy=true;
 | |
|         std::string                 Index;
 | |
|         std::vector<std::string>    UsedBy;
 | |
|         std::vector<RADIUSEndPointRadiusType>   RadiusServers;
 | |
|         std::vector<RADIUSEndPointRadsecType>   RadsecServers;
 | |
|         std::string                 NasIdentifier;
 | |
|         std::uint64_t               AccountingInterval=600;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|     };
 | |
| 
 | |
|     struct RADIUSEndpointUpdateStatus {
 | |
|         std::uint64_t   lastUpdate=0;
 | |
|         std::uint64_t   lastConfigurationChange=0;
 | |
| 
 | |
|         void to_json(Poco::JSON::Object &Obj) const;
 | |
|         bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | |
|         bool Read();
 | |
|         bool Save();
 | |
|         bool ChangeConfiguration();
 | |
|     };
 | |
| 
 | |
| 
 | |
| }; // namespace OpenWifi::ProvObjects
 | 
