// // 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. // #include "RESTAPI_ProvObjects.h" #include "framework/MicroServiceFuncs.h" #include "framework/RESTAPI_utils.h" #include "framework/utils.h" using OpenWifi::RESTAPI_utils::field_from_json; using OpenWifi::RESTAPI_utils::field_to_json; namespace OpenWifi::ProvObjects { void ObjectInfo::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "id", id); field_to_json(Obj, "name", name); field_to_json(Obj, "description", description); field_to_json(Obj, "created", created); field_to_json(Obj, "modified", modified); field_to_json(Obj, "notes", notes); field_to_json(Obj, "tags", tags); } bool ObjectInfo::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "id", id); field_from_json(Obj, "name", name); field_from_json(Obj, "description", description); field_from_json(Obj, "created", created); field_from_json(Obj, "modified", modified); field_from_json(Obj, "notes", notes); field_from_json(Obj, "tags", tags); return true; } catch (...) { } return false; } void ManagementPolicyEntry::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "users", users); field_to_json(Obj, "resources", resources); field_to_json(Obj, "access", access); field_to_json(Obj, "policy", policy); } bool ManagementPolicyEntry::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "users", users); field_from_json(Obj, "resources", resources); field_from_json(Obj, "access", access); field_from_json(Obj, "policy", policy); return true; } catch (...) { } return false; } void ManagementPolicy::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "entries", entries); field_to_json(Obj, "inUse", inUse); field_to_json(Obj, "entity", entity); } bool ManagementPolicy::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "entries", entries); field_from_json(Obj, "inUse", inUse); field_from_json(Obj, "entity", entity); return true; } catch (...) { } return false; } void Entity::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "parent", parent); field_to_json(Obj, "venues", venues); field_to_json(Obj, "children", children); field_to_json(Obj, "contacts", contacts); field_to_json(Obj, "locations", locations); field_to_json(Obj, "managementPolicy", managementPolicy); field_to_json(Obj, "deviceConfiguration", deviceConfiguration); field_to_json(Obj, "devices", devices); field_to_json(Obj, "deviceRules", deviceRules); field_to_json(Obj, "sourceIP", sourceIP); field_to_json(Obj, "variables", variables); field_to_json(Obj, "managementPolicies", managementPolicies); field_to_json(Obj, "managementRoles", managementRoles); field_to_json(Obj, "maps", maps); field_to_json(Obj, "configurations", configurations); } bool Entity::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "parent", parent); field_from_json(Obj, "venues", venues); field_from_json(Obj, "children", children); field_from_json(Obj, "contacts", contacts); field_from_json(Obj, "locations", locations); field_from_json(Obj, "managementPolicy", managementPolicy); field_from_json(Obj, "deviceConfiguration", deviceConfiguration); field_from_json(Obj, "devices", devices); field_from_json(Obj, "deviceRules", deviceRules); field_from_json(Obj, "sourceIP", sourceIP); field_from_json(Obj, "variables", variables); field_from_json(Obj, "managementPolicies", managementPolicies); field_from_json(Obj, "managementRoles", managementRoles); field_from_json(Obj, "maps", maps); field_from_json(Obj, "configurations", configurations); return true; } catch (...) { } return false; } void DiGraphEntry::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "parent", parent); field_to_json(Obj, "child", child); } bool DiGraphEntry::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "parent", parent); field_from_json(Obj, "child", child); return true; } catch (...) { } return false; } void Venue::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "parent", parent); field_to_json(Obj, "entity", entity); field_to_json(Obj, "children", children); field_to_json(Obj, "devices", devices); field_to_json(Obj, "topology", topology); field_to_json(Obj, "parent", parent); field_to_json(Obj, "design", design); field_to_json(Obj, "managementPolicy", managementPolicy); field_to_json(Obj, "deviceConfiguration", deviceConfiguration); field_to_json(Obj, "contacts", contacts); field_to_json(Obj, "location", location); field_to_json(Obj, "deviceRules", deviceRules); field_to_json(Obj, "sourceIP", sourceIP); field_to_json(Obj, "variables", variables); field_to_json(Obj, "managementPolicies", managementPolicies); field_to_json(Obj, "managementRoles", managementRoles); field_to_json(Obj, "maps", maps); field_to_json(Obj, "configurations", configurations); field_to_json(Obj, "boards", boards); } bool Venue::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "parent", parent); field_from_json(Obj, "entity", entity); field_from_json(Obj, "children", children); field_from_json(Obj, "devices", devices); field_from_json(Obj, "topology", topology); field_from_json(Obj, "parent", parent); field_from_json(Obj, "design", design); field_from_json(Obj, "managementPolicy", managementPolicy); field_from_json(Obj, "deviceConfiguration", deviceConfiguration); field_from_json(Obj, "contacts", contacts); field_from_json(Obj, "location", location); field_from_json(Obj, "deviceRules", deviceRules); field_from_json(Obj, "sourceIP", sourceIP); field_from_json(Obj, "variables", variables); field_from_json(Obj, "managementPolicies", managementPolicies); field_from_json(Obj, "managementRoles", managementRoles); field_from_json(Obj, "maps", maps); field_from_json(Obj, "configurations", configurations); field_from_json(Obj, "boards", boards); return true; } catch (...) { } return false; } void Operator::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "managementPolicy", managementPolicy); field_to_json(Obj, "managementRoles", managementRoles); field_to_json(Obj, "deviceRules", deviceRules); field_to_json(Obj, "variables", variables); field_to_json(Obj, "defaultOperator", defaultOperator); field_to_json(Obj, "sourceIP", sourceIP); field_to_json(Obj, "registrationId", registrationId); } bool Operator::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "managementPolicy", managementPolicy); field_from_json(Obj, "managementRoles", managementRoles); field_from_json(Obj, "deviceRules", deviceRules); field_from_json(Obj, "variables", variables); field_from_json(Obj, "defaultOperator", defaultOperator); field_from_json(Obj, "sourceIP", sourceIP); field_from_json(Obj, "registrationId", registrationId); return true; } catch (...) { } return false; } void OperatorList::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "operators", operators); } bool OperatorList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "operators", operators); return true; } catch (...) { } return false; } void ServiceClass::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "operatorId", operatorId); field_to_json(Obj, "managementPolicy", managementPolicy); field_to_json(Obj, "cost", cost); field_to_json(Obj, "currency", currency); field_to_json(Obj, "period", period); field_to_json(Obj, "billingCode", billingCode); field_to_json(Obj, "variables", variables); field_to_json(Obj, "defaultService", defaultService); } bool ServiceClass::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "operatorId", operatorId); field_from_json(Obj, "managementPolicy", managementPolicy); field_from_json(Obj, "cost", cost); field_from_json(Obj, "currency", currency); field_from_json(Obj, "period", period); field_from_json(Obj, "billingCode", billingCode); field_from_json(Obj, "variables", variables); field_from_json(Obj, "defaultService", defaultService); return true; } catch (...) { } return false; } void ServiceClassList::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "serviceClasses", serviceClasses); } bool ServiceClassList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "serviceClasses", serviceClasses); return true; } catch (...) { } return false; } void UserInfoDigest::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "id", id); field_to_json(Obj, "entity", loginId); field_to_json(Obj, "children", userType); } bool UserInfoDigest::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "id", id); field_from_json(Obj, "entity", loginId); field_from_json(Obj, "children", userType); return true; } catch (...) { } return false; } void ManagementRole::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "managementPolicy", managementPolicy); field_to_json(Obj, "users", users); field_to_json(Obj, "entity", entity); field_to_json(Obj, "venue", venue); } bool ManagementRole::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "managementPolicy", managementPolicy); field_from_json(Obj, "users", users); field_from_json(Obj, "entity", entity); field_from_json(Obj, "venue", venue); return true; } catch (...) { } return false; } void Location::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "type", OpenWifi::ProvObjects::to_string(type)); field_to_json(Obj, "buildingName", buildingName); field_to_json(Obj, "addressLines", addressLines); field_to_json(Obj, "city", city); field_to_json(Obj, "state", state); field_to_json(Obj, "postal", postal); field_to_json(Obj, "country", country); field_to_json(Obj, "phones", phones); field_to_json(Obj, "mobiles", mobiles); field_to_json(Obj, "geoCode", geoCode); field_to_json(Obj, "inUse", inUse); field_to_json(Obj, "entity", entity); field_to_json(Obj, "managementPolicy", managementPolicy); } bool Location::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); std::string tmp_type; field_from_json(Obj, "type", tmp_type); type = location_from_string(tmp_type); field_from_json(Obj, "buildingName", buildingName); field_from_json(Obj, "addressLines", addressLines); field_from_json(Obj, "city", city); field_from_json(Obj, "state", state); field_from_json(Obj, "postal", postal); field_from_json(Obj, "country", country); field_from_json(Obj, "phones", phones); field_from_json(Obj, "mobiles", mobiles); field_from_json(Obj, "geoCode", geoCode); field_from_json(Obj, "inUse", inUse); field_from_json(Obj, "entity", entity); field_from_json(Obj, "managementPolicy", managementPolicy); return true; } catch (...) { } return false; } void OperatorLocation::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "type", type); field_to_json(Obj, "buildingName", buildingName); field_to_json(Obj, "addressLines", addressLines); field_to_json(Obj, "city", city); field_to_json(Obj, "state", state); field_to_json(Obj, "postal", postal); field_to_json(Obj, "country", country); field_to_json(Obj, "phones", phones); field_to_json(Obj, "mobiles", mobiles); field_to_json(Obj, "geoCode", geoCode); field_to_json(Obj, "operatorId", operatorId); field_to_json(Obj, "subscriberDeviceId", subscriberDeviceId); field_to_json(Obj, "managementPolicy", managementPolicy); } bool OperatorLocation::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "type", type); field_from_json(Obj, "buildingName", buildingName); field_from_json(Obj, "addressLines", addressLines); field_from_json(Obj, "city", city); field_from_json(Obj, "state", state); field_from_json(Obj, "postal", postal); field_from_json(Obj, "country", country); field_from_json(Obj, "phones", phones); field_from_json(Obj, "mobiles", mobiles); field_from_json(Obj, "geoCode", geoCode); field_from_json(Obj, "operatorId", operatorId); field_from_json(Obj, "subscriberDeviceId", subscriberDeviceId); field_from_json(Obj, "managementPolicy", managementPolicy); return true; } catch (...) { } return false; } void SubLocation::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "type", type); field_to_json(Obj, "buildingName", buildingName); field_to_json(Obj, "addressLines", addressLines); field_to_json(Obj, "city", city); field_to_json(Obj, "state", state); field_to_json(Obj, "postal", postal); field_to_json(Obj, "country", country); field_to_json(Obj, "phones", phones); field_to_json(Obj, "mobiles", mobiles); field_to_json(Obj, "geoCode", geoCode); } bool SubLocation::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "type", type); field_from_json(Obj, "buildingName", buildingName); field_from_json(Obj, "addressLines", addressLines); field_from_json(Obj, "city", city); field_from_json(Obj, "state", state); field_from_json(Obj, "postal", postal); field_from_json(Obj, "country", country); field_from_json(Obj, "phones", phones); field_from_json(Obj, "mobiles", mobiles); field_from_json(Obj, "geoCode", geoCode); return true; } catch (...) { } return false; } void OperatorLocationList::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "locations", locations); } bool OperatorLocationList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "locations", locations); return true; } catch (...) { } return false; } void Contact::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "type", to_string(type)); field_to_json(Obj, "title", title); field_to_json(Obj, "salutation", salutation); field_to_json(Obj, "firstname", firstname); field_to_json(Obj, "lastname", lastname); field_to_json(Obj, "initials", initials); field_to_json(Obj, "visual", visual); field_to_json(Obj, "mobiles", mobiles); field_to_json(Obj, "phones", phones); field_to_json(Obj, "primaryEmail", primaryEmail); field_to_json(Obj, "secondaryEmail", secondaryEmail); field_to_json(Obj, "accessPIN", accessPIN); field_to_json(Obj, "inUse", inUse); field_to_json(Obj, "entity", entity); field_to_json(Obj, "managementPolicy", managementPolicy); } bool Contact::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); std::string tmp_type; field_from_json(Obj, "type", tmp_type); type = contact_from_string(tmp_type); field_from_json(Obj, "title", title); field_from_json(Obj, "salutation", salutation); field_from_json(Obj, "firstname", firstname); field_from_json(Obj, "lastname", lastname); field_from_json(Obj, "initials", initials); field_from_json(Obj, "visual", visual); field_from_json(Obj, "mobiles", mobiles); field_from_json(Obj, "phones", phones); field_from_json(Obj, "primaryEmail", primaryEmail); field_from_json(Obj, "secondaryEmail", secondaryEmail); field_from_json(Obj, "accessPIN", accessPIN); field_from_json(Obj, "inUse", inUse); field_from_json(Obj, "entity", entity); field_from_json(Obj, "managementPolicy", managementPolicy); return true; } catch (...) { } return false; } void OperatorContact::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "type", type); field_to_json(Obj, "title", title); field_to_json(Obj, "salutation", salutation); field_to_json(Obj, "firstname", firstname); field_to_json(Obj, "lastname", lastname); field_to_json(Obj, "initials", initials); field_to_json(Obj, "visual", visual); field_to_json(Obj, "mobiles", mobiles); field_to_json(Obj, "phones", phones); field_to_json(Obj, "primaryEmail", primaryEmail); field_to_json(Obj, "secondaryEmail", secondaryEmail); field_to_json(Obj, "accessPIN", accessPIN); field_to_json(Obj, "operatorId", operatorId); field_to_json(Obj, "subscriberDeviceId", subscriberDeviceId); field_to_json(Obj, "managementPolicy", managementPolicy); } bool OperatorContact::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "type", type); field_from_json(Obj, "title", title); field_from_json(Obj, "salutation", salutation); field_from_json(Obj, "firstname", firstname); field_from_json(Obj, "lastname", lastname); field_from_json(Obj, "initials", initials); field_from_json(Obj, "visual", visual); field_from_json(Obj, "mobiles", mobiles); field_from_json(Obj, "phones", phones); field_from_json(Obj, "primaryEmail", primaryEmail); field_from_json(Obj, "secondaryEmail", secondaryEmail); field_from_json(Obj, "accessPIN", accessPIN); field_from_json(Obj, "operatorId", operatorId); field_from_json(Obj, "subscriberDeviceId", subscriberDeviceId); field_from_json(Obj, "managementPolicy", managementPolicy); return true; } catch (...) { } return false; } void SubContact::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "type", type); field_to_json(Obj, "title", title); field_to_json(Obj, "salutation", salutation); field_to_json(Obj, "firstname", firstname); field_to_json(Obj, "lastname", lastname); field_to_json(Obj, "initials", initials); field_to_json(Obj, "visual", visual); field_to_json(Obj, "mobiles", mobiles); field_to_json(Obj, "phones", phones); field_to_json(Obj, "primaryEmail", primaryEmail); field_to_json(Obj, "secondaryEmail", secondaryEmail); field_to_json(Obj, "accessPIN", accessPIN); } bool SubContact::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "type", type); field_from_json(Obj, "title", title); field_from_json(Obj, "salutation", salutation); field_from_json(Obj, "firstname", firstname); field_from_json(Obj, "lastname", lastname); field_from_json(Obj, "initials", initials); field_from_json(Obj, "visual", visual); field_from_json(Obj, "mobiles", mobiles); field_from_json(Obj, "phones", phones); field_from_json(Obj, "primaryEmail", primaryEmail); field_from_json(Obj, "secondaryEmail", secondaryEmail); field_from_json(Obj, "accessPIN", accessPIN); return true; } catch (...) { } return false; } void OperatorContactList::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "contacts", contacts); } bool OperatorContactList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "contacts", contacts); return true; } catch (...) { } return false; } void InventoryTag::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "serialNumber", serialNumber); field_to_json(Obj, "venue", venue); field_to_json(Obj, "entity", entity); field_to_json(Obj, "subscriber", subscriber); field_to_json(Obj, "deviceType", deviceType); field_to_json(Obj, "qrCode", qrCode); field_to_json(Obj, "geoCode", geoCode); field_to_json(Obj, "location", location); field_to_json(Obj, "contact", contact); field_to_json(Obj, "deviceConfiguration", deviceConfiguration); field_to_json(Obj, "deviceRules", deviceRules); field_to_json(Obj, "managementPolicy", managementPolicy); field_to_json(Obj, "state", state); field_to_json(Obj, "devClass", devClass); field_to_json(Obj, "locale", locale); field_to_json(Obj, "realMacAddress", realMacAddress); field_to_json(Obj, "doNotAllowOverrides", doNotAllowOverrides); } bool InventoryTag::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "serialNumber", serialNumber); field_from_json(Obj, "venue", venue); field_from_json(Obj, "entity", entity); field_from_json(Obj, "subscriber", subscriber); field_from_json(Obj, "deviceType", deviceType); field_from_json(Obj, "qrCode", qrCode); field_from_json(Obj, "geoCode", geoCode); field_from_json(Obj, "location", location); field_from_json(Obj, "contact", contact); field_from_json(Obj, "deviceConfiguration", deviceConfiguration); field_from_json(Obj, "deviceRules", deviceRules); field_from_json(Obj, "managementPolicy", managementPolicy); field_from_json(Obj, "state", state); field_from_json(Obj, "devClass", devClass); field_from_json(Obj, "locale", locale); field_from_json(Obj, "realMacAddress", realMacAddress); field_from_json(Obj, "doNotAllowOverrides", doNotAllowOverrides); return true; } catch (...) { } return false; } void InventoryConfigApplyResult::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "appliedConfiguration", appliedConfiguration); field_to_json(Obj, "warnings", warnings); field_to_json(Obj, "errors", errors); field_to_json(Obj, "errorCode", errorCode); } bool InventoryConfigApplyResult::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "appliedConfiguration", appliedConfiguration); field_from_json(Obj, "warnings", warnings); field_from_json(Obj, "errors", errors); field_from_json(Obj, "errorCode", errorCode); return true; } catch (...) { } return false; } void InventoryTagList::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "taglist", taglist); } bool InventoryTagList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "taglist", taglist); return true; } catch (...) { } return false; }; void DeviceConfigurationElement::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "name", name); field_to_json(Obj, "description", description); field_to_json(Obj, "weight", weight); field_to_json(Obj, "configuration", configuration); } bool DeviceConfigurationElement::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "name", name); field_from_json(Obj, "description", description); field_from_json(Obj, "weight", weight); field_from_json(Obj, "configuration", configuration); return true; } catch (...) { } return false; } void DeviceConfiguration::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "managementPolicy", managementPolicy); field_to_json(Obj, "deviceTypes", deviceTypes); field_to_json(Obj, "subscriberOnly", subscriberOnly); field_to_json(Obj, "entity", entity); field_to_json(Obj, "venue", venue); field_to_json(Obj, "subscriber", subscriber); field_to_json(Obj, "configuration", configuration); field_to_json(Obj, "inUse", inUse); field_to_json(Obj, "variables", variables); field_to_json(Obj, "deviceRules", deviceRules); } bool DeviceConfiguration::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "managementPolicy", managementPolicy); field_from_json(Obj, "deviceTypes", deviceTypes); field_from_json(Obj, "inUse", inUse); field_from_json(Obj, "variables", variables); field_from_json(Obj, "subscriberOnly", subscriberOnly); field_from_json(Obj, "entity", entity); field_from_json(Obj, "venue", venue); field_from_json(Obj, "subscriber", subscriber); field_from_json(Obj, "configuration", configuration); field_from_json(Obj, "deviceRules", deviceRules); return true; } catch (...) { } return false; } void Report::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "snapshot", snapShot); field_to_json(Obj, "devices", tenants); }; void Report::reset() { tenants.clear(); } void ExpandedUseEntry::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "uuid", uuid); field_to_json(Obj, "name", name); field_to_json(Obj, "description", description); } bool ExpandedUseEntry::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "uuid", uuid); field_from_json(Obj, "name", name); field_from_json(Obj, "description", description); return true; } catch (...) { } return false; } void ExpandedUseEntryList::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "type", type); field_to_json(Obj, "entries", entries); } bool ExpandedUseEntryList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "type", type); field_from_json(Obj, "entries", entries); return true; } catch (...) { } return false; } void ExpandedUseEntryMapList::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "entries", entries); } bool ExpandedUseEntryMapList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "entries", entries); return true; } catch (...) { } return false; } void UuidList::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "list", list); } bool UuidList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "list", list); return true; } catch (...) { } return false; } void ObjectACL::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "users", users); field_to_json(Obj, "roles", roles); field_to_json(Obj, "access", access); } bool ObjectACL::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "users", users); field_from_json(Obj, "roles", roles); field_from_json(Obj, "access", access); return true; } catch (...) { } return false; } void ObjectACLList::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "list", list); } bool ObjectACLList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "list", list); return true; } catch (...) { } return false; } void Map::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "data", data); field_to_json(Obj, "entity", entity); field_to_json(Obj, "creator", creator); field_to_json(Obj, "visibility", visibility); field_to_json(Obj, "access", access); field_to_json(Obj, "managementPolicy", managementPolicy); field_to_json(Obj, "venue", venue); } bool Map::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); RESTAPI_utils::field_from_json(Obj, "data", data); RESTAPI_utils::field_from_json(Obj, "entity", entity); RESTAPI_utils::field_from_json(Obj, "creator", creator); RESTAPI_utils::field_from_json(Obj, "visibility", visibility); RESTAPI_utils::field_from_json(Obj, "access", access); RESTAPI_utils::field_from_json(Obj, "managementPolicy", managementPolicy); RESTAPI_utils::field_from_json(Obj, "venue", venue); return true; } catch (...) { } return false; } void SerialNumberList::to_json(Poco::JSON::Object &Obj) const { RESTAPI_utils::field_to_json(Obj, "serialNumbers", serialNumbers); } bool SerialNumberList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { RESTAPI_utils::field_from_json(Obj, "serialNumbers", serialNumbers); return true; } catch (...) { } return false; } void MapList::to_json(Poco::JSON::Object &Obj) const { RESTAPI_utils::field_to_json(Obj, "list", list); } bool MapList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { RESTAPI_utils::field_from_json(Obj, "list", list); return true; } catch (...) { } return false; } void SignupEntry::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "email", email); field_to_json(Obj, "userId", userId); field_to_json(Obj, "macAddress", macAddress); field_to_json(Obj, "serialNumber", serialNumber); field_to_json(Obj, "submitted", submitted); field_to_json(Obj, "completed", completed); field_to_json(Obj, "status", status); field_to_json(Obj, "error", error); field_to_json(Obj, "statusCode", statusCode); field_to_json(Obj, "deviceID", deviceID); field_to_json(Obj, "registrationId", registrationId); field_to_json(Obj, "operatorId", operatorId); } bool SignupEntry::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "email", email); field_from_json(Obj, "userId", userId); field_from_json(Obj, "macAddress", macAddress); field_from_json(Obj, "serialNumber", serialNumber); field_from_json(Obj, "submitted", submitted); field_from_json(Obj, "completed", completed); field_from_json(Obj, "status", status); field_from_json(Obj, "error", error); field_from_json(Obj, "statusCode", statusCode); field_from_json(Obj, "deviceID", deviceID); field_from_json(Obj, "registrationId", registrationId); field_from_json(Obj, "operatorId", operatorId); return true; } catch (...) { } return false; } void Variable::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "type", type); field_to_json(Obj, "weight", weight); field_to_json(Obj, "prefix", prefix); field_to_json(Obj, "value", value); } bool Variable::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "type", type); field_from_json(Obj, "weight", weight); field_from_json(Obj, "prefix", prefix); field_from_json(Obj, "value", value); return true; } catch (...) { } return false; } void VariableList::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "variables", variables); } bool VariableList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "variables", variables); return true; } catch (...) { } return false; } void VariableBlock::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "variables", variables); field_to_json(Obj, "entity", entity); field_to_json(Obj, "venue", venue); field_to_json(Obj, "subscriber", subscriber); field_to_json(Obj, "inventory", inventory); field_to_json(Obj, "configurations", configurations); field_to_json(Obj, "managementPolicy", managementPolicy); } bool VariableBlock::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "variables", variables); field_from_json(Obj, "entity", entity); field_from_json(Obj, "venue", venue); field_from_json(Obj, "subscriber", subscriber); field_from_json(Obj, "inventory", inventory); field_from_json(Obj, "configurations", configurations); field_from_json(Obj, "managementPolicy", managementPolicy); return true; } catch (...) { } return false; } void VariableBlockList::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "variableBlocks", variableBlocks); } bool VariableBlockList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "variableBlocks", variableBlocks); return true; } catch (...) { } return false; } void ConfigurationDetails::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "configuration", configuration); field_to_json(Obj, "rrm", rrm); field_to_json(Obj, "firmwareRCOnly", firmwareRCOnly); field_to_json(Obj, "firmwareUpgrade", firmwareUpgrade); } bool ConfigurationDetails::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "configuration", configuration); field_from_json(Obj, "rrm", rrm); field_from_json(Obj, "firmwareRCOnly", firmwareRCOnly); field_from_json(Obj, "firmwareUpgrade", firmwareUpgrade); return true; } catch (...) { } return false; } void SubscriberDevice::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "serialNumber", serialNumber); field_to_json(Obj, "deviceType", deviceType); field_to_json(Obj, "operatorId", operatorId); field_to_json(Obj, "subscriberId", subscriberId); field_to_json(Obj, "location", location); field_to_json(Obj, "contact", contact); field_to_json(Obj, "managementPolicy", managementPolicy); field_to_json(Obj, "serviceClass", serviceClass); field_to_json(Obj, "qrCode", qrCode); field_to_json(Obj, "geoCode", geoCode); field_to_json(Obj, "deviceRules", deviceRules); field_to_json(Obj, "state", state); field_to_json(Obj, "locale", locale); field_to_json(Obj, "billingCode", billingCode); field_to_json(Obj, "configuration", configuration); field_to_json(Obj, "suspended", suspended); field_to_json(Obj, "realMacAddress", realMacAddress); } bool SubscriberDevice::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "serialNumber", serialNumber); field_from_json(Obj, "deviceType", deviceType); field_from_json(Obj, "operatorId", operatorId); field_from_json(Obj, "subscriberId", subscriberId); field_from_json(Obj, "location", location); field_from_json(Obj, "contact", contact); field_from_json(Obj, "managementPolicy", managementPolicy); field_from_json(Obj, "serviceClass", serviceClass); field_from_json(Obj, "qrCode", qrCode); field_from_json(Obj, "geoCode", geoCode); field_from_json(Obj, "deviceRules", deviceRules); field_from_json(Obj, "state", state); field_from_json(Obj, "locale", locale); field_from_json(Obj, "billingCode", billingCode); field_from_json(Obj, "configuration", configuration); field_from_json(Obj, "suspended", suspended); field_from_json(Obj, "realMacAddress", realMacAddress); return true; } catch (...) { } return false; } void SubscriberDeviceList::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "subscriberDevices", subscriberDevices); } bool SubscriberDeviceList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "subscriberDevices", subscriberDevices); return true; } catch (...) { } return false; } void VenueDeviceList::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "id", id); field_to_json(Obj, "name", name); field_to_json(Obj, "description", description); field_to_json(Obj, "devices", devices); } bool VenueDeviceList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "id", id); field_from_json(Obj, "name", name); field_from_json(Obj, "description", description); field_from_json(Obj, "devices", devices); return true; } catch (...) { } return false; } bool UpdateObjectInfo(const Poco::JSON::Object::Ptr &O, const SecurityObjects::UserInfo &U, ObjectInfo &I) { uint64_t Now = Utils::Now(); if (O->has("name")) I.name = O->get("name").toString(); if (I.name.empty()) return false; if (O->has("description")) I.description = O->get("description").toString(); SecurityObjects::MergeNotes(O, U, I.notes); SecurityObjects::NoteInfoVec N; for (auto &i : I.notes) { if (i.note.empty()) continue; N.push_back( SecurityObjects::NoteInfo{.created = Now, .createdBy = U.email, .note = i.note}); } I.modified = Now; return true; } bool CreateObjectInfo(const Poco::JSON::Object::Ptr &O, const SecurityObjects::UserInfo &U, ObjectInfo &I) { uint64_t Now = Utils::Now(); if (O->has("name")) I.name = O->get("name").toString(); if (I.name.empty()) return false; if (O->has("description")) I.description = O->get("description").toString(); SecurityObjects::NoteInfoVec N; for (auto &i : I.notes) { if (i.note.empty()) continue; N.push_back( SecurityObjects::NoteInfo{.created = Now, .createdBy = U.email, .note = i.note}); } I.notes = N; I.modified = I.created = Now; I.id = MicroServiceCreateUUID(); return true; } bool CreateObjectInfo([[maybe_unused]] const SecurityObjects::UserInfo &U, ObjectInfo &I) { I.modified = I.created = Utils::Now(); I.id = MicroServiceCreateUUID(); return true; } void DeviceRules::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "rcOnly", rcOnly); field_to_json(Obj, "rrm", rrm); field_to_json(Obj, "firmwareUpgrade", firmwareUpgrade); } bool DeviceRules::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "rcOnly", rcOnly); field_from_json(Obj, "rrm", rrm); field_from_json(Obj, "firmwareUpgrade", firmwareUpgrade); return true; } catch (...) { } return false; } void RRMAlgorithmDetails::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "name", name); field_to_json(Obj, "parameters", parameters); } bool RRMAlgorithmDetails::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "name", name); field_from_json(Obj, "parameters", parameters); return true; } catch (...) { } return false; } void RRMDetails::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "vendor", vendor); field_to_json(Obj, "schedule", schedule); field_to_json(Obj, "algorithms", algorithms); } bool RRMDetails::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "vendor", vendor); field_from_json(Obj, "schedule", schedule); field_from_json(Obj, "algorithms", algorithms); return true; } catch (...) { } return false; } void ConfigurationOverride::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "source", source); field_to_json(Obj, "reason", reason); field_to_json(Obj, "parameterName", parameterName); field_to_json(Obj, "parameterType", parameterType); field_to_json(Obj, "parameterValue", parameterValue); field_to_json(Obj, "modified", modified); } bool ConfigurationOverride::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "source", source); field_from_json(Obj, "reason", reason); field_from_json(Obj, "parameterName", parameterName); field_from_json(Obj, "parameterType", parameterType); field_from_json(Obj, "parameterValue", parameterValue); field_from_json(Obj, "modified", modified); return true; } catch (...) { } return false; } void ConfigurationOverrideList::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "serialNumber", serialNumber); field_to_json(Obj, "managementPolicy", managementPolicy); field_to_json(Obj, "overrides", overrides); } bool ConfigurationOverrideList::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "serialNumber", serialNumber); field_from_json(Obj, "managementPolicy", managementPolicy); field_from_json(Obj, "overrides", overrides); return true; } catch (...) { } return false; } void GLBLRAccountInfo::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "privateKey", privateKey); field_to_json(Obj, "country", country); field_to_json(Obj, "province", province); field_to_json(Obj, "city", city); field_to_json(Obj, "organization", organization); field_to_json(Obj, "commonName", commonName); field_to_json(Obj, "CSR", CSR); field_to_json(Obj, "CSRPrivateKey", CSRPrivateKey); field_to_json(Obj, "CSRPublicKey", CSRPublicKey); field_to_json(Obj, "GlobalReachAcctId", GlobalReachAcctId); } bool GLBLRAccountInfo::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "privateKey", privateKey); field_from_json(Obj, "country", country); field_from_json(Obj, "province", province); field_from_json(Obj, "city", city); field_from_json(Obj, "organization", organization); field_from_json(Obj, "commonName", commonName); field_from_json(Obj, "CSR", CSR); field_from_json(Obj, "CSRPrivateKey", CSRPrivateKey); field_from_json(Obj, "CSRPublicKey", CSRPublicKey); field_from_json(Obj, "GlobalReachAcctId", GlobalReachAcctId); return true; } catch (const Poco::Exception &E) { } return false; } void GLBLRCertificateInfo::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "id", id); field_to_json(Obj, "name", name); field_to_json(Obj, "accountId", accountId); field_to_json(Obj, "csr", csr); field_to_json(Obj, "certificate", certificate); field_to_json(Obj, "certificateChain", certificateChain); field_to_json(Obj, "certificateId", certificateId); field_to_json(Obj, "expiresAt", expiresAt); field_to_json(Obj, "created", created); } bool GLBLRCertificateInfo::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "id", id); field_from_json(Obj, "name", name); field_from_json(Obj, "accountId", accountId); field_from_json(Obj, "csr", csr); field_from_json(Obj, "certificate", certificate); field_from_json(Obj, "certificateChain", certificateChain); field_from_json(Obj, "certificateId", certificateId); field_from_json(Obj, "expiresAt", expiresAt); field_from_json(Obj, "created", created); return true; } catch (const Poco::Exception &E) { } return false; } void GooglOrionAccountInfo::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "privateKey", privateKey); field_to_json(Obj, "certificate", certificate); field_to_json(Obj, "cacerts", cacerts); } bool GooglOrionAccountInfo::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "privateKey", privateKey); field_from_json(Obj, "certificate", certificate); field_from_json(Obj, "cacerts", cacerts); return true; } catch (const Poco::Exception &E) { } return false; } void RADIUSServer::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "Hostname", Hostname); field_to_json(Obj, "IP", IP); field_to_json(Obj, "Port", Port); field_to_json(Obj, "Secret", Secret); } bool RADIUSServer::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "Hostname", Hostname); field_from_json(Obj, "IP", IP); field_from_json(Obj, "Port", Port); field_from_json(Obj, "Secret", Secret); return true; } catch (const Poco::Exception &E) { } return false; } void RADIUSEndPointRadiusType::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "Authentication", Authentication); field_to_json(Obj, "Accounting", Accounting); field_to_json(Obj, "CoA", CoA); field_to_json(Obj, "AccountingInterval", AccountingInterval); } bool RADIUSEndPointRadiusType::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "Authentication", Authentication); field_from_json(Obj, "Accounting", Accounting); field_from_json(Obj, "CoA", CoA); field_from_json(Obj, "AccountingInterval", AccountingInterval); return true; } catch (const Poco::Exception &E) { } return false; } void RADIUSEndPointRadsecType::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "Hostname", Hostname); field_to_json(Obj, "IP", IP); field_to_json(Obj, "Port", Port); field_to_json(Obj, "Secret", Secret); field_to_json(Obj, "OpenRoamingType", OpenRoamingType); field_to_json(Obj, "UseOpenRoamingAccount", UseOpenRoamingAccount); field_to_json(Obj, "Weight", Weight); field_to_json(Obj, "Certificate", Certificate); field_to_json(Obj, "PrivateKey", PrivateKey); field_to_json(Obj, "CaCerts", CaCerts); field_to_json(Obj, "AllowSelfSigned", AllowSelfSigned); } bool RADIUSEndPointRadsecType::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "Hostname", Hostname); field_from_json(Obj, "IP", IP); field_from_json(Obj, "Port", Port); field_from_json(Obj, "Secret", Secret); field_from_json(Obj, "OpenRoamingType", OpenRoamingType); field_from_json(Obj, "UseOpenRoamingAccount", UseOpenRoamingAccount); field_from_json(Obj, "Weight", Weight); field_from_json(Obj, "Certificate", Certificate); field_from_json(Obj, "PrivateKey", PrivateKey); field_from_json(Obj, "CaCerts", CaCerts); field_from_json(Obj, "AllowSelfSigned", AllowSelfSigned); return true; } catch (const Poco::Exception &E) { } return false; } void RADIUSEndPoint::to_json(Poco::JSON::Object &Obj) const { info.to_json(Obj); field_to_json(Obj, "Type", Type); field_to_json(Obj, "RadsecServers", RadsecServers); field_to_json(Obj, "RadiusServers", RadiusServers); field_to_json(Obj, "PoolStrategy", PoolStrategy); field_to_json(Obj, "Index", Index); field_to_json(Obj, "UsedBy", UsedBy); field_to_json(Obj, "UseGWProxy", UseGWProxy); field_to_json(Obj, "NasIdentifier", NasIdentifier); field_to_json(Obj, "AccountingInterval", AccountingInterval); } bool RADIUSEndPoint::from_json(const Poco::JSON::Object::Ptr &Obj) { try { info.from_json(Obj); field_from_json(Obj, "Type", Type); field_from_json(Obj, "RadsecServers", RadsecServers); field_from_json(Obj, "RadiusServers", RadiusServers); field_from_json(Obj, "PoolStrategy", PoolStrategy); field_from_json(Obj, "Index", Index); field_from_json(Obj, "UsedBy", UsedBy); field_from_json(Obj, "UseGWProxy", UseGWProxy); field_from_json(Obj, "NasIdentifier", NasIdentifier); field_from_json(Obj, "AccountingInterval", AccountingInterval); return true; } catch (const Poco::Exception &E) { } return false; } void RADIUSEndpointUpdateStatus::to_json(Poco::JSON::Object &Obj) const { field_to_json(Obj, "lastUpdate", lastUpdate); field_to_json(Obj, "lastConfigurationChange", lastConfigurationChange); } bool RADIUSEndpointUpdateStatus::from_json(const Poco::JSON::Object::Ptr &Obj) { try { field_from_json(Obj, "lastUpdate", lastUpdate); field_from_json(Obj, "lastConfigurationChange", lastConfigurationChange); return true; } catch (const Poco::Exception &E) { } return false; } bool RADIUSEndpointUpdateStatus::Read() { Poco::File F(OpenWifi::MicroServiceDataDirectory()+"/RADIUSEndpointUpdateStatus.json"); try { if (F.exists()) { Poco::JSON::Parser P; std::ifstream ifs(F.path(), std::ios_base::in | std::ios_base::binary); auto Obj = P.parse(ifs); return from_json(Obj.extract()); } } catch (...) { } return false; } bool RADIUSEndpointUpdateStatus::Save() { Poco::File F(OpenWifi::MicroServiceDataDirectory()+"/RADIUSEndpointUpdateStatus.json"); try { Poco::JSON::Object Obj; to_json(Obj); std::ofstream O(F.path(), std::ios_base::out | std::ios_base::trunc | std::ios_base::binary); Poco::JSON::Stringifier::stringify(Obj, O); return true; } catch (...) { } return false; } bool RADIUSEndpointUpdateStatus::ChangeConfiguration() { Read(); lastConfigurationChange = Utils::Now(); return Save(); } } // namespace OpenWifi::ProvObjects