mirror of
				https://github.com/Telecominfraproject/wlan-cloud-owprov.git
				synced 2025-10-31 18:48:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			719 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			719 lines
		
	
	
		
			26 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.
 | |
| //
 | |
| 
 | |
| #include "Poco/JSON/Parser.h"
 | |
| #include "Poco/JSON/Stringifier.h"
 | |
| 
 | |
| #include "Daemon.h"
 | |
| #ifdef TIP_GATEWAY_SERVICE
 | |
| #include "AP_WS_Server.h"
 | |
| #include "CapabilitiesCache.h"
 | |
| #include "RADIUSSessionTracker.h"
 | |
| #endif
 | |
| 
 | |
| #include "RESTAPI_GWobjects.h"
 | |
| #include "framework/RESTAPI_utils.h"
 | |
| #include "framework/utils.h"
 | |
| 
 | |
| using OpenWifi::RESTAPI_utils::EmbedDocument;
 | |
| using OpenWifi::RESTAPI_utils::field_from_json;
 | |
| using OpenWifi::RESTAPI_utils::field_to_json;
 | |
| 
 | |
| namespace OpenWifi::GWObjects {
 | |
| 
 | |
| 	void Device::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "serialNumber", SerialNumber);
 | |
| #ifdef TIP_GATEWAY_SERVICE
 | |
| 		field_to_json(Obj, "deviceType", CapabilitiesCache::instance()->GetPlatform(Compatible));
 | |
| 		field_to_json(Obj, "hasRADIUSSessions", RADIUSSessionTracker()->HasSessions(SerialNumber));
 | |
| #endif
 | |
| 		field_to_json(Obj, "macAddress", MACAddress);
 | |
| 		field_to_json(Obj, "manufacturer", Manufacturer);
 | |
| 		field_to_json(Obj, "UUID", UUID);
 | |
| 		EmbedDocument("configuration", Obj, Configuration);
 | |
| 		field_to_json(Obj, "notes", Notes);
 | |
| 		field_to_json(Obj, "createdTimestamp", CreationTimestamp);
 | |
| 		field_to_json(Obj, "lastConfigurationChange", LastConfigurationChange);
 | |
| 		field_to_json(Obj, "lastConfigurationDownload", LastConfigurationDownload);
 | |
| 		field_to_json(Obj, "lastFWUpdate", LastFWUpdate);
 | |
| 		field_to_json(Obj, "owner", Owner);
 | |
| 		field_to_json(Obj, "location", Location);
 | |
| 		field_to_json(Obj, "venue", Venue);
 | |
| 		field_to_json(Obj, "firmware", Firmware);
 | |
| 		field_to_json(Obj, "compatible", Compatible);
 | |
| 		field_to_json(Obj, "fwUpdatePolicy", FWUpdatePolicy);
 | |
| 		field_to_json(Obj, "devicePassword", DevicePassword);
 | |
| 		field_to_json(Obj, "subscriber", subscriber);
 | |
| 		field_to_json(Obj, "entity", entity);
 | |
| 		field_to_json(Obj, "modified", modified);
 | |
| 		field_to_json(Obj, "locale", locale);
 | |
| 		field_to_json(Obj, "restrictedDevice", restrictedDevice);
 | |
| 		field_to_json(Obj, "pendingConfiguration", pendingConfiguration);
 | |
| 		field_to_json(Obj, "pendingConfigurationCmd", pendingConfigurationCmd);
 | |
| 		field_to_json(Obj, "restrictionDetails", restrictionDetails);
 | |
| 		field_to_json(Obj, "pendingUUID", pendingUUID);
 | |
| 		field_to_json(Obj, "simulated", simulated);
 | |
| 		field_to_json(Obj, "lastRecordedContact", lastRecordedContact);
 | |
| 	}
 | |
| 
 | |
| 	void Device::to_json_with_status(Poco::JSON::Object &Obj) const {
 | |
| 		to_json(Obj);
 | |
| 
 | |
| #ifdef TIP_GATEWAY_SERVICE
 | |
| 		ConnectionState ConState;
 | |
| 
 | |
| 		if (AP_WS_Server()->GetState(SerialNumber, ConState)) {
 | |
| 			ConState.to_json(SerialNumber,Obj);
 | |
| 		} else {
 | |
| 			field_to_json(Obj, "ipAddress", "");
 | |
| 			field_to_json(Obj, "txBytes", (uint64_t)0);
 | |
| 			field_to_json(Obj, "rxBytes", (uint64_t)0);
 | |
| 			field_to_json(Obj, "messageCount", (uint64_t)0);
 | |
| 			field_to_json(Obj, "connected", false);
 | |
| 			field_to_json(Obj, "lastContact", "");
 | |
| 			field_to_json(Obj, "verifiedCertificate", "NO_CERTIFICATE");
 | |
| 			field_to_json(Obj, "associations_2G", (uint64_t)0);
 | |
| 			field_to_json(Obj, "associations_5G", (uint64_t)0);
 | |
| 			field_to_json(Obj, "associations_6G", (uint64_t)0);
 | |
| 			field_to_json(Obj, "hasRADIUSSessions", false);
 | |
| 			field_to_json(Obj, "hasGPS", ConState.hasGPS);
 | |
| 			field_to_json(Obj, "sanity", ConState.sanity);
 | |
| 			field_to_json(Obj, "memoryUsed", ConState.memoryUsed);
 | |
| 			field_to_json(Obj, "sanity", ConState.sanity);
 | |
| 			field_to_json(Obj, "load", ConState.load);
 | |
| 			field_to_json(Obj, "temperature", ConState.temperature);
 | |
| 		}
 | |
| #endif
 | |
| 	}
 | |
| 
 | |
| 	bool Device::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | |
| 		try {
 | |
| 			field_from_json(Obj, "serialNumber", SerialNumber);
 | |
| 			field_from_json(Obj, "deviceType", DeviceType);
 | |
| 			field_from_json(Obj, "macAddress", MACAddress);
 | |
| 			field_from_json(Obj, "manufacturer", Manufacturer);
 | |
| 			field_from_json(Obj, "UUID", UUID);
 | |
| 			field_from_json(Obj, "configuration", Configuration);
 | |
| 			field_from_json(Obj, "notes", Notes);
 | |
| 			field_from_json(Obj, "createdTimestamp", CreationTimestamp);
 | |
| 			field_from_json(Obj, "lastConfigurationChange", LastConfigurationChange);
 | |
| 			field_from_json(Obj, "lastConfigurationDownload", LastConfigurationDownload);
 | |
| 			field_from_json(Obj, "lastFWUpdate", LastFWUpdate);
 | |
| 			field_from_json(Obj, "owner", Owner);
 | |
| 			field_from_json(Obj, "location", Location);
 | |
| 			field_from_json(Obj, "venue", Venue);
 | |
| 			field_from_json(Obj, "firmware", Firmware);
 | |
| 			field_from_json(Obj, "compatible", Compatible);
 | |
| 			field_from_json(Obj, "fwUpdatePolicy", FWUpdatePolicy);
 | |
| 			field_from_json(Obj, "devicePassword", DevicePassword);
 | |
| 			field_from_json(Obj, "subscriber", subscriber);
 | |
| 			field_from_json(Obj, "entity", entity);
 | |
| 			field_from_json(Obj, "modified", modified);
 | |
| 			field_from_json(Obj, "locale", locale);
 | |
| 			field_from_json(Obj, "restrictedDevice", restrictedDevice);
 | |
| 			field_from_json(Obj, "pendingConfiguration", pendingConfiguration);
 | |
| 			field_from_json(Obj, "pendingConfigurationCmd", pendingConfigurationCmd);
 | |
| 			field_from_json(Obj, "restrictionDetails", restrictionDetails);
 | |
| 			field_from_json(Obj, "pendingUUID", pendingUUID);
 | |
| 			field_from_json(Obj, "simulated", simulated);
 | |
| 			field_from_json(Obj, "lastRecordedContact", lastRecordedContact);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	void Device::Print() const {
 | |
| 		std::cout << "Device: " << SerialNumber << " DeviceType:" << DeviceType
 | |
| 				  << " MACAddress:" << MACAddress << " Manufacturer:" << Manufacturer << " "
 | |
| 				  << Configuration << std::endl;
 | |
| 	}
 | |
| 
 | |
| 	void Statistics::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		EmbedDocument("data", Obj, Data);
 | |
| 		field_to_json(Obj, "UUID", UUID);
 | |
| 		field_to_json(Obj, "recorded", Recorded);
 | |
| 	}
 | |
| 
 | |
| 	void Capabilities::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		EmbedDocument("capabilities", Obj, Capabilities);
 | |
| 		field_to_json(Obj, "firstUpdate", FirstUpdate);
 | |
| 		field_to_json(Obj, "lastUpdate", LastUpdate);
 | |
| 	}
 | |
| 
 | |
| 	void DeviceLog::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		EmbedDocument("data", Obj, Data);
 | |
| 		field_to_json(Obj, "log", Log);
 | |
| 		field_to_json(Obj, "severity", Severity);
 | |
| 		field_to_json(Obj, "recorded", Recorded);
 | |
| 		field_to_json(Obj, "logType", LogType);
 | |
| 		field_to_json(Obj, "UUID", UUID);
 | |
| 	}
 | |
| 
 | |
| 	void HealthCheck::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		EmbedDocument("values", Obj, Data);
 | |
| 		field_to_json(Obj, "UUID", UUID);
 | |
| 		field_to_json(Obj, "sanity", Sanity);
 | |
| 		field_to_json(Obj, "recorded", Recorded);
 | |
| 	}
 | |
| 
 | |
| 	void DefaultConfiguration::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		EmbedDocument("configuration", Obj, Configuration);
 | |
| 		field_to_json(Obj, "name", Name);
 | |
| 		field_to_json(Obj, "modelIds", Models);
 | |
| 		field_to_json(Obj, "description", Description);
 | |
| 		field_to_json(Obj, "created", Created);
 | |
| 		field_to_json(Obj, "lastModified", LastModified);
 | |
| 	}
 | |
| 
 | |
| 	void DefaultFirmware::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "deviceType", deviceType);
 | |
| 		field_to_json(Obj, "description", Description);
 | |
| 		field_to_json(Obj, "uri", uri);
 | |
| 		field_to_json(Obj, "revision", revision);
 | |
| 		field_to_json(Obj, "imageCreationDate", imageCreationDate);
 | |
| 		field_to_json(Obj, "created", Created);
 | |
| 		field_to_json(Obj, "lastModified", LastModified);
 | |
| 	}
 | |
| 
 | |
| 	bool DefaultFirmware::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | |
| 		try {
 | |
| 			field_from_json(Obj, "deviceType", deviceType);
 | |
| 			field_from_json(Obj, "description", Description);
 | |
| 			field_from_json(Obj, "uri", uri);
 | |
| 			field_from_json(Obj, "revision", revision);
 | |
| 			field_from_json(Obj, "imageCreationDate", imageCreationDate);
 | |
| 			field_from_json(Obj, "created", Created);
 | |
| 			field_from_json(Obj, "lastModified", LastModified);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	void CommandDetails::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		EmbedDocument("details", Obj, Details);
 | |
| 		EmbedDocument("results", Obj, Results);
 | |
| 		field_to_json(Obj, "UUID", UUID);
 | |
| 		field_to_json(Obj, "serialNumber", SerialNumber);
 | |
| 		field_to_json(Obj, "command", Command);
 | |
| 		field_to_json(Obj, "errorText", ErrorText);
 | |
| 		field_to_json(Obj, "submittedBy", SubmittedBy);
 | |
| 		field_to_json(Obj, "status", Status);
 | |
| 		field_to_json(Obj, "submitted", Submitted);
 | |
| 		field_to_json(Obj, "executed", Executed);
 | |
| 		field_to_json(Obj, "completed", Completed);
 | |
| 		field_to_json(Obj, "when", RunAt);
 | |
| 		field_to_json(Obj, "errorCode", ErrorCode);
 | |
| 		field_to_json(Obj, "custom", Custom);
 | |
| 		field_to_json(Obj, "waitingForFile", WaitingForFile);
 | |
| 		field_to_json(Obj, "attachFile", AttachDate);
 | |
| 		field_to_json(Obj, "executionTime", executionTime);
 | |
| 		field_to_json(Obj, "lastTry", lastTry);
 | |
| 		field_to_json(Obj, "deferred", deferred);
 | |
| 	}
 | |
| 
 | |
| 	bool DefaultConfiguration::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | |
| 		try {
 | |
| 			field_from_json(Obj, "name", Name);
 | |
| 			field_from_json(Obj, "configuration", Configuration);
 | |
| 			field_from_json(Obj, "modelIds", Models);
 | |
| 			field_from_json(Obj, "description", Description);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	void BlackListedDevice::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "serialNumber", serialNumber);
 | |
| 		field_to_json(Obj, "author", author);
 | |
| 		field_to_json(Obj, "reason", reason);
 | |
| 		field_to_json(Obj, "created", created);
 | |
| 	}
 | |
| 
 | |
| 	bool BlackListedDevice::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | |
| 		try {
 | |
| 			field_from_json(Obj, "serialNumber", serialNumber);
 | |
| 			field_from_json(Obj, "author", author);
 | |
| 			field_from_json(Obj, "reason", reason);
 | |
| 			field_from_json(Obj, "created", created);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	void ConnectionState::to_json([[maybe_unused]] const std::string &SerialNumber, Poco::JSON::Object &Obj)  {
 | |
| 		field_to_json(Obj, "ipAddress", Address);
 | |
| 		field_to_json(Obj, "txBytes", TX);
 | |
| 		field_to_json(Obj, "rxBytes", RX);
 | |
| 		field_to_json(Obj, "messageCount", MessageCount);
 | |
| 		field_to_json(Obj, "UUID", UUID);
 | |
| 		field_to_json(Obj, "connected", Connected);
 | |
| 		field_to_json(Obj, "firmware", Firmware);
 | |
| 		field_to_json(Obj, "lastContact", LastContact);
 | |
| 		field_to_json(Obj, "associations_2G", Associations_2G);
 | |
| 		field_to_json(Obj, "associations_5G", Associations_5G);
 | |
| 		field_to_json(Obj, "associations_6G", Associations_6G);
 | |
| 		field_to_json(Obj, "webSocketClients", webSocketClients);
 | |
| 		field_to_json(Obj, "websocketPackets", websocketPackets);
 | |
| 		field_to_json(Obj, "kafkaClients", kafkaClients);
 | |
| 		field_to_json(Obj, "kafkaPackets", kafkaPackets);
 | |
| 		field_to_json(Obj, "locale", locale);
 | |
| 		field_to_json(Obj, "started", started);
 | |
| 		field_to_json(Obj, "sessionId", sessionId);
 | |
| 		field_to_json(Obj, "connectionCompletionTime", connectionCompletionTime);
 | |
| 		field_to_json(Obj, "totalConnectionTime", Utils::Now() - started);
 | |
| 		field_to_json(Obj, "certificateExpiryDate", certificateExpiryDate);
 | |
| 		field_to_json(Obj, "connectReason", connectReason);
 | |
| 
 | |
| #ifdef TIP_GATEWAY_SERVICE
 | |
| 		hasRADIUSSessions = RADIUSSessionTracker()->HasSessions(SerialNumber);
 | |
| 		AP_WS_Server()->ExtendedAttributes(SerialNumber, hasGPS, sanity,
 | |
| 										   memoryUsed,
 | |
| 										   load,
 | |
| 										   temperature);
 | |
| #endif
 | |
| 		field_to_json(Obj, "hasRADIUSSessions", hasRADIUSSessions );
 | |
| 		field_to_json(Obj, "hasGPS", hasGPS);
 | |
| 		field_to_json(Obj, "sanity", sanity);
 | |
| 		field_to_json(Obj, "memoryUsed", memoryUsed);
 | |
| 		field_to_json(Obj, "sanity", sanity);
 | |
| 		field_to_json(Obj, "load", load);
 | |
| 		field_to_json(Obj, "temperature", temperature);
 | |
| 
 | |
| 		switch (VerifiedCertificate) {
 | |
| 		case NO_CERTIFICATE:
 | |
| 			field_to_json(Obj, "verifiedCertificate", "NO_CERTIFICATE");
 | |
| 			break;
 | |
| 		case VALID_CERTIFICATE:
 | |
| 			field_to_json(Obj, "verifiedCertificate", "VALID_CERTIFICATE");
 | |
| 			break;
 | |
| 		case MISMATCH_SERIAL:
 | |
| 			field_to_json(Obj, "verifiedCertificate", "MISMATCH_SERIAL");
 | |
| 			break;
 | |
| 		case VERIFIED:
 | |
| 			field_to_json(Obj, "verifiedCertificate", "VERIFIED");
 | |
| 			break;
 | |
| 		case SIMULATED:
 | |
| 			field_to_json(Obj, "verifiedCertificate", "SIMULATED");
 | |
| 			break;
 | |
| 		default:
 | |
| 			field_to_json(Obj, "verifiedCertificate", "NO_CERTIFICATE");
 | |
| 			break;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	void DeviceConnectionStatistics::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "averageConnectionTime", averageConnectionTime);
 | |
| 		field_to_json(Obj, "connectedDevices", connectedDevices);
 | |
| 		field_to_json(Obj, "connectingDevices", connectingDevices);
 | |
| 	}
 | |
| 
 | |
| 	bool DeviceConnectionStatistics::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | |
| 		try {
 | |
| 			field_from_json(Obj, "averageConnectionTime", averageConnectionTime);
 | |
| 			field_from_json(Obj, "connectedDevices", connectedDevices);
 | |
| 			field_from_json(Obj, "connectingDevices", connectingDevices);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	void RttySessionDetails::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "serialNumber", SerialNumber);
 | |
| 		field_to_json(Obj, "server", Server);
 | |
| 		field_to_json(Obj, "port", Port);
 | |
| 		field_to_json(Obj, "token", Token);
 | |
| 		field_to_json(Obj, "timeout", TimeOut);
 | |
| 		field_to_json(Obj, "connectionId", ConnectionId);
 | |
| 		field_to_json(Obj, "commandUUID", CommandUUID);
 | |
| 		field_to_json(Obj, "started", Started);
 | |
| 		field_to_json(Obj, "viewport", ViewPort);
 | |
| 		field_to_json(Obj, "password", DevicePassword);
 | |
| 	}
 | |
| 
 | |
| 	void Dashboard::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "commands", commands);
 | |
| 		field_to_json(Obj, "upTimes", upTimes);
 | |
| 		field_to_json(Obj, "memoryUsed", memoryUsed);
 | |
| 		field_to_json(Obj, "load1", load1);
 | |
| 		field_to_json(Obj, "load5", load5);
 | |
| 		field_to_json(Obj, "load15", load15);
 | |
| 		field_to_json(Obj, "vendors", vendors);
 | |
| 		field_to_json(Obj, "status", status);
 | |
| 		field_to_json(Obj, "deviceType", deviceType);
 | |
| 		field_to_json(Obj, "healths", healths);
 | |
| 		field_to_json(Obj, "certificates", certificates);
 | |
| 		field_to_json(Obj, "lastContact", lastContact);
 | |
| 		field_to_json(Obj, "associations", associations);
 | |
| 		field_to_json(Obj, "snapshot", snapshot);
 | |
| 		field_to_json(Obj, "numberOfDevices", numberOfDevices);
 | |
| 	}
 | |
| 
 | |
| 	void Dashboard::reset() {
 | |
| 		commands.clear();
 | |
| 		upTimes.clear();
 | |
| 		memoryUsed.clear();
 | |
| 		load1.clear();
 | |
| 		load5.clear();
 | |
| 		load15.clear();
 | |
| 		vendors.clear();
 | |
| 		status.clear();
 | |
| 		deviceType.clear();
 | |
| 		healths.clear();
 | |
| 		certificates.clear();
 | |
| 		lastContact.clear();
 | |
| 		associations.clear();
 | |
| 		numberOfDevices = 0;
 | |
| 		snapshot = Utils::Now();
 | |
| 	}
 | |
| 
 | |
| 	void CapabilitiesModel::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "deviceType", deviceType);
 | |
| 		field_to_json(Obj, "capabilities", capabilities);
 | |
| 	};
 | |
| 
 | |
| 	void ScriptRequest::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "serialNumber", serialNumber);
 | |
| 		field_to_json(Obj, "timeout", timeout);
 | |
| 		field_to_json(Obj, "type", type);
 | |
| 		field_to_json(Obj, "scriptId", scriptId);
 | |
| 		field_to_json(Obj, "script", script);
 | |
| 		field_to_json(Obj, "when", when);
 | |
| 		field_to_json(Obj, "signature", signature);
 | |
| 		field_to_json(Obj, "deferred", deferred);
 | |
| 		field_to_json(Obj, "uri", uri);
 | |
| 	}
 | |
| 
 | |
| 	bool ScriptRequest::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | |
| 		try {
 | |
| 			field_from_json(Obj, "serialNumber", serialNumber);
 | |
| 			field_from_json(Obj, "timeout", timeout);
 | |
| 			field_from_json(Obj, "type", type);
 | |
| 			field_from_json(Obj, "script", script);
 | |
| 			field_from_json(Obj, "scriptId", scriptId);
 | |
| 			field_from_json(Obj, "when", when);
 | |
| 			field_from_json(Obj, "signature", signature);
 | |
| 			field_from_json(Obj, "deferred", deferred);
 | |
| 			field_from_json(Obj, "uri", uri);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	void RadiusProxyPoolList::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "pools", pools);
 | |
| 	}
 | |
| 
 | |
| 	bool RadiusProxyPoolList::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | |
| 		try {
 | |
| 			field_from_json(Obj, "pools", pools);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	void RadiusProxyPool::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "name", name);
 | |
| 		field_to_json(Obj, "description", description);
 | |
| 		field_to_json(Obj, "authConfig", authConfig);
 | |
| 		field_to_json(Obj, "acctConfig", acctConfig);
 | |
| 		field_to_json(Obj, "coaConfig", coaConfig);
 | |
| 		field_to_json(Obj, "useByDefault", useByDefault);
 | |
| 		field_to_json(Obj, "radsecKeepAlive", radsecKeepAlive);
 | |
| 		field_to_json(Obj, "poolProxyIp", poolProxyIp);
 | |
| 		field_to_json(Obj, "radsecPoolType", radsecPoolType);
 | |
| 		field_to_json(Obj, "enabled", enabled);
 | |
| 	}
 | |
| 
 | |
| 	bool RadiusProxyPool::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, "authConfig", authConfig);
 | |
| 			field_from_json(Obj, "acctConfig", acctConfig);
 | |
| 			field_from_json(Obj, "coaConfig", coaConfig);
 | |
| 			field_from_json(Obj, "useByDefault", useByDefault);
 | |
| 			field_from_json(Obj, "radsecKeepAlive", radsecKeepAlive);
 | |
| 			field_from_json(Obj, "poolProxyIp", poolProxyIp);
 | |
| 			field_from_json(Obj, "radsecPoolType", radsecPoolType);
 | |
| 			field_from_json(Obj, "enabled", enabled);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	void RadiusProxyServerConfig::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "strategy", strategy);
 | |
| 		field_to_json(Obj, "monitor", monitor);
 | |
| 		field_to_json(Obj, "monitorMethod", monitorMethod);
 | |
| 		field_to_json(Obj, "methodParameters", methodParameters);
 | |
| 		field_to_json(Obj, "servers", servers);
 | |
| 	}
 | |
| 
 | |
| 	bool RadiusProxyServerConfig::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | |
| 		try {
 | |
| 			field_from_json(Obj, "strategy", strategy);
 | |
| 			field_from_json(Obj, "monitor", monitor);
 | |
| 			field_from_json(Obj, "monitorMethod", monitorMethod);
 | |
| 			field_from_json(Obj, "methodParameters", methodParameters);
 | |
| 			field_from_json(Obj, "servers", servers);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	void RadiusProxyServerEntry::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "name", name);
 | |
| 		field_to_json(Obj, "ip", ip);
 | |
| 		field_to_json(Obj, "port", port);
 | |
| 		field_to_json(Obj, "weight", weight);
 | |
| 		field_to_json(Obj, "secret", secret);
 | |
| 		field_to_json(Obj, "certificate", certificate);
 | |
| 		field_to_json(Obj, "radsec", radsec);
 | |
| 		field_to_json(Obj, "allowSelfSigned", allowSelfSigned);
 | |
| 		field_to_json(Obj, "radsecPort", radsecPort);
 | |
| 		field_to_json(Obj, "radsecSecret", radsecSecret);
 | |
| 		field_to_json(Obj, "radsecCacerts", radsecCacerts);
 | |
| 		field_to_json(Obj, "radsecCert", radsecCert);
 | |
| 		field_to_json(Obj, "radsecKey", radsecKey);
 | |
| 		field_to_json(Obj, "radsecRealms", radsecRealms);
 | |
| 		field_to_json(Obj, "ignore", ignore);
 | |
| 	}
 | |
| 
 | |
| 	bool RadiusProxyServerEntry::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | |
| 		try {
 | |
| 			field_from_json(Obj, "name", name);
 | |
| 			field_from_json(Obj, "ip", ip);
 | |
| 			field_from_json(Obj, "port", port);
 | |
| 			field_from_json(Obj, "weight", weight);
 | |
| 			field_from_json(Obj, "secret", secret);
 | |
| 			field_from_json(Obj, "certificate", certificate);
 | |
| 			field_from_json(Obj, "radsec", radsec);
 | |
| 			field_from_json(Obj, "allowSelfSigned", allowSelfSigned);
 | |
| 			field_from_json(Obj, "radsecSecret", radsecSecret);
 | |
| 			field_from_json(Obj, "radsecPort", radsecPort);
 | |
| 			field_from_json(Obj, "radsecCacerts", radsecCacerts);
 | |
| 			field_from_json(Obj, "radsecCert", radsecCert);
 | |
| 			field_from_json(Obj, "radsecKey", radsecKey);
 | |
| 			field_from_json(Obj, "radsecRealms", radsecRealms);
 | |
| 			field_from_json(Obj, "ignore", ignore);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	void ScriptEntry::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, "uri", uri);
 | |
| 		field_to_json(Obj, "content", content);
 | |
| 		field_to_json(Obj, "version", version);
 | |
| 		field_to_json(Obj, "type", type);
 | |
| 		field_to_json(Obj, "created", created);
 | |
| 		field_to_json(Obj, "modified", modified);
 | |
| 		field_to_json(Obj, "author", author);
 | |
| 		field_to_json(Obj, "restricted", restricted);
 | |
| 		field_to_json(Obj, "deferred", deferred);
 | |
| 		field_to_json(Obj, "timeout", timeout);
 | |
| 		field_to_json(Obj, "defaultUploadURI", defaultUploadURI);
 | |
| 	}
 | |
| 
 | |
| 	bool ScriptEntry::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, "uri", uri);
 | |
| 			field_from_json(Obj, "content", content);
 | |
| 			field_from_json(Obj, "version", version);
 | |
| 			field_from_json(Obj, "type", type);
 | |
| 			field_from_json(Obj, "created", created);
 | |
| 			field_from_json(Obj, "modified", modified);
 | |
| 			field_from_json(Obj, "author", author);
 | |
| 			field_from_json(Obj, "restricted", restricted);
 | |
| 			field_from_json(Obj, "deferred", deferred);
 | |
| 			field_from_json(Obj, "timeout", timeout);
 | |
| 			field_from_json(Obj, "defaultUploadURI", defaultUploadURI);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	void ScriptEntryList::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "scripts", scripts);
 | |
| 	}
 | |
| 
 | |
| 	bool ScriptEntryList::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | |
| 		try {
 | |
| 			field_from_json(Obj, "scripts", scripts);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	void RangeOptions::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "NO_IR", NO_IR);
 | |
| 		field_to_json(Obj, "AUTO_BW", AUTO_BW);
 | |
| 		field_to_json(Obj, "DFS", DFS);
 | |
| 		field_to_json(Obj, "NO_OUTDOOR", NO_OUTDOOR);
 | |
| 		field_to_json(Obj, "wmmrule_ETSI", wmmrule_ETSI);
 | |
| 		field_to_json(Obj, "NO_OFDM", NO_OFDM);
 | |
| 	}
 | |
| 
 | |
| 	void FrequencyRange::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "from", from);
 | |
| 		field_to_json(Obj, "to", to);
 | |
| 		field_to_json(Obj, "channelWidth", channelWidth);
 | |
| 		field_to_json(Obj, "powerDb", powerDb);
 | |
| 		field_to_json(Obj, "options", options);
 | |
| 	}
 | |
| 
 | |
| 	void RegulatoryCountryInfo::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "country", country);
 | |
| 		field_to_json(Obj, "domain", domain);
 | |
| 		field_to_json(Obj, "ranges", ranges);
 | |
| 	}
 | |
| 
 | |
| 	void DeviceRestrictionsKeyInfo::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "vendor", vendor);
 | |
| 		field_to_json(Obj, "algo", algo);
 | |
| 	}
 | |
| 
 | |
| 	bool DeviceRestrictionsKeyInfo::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | |
| 		try {
 | |
| 			field_from_json(Obj, "vendor", vendor);
 | |
| 			field_from_json(Obj, "algo", algo);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	void DeviceRestrictions::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "dfs", dfs);
 | |
| 		field_to_json(Obj, "ssh", ssh);
 | |
| 		field_to_json(Obj, "rtty", rtty);
 | |
| 		field_to_json(Obj, "tty", tty);
 | |
| 		field_to_json(Obj, "developer", developer);
 | |
| 		field_to_json(Obj, "upgrade", upgrade);
 | |
| 		field_to_json(Obj, "commands", commands);
 | |
| 		field_to_json(Obj, "country", country);
 | |
| 		field_to_json(Obj, "key_info", key_info);
 | |
| 	}
 | |
| 
 | |
| 	bool DeviceRestrictions::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | |
| 		try {
 | |
| 			field_from_json(Obj, "dfs", dfs);
 | |
| 			field_from_json(Obj, "ssh", ssh);
 | |
| 			field_from_json(Obj, "rtty", rtty);
 | |
| 			field_from_json(Obj, "tty", tty);
 | |
| 			field_from_json(Obj, "developer", developer);
 | |
| 			field_from_json(Obj, "upgrade", upgrade);
 | |
| 			field_from_json(Obj, "commands", commands);
 | |
| 			field_from_json(Obj, "country", country);
 | |
| 			field_from_json(Obj, "key_info", key_info);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	bool DeviceRestrictionsKeyInfo::operator!=(
 | |
| 		const OpenWifi::GWObjects::DeviceRestrictionsKeyInfo &T) const {
 | |
| 		return (T.algo != algo) || (T.vendor != vendor);
 | |
| 	}
 | |
| 
 | |
| 	bool DeviceRestrictions::operator!=(const OpenWifi::GWObjects::DeviceRestrictions &T) const {
 | |
| 		return ((T.dfs != dfs) || (T.rtty != rtty) || (T.upgrade != upgrade) ||
 | |
| 				(T.commands != commands) || (T.developer != developer) || (T.ssh != ssh) ||
 | |
| 				(T.key_info != key_info) || (T.country != country));
 | |
| 	}
 | |
| 
 | |
| 	void RADIUSSession::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "started", started);
 | |
| 		field_to_json(Obj, "lastTransaction", lastTransaction);
 | |
| 		field_to_json(Obj, "destination", destination);
 | |
| 		field_to_json(Obj, "serialNumber", serialNumber);
 | |
| 		field_to_json(Obj, "userName", userName);
 | |
| 		field_to_json(Obj, "accountingSessionId", accountingSessionId);
 | |
| 		field_to_json(Obj, "accountingMultiSessionId", accountingMultiSessionId);
 | |
| 		field_to_json(Obj, "inputPackets", inputPackets);
 | |
| 		field_to_json(Obj, "outputPackets", outputPackets);
 | |
| 		field_to_json(Obj, "inputOctets", inputOctets);
 | |
| 		field_to_json(Obj, "outputOctets", outputOctets);
 | |
| 		field_to_json(Obj, "inputGigaWords", inputGigaWords);
 | |
| 		field_to_json(Obj, "outputGigaWords", outputGigaWords);
 | |
| 		field_to_json(Obj, "sessionTime", sessionTime);
 | |
| 		field_to_json(Obj, "callingStationId", callingStationId);
 | |
| 		field_to_json(Obj, "chargeableUserIdentity", chargeableUserIdentity);
 | |
| 		field_to_json(Obj, "interface", interface);
 | |
| 		field_to_json(Obj, "secret", secret);
 | |
| 		field_to_json(Obj, "nasId", nasId);
 | |
| 		field_to_json(Obj, "calledStationId", calledStationId);
 | |
| 	}
 | |
| 
 | |
| 	void RADIUSSessionList::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "sessions", sessions);
 | |
| 	}
 | |
| 
 | |
| 	void RadiusCoADMParameters::to_json(Poco::JSON::Object &Obj) const {
 | |
| 		field_to_json(Obj, "accountingSessionId", accountingSessionId);
 | |
| 		field_to_json(Obj, "accountingMultiSessionId", accountingMultiSessionId);
 | |
| 		field_to_json(Obj, "callingStationId", callingStationId);
 | |
| 		field_to_json(Obj, "chargeableUserIdentity", chargeableUserIdentity);
 | |
| 		field_to_json(Obj, "userName", userName);
 | |
| 	}
 | |
| 
 | |
| 	bool RadiusCoADMParameters::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | |
| 		try {
 | |
| 			field_from_json(Obj, "accountingSessionId", accountingSessionId);
 | |
| 			field_from_json(Obj, "accountingMultiSessionId", accountingMultiSessionId);
 | |
| 			field_from_json(Obj, "callingStationId", callingStationId);
 | |
| 			field_from_json(Obj, "chargeableUserIdentity", chargeableUserIdentity);
 | |
| 			field_from_json(Obj, "userName", userName);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	bool DeviceTransferRequest::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | |
| 		try {
 | |
| 			field_from_json(Obj, "serialNumber", serialNumber);
 | |
| 			field_from_json(Obj, "server", server);
 | |
| 			field_from_json(Obj, "port", port);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	bool DeviceCertificateUpdateRequest::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | |
| 		try {
 | |
| 			field_from_json(Obj, "serialNumber", serialNumber);
 | |
| 			field_from_json(Obj, "encodedCertificate", encodedCertificate);
 | |
| 			return true;
 | |
| 		} catch (const Poco::Exception &E) {
 | |
| 		}
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| } // namespace OpenWifi::GWObjects
 | 
