diff options
Diffstat (limited to 'src/components/policy/policy_external/src/cache_manager.cc')
-rw-r--r-- | src/components/policy/policy_external/src/cache_manager.cc | 228 |
1 files changed, 208 insertions, 20 deletions
diff --git a/src/components/policy/policy_external/src/cache_manager.cc b/src/components/policy/policy_external/src/cache_manager.cc index c2c2e91257..bd38f7bf8f 100644 --- a/src/components/policy/policy_external/src/cache_manager.cc +++ b/src/components/policy/policy_external/src/cache_manager.cc @@ -33,27 +33,27 @@ #include "policy/cache_manager.h" #include <algorithm> -#include <functional> -#include <ctime> #include <cmath> -#include <utility> +#include <ctime> +#include <functional> #include <string> +#include <utility> #include <vector> -#include "utils/file_system.h" -#include "utils/helpers.h" -#include "json/reader.h" #include "json/features.h" +#include "json/reader.h" #include "json/writer.h" -#include "utils/logger.h" +#include "policy/policy_helper.h" +#include "policy/policy_table/enums.h" +#include "policy/sql_pt_ext_representation.h" +#include "rpc_base/rpc_base.h" #include "utils/date_time.h" +#include "utils/file_system.h" #include "utils/gen_hash.h" +#include "utils/helpers.h" +#include "utils/logger.h" #include "utils/threads/thread.h" #include "utils/threads/thread_delegate.h" -#include "rpc_base/rpc_base.h" -#include "policy/policy_table/enums.h" -#include "policy/policy_helper.h" -#include "policy/sql_pt_ext_representation.h" namespace policy_table = rpc::policy_table_interface_base; @@ -904,9 +904,9 @@ bool CacheManager::HasDeviceSpecifiedConsent(const std::string& device_id, return false; } const std::string consent = is_allowed ? "allowed" : "disallowed"; - LOG4CXX_INFO(logger_, - "DeviceGetDeviceGroupsFromPolicies is already " << consent - << "."); + LOG4CXX_INFO( + logger_, + "DeviceGetDeviceGroupsFromPolicies is already " << consent << "."); return true; } @@ -1389,6 +1389,178 @@ const policy::VehicleInfo CacheManager::GetVehicleInfo() const { return vehicle_info; } +void CacheManager::GetEnabledCloudApps( + std::vector<std::string>& enabled_apps) const { +#if !defined(CLOUD_APP_WEBSOCKET_TRANSPORT_SUPPORT) + enabled_apps.clear(); + return; +#else + const policy_table::ApplicationPolicies& policies = + pt_->policy_table.app_policies_section.apps; + for (policy_table::ApplicationPolicies::const_iterator it = policies.begin(); + it != policies.end(); + ++it) { + auto app_policy = (*it).second; + if (app_policy.enabled.is_initialized() && *app_policy.enabled) { + enabled_apps.push_back((*it).first); + } + } +#endif // CLOUD_APP_WEBSOCKET_TRANSPORT_SUPPORT +} + +bool CacheManager::GetCloudAppParameters( + const std::string& policy_app_id, + bool& enabled, + std::string& endpoint, + std::string& certificate, + std::string& auth_token, + std::string& cloud_transport_type, + std::string& hybrid_app_preference) const { + const policy_table::ApplicationPolicies& policies = + pt_->policy_table.app_policies_section.apps; + policy_table::ApplicationPolicies::const_iterator policy_iter = + policies.find(policy_app_id); + if (policies.end() != policy_iter) { + auto app_policy = (*policy_iter).second; + endpoint = app_policy.endpoint.is_initialized() ? *app_policy.endpoint + : std::string(); + auth_token = app_policy.auth_token.is_initialized() ? *app_policy.auth_token + : std::string(); + cloud_transport_type = app_policy.cloud_transport_type.is_initialized() + ? *app_policy.cloud_transport_type + : std::string(); + certificate = app_policy.certificate.is_initialized() + ? *app_policy.certificate + : std::string(); + hybrid_app_preference = + app_policy.hybrid_app_preference.is_initialized() + ? EnumToJsonString(*app_policy.hybrid_app_preference) + : std::string(); + enabled = app_policy.enabled.is_initialized() && *app_policy.enabled; + return true; + } + return false; +} + +void CacheManager::InitCloudApp(const std::string& policy_app_id) { + CACHE_MANAGER_CHECK_VOID(); + sync_primitives::AutoLock auto_lock(cache_lock_); + + policy_table::ApplicationPolicies& policies = + pt_->policy_table.app_policies_section.apps; + policy_table::ApplicationPolicies::const_iterator default_iter = + policies.find(kDefaultId); + policy_table::ApplicationPolicies::const_iterator app_iter = + policies.find(policy_app_id); + if (default_iter != policies.end()) { + if (app_iter == policies.end()) { + policies[policy_app_id] = policies[kDefaultId]; + } + } + // Add cloud app specific policies + Backup(); +} + +void CacheManager::SetCloudAppEnabled(const std::string& policy_app_id, + const bool enabled) { + policy_table::ApplicationPolicies& policies = + pt_->policy_table.app_policies_section.apps; + policy_table::ApplicationPolicies::iterator policy_iter = + policies.find(policy_app_id); + if (policies.end() != policy_iter) { + *(*policy_iter).second.enabled = enabled; + } +} + +void CacheManager::SetAppAuthToken(const std::string& policy_app_id, + const std::string& auth_token) { + policy_table::ApplicationPolicies& policies = + pt_->policy_table.app_policies_section.apps; + policy_table::ApplicationPolicies::iterator policy_iter = + policies.find(policy_app_id); + if (policies.end() != policy_iter) { + *(*policy_iter).second.auth_token = auth_token; + } +} + +void CacheManager::SetAppCloudTransportType( + const std::string& policy_app_id, const std::string& cloud_transport_type) { + policy_table::ApplicationPolicies& policies = + pt_->policy_table.app_policies_section.apps; + policy_table::ApplicationPolicies::iterator policy_iter = + policies.find(policy_app_id); + if (policies.end() != policy_iter) { + *(*policy_iter).second.cloud_transport_type = cloud_transport_type; + } +} + +void CacheManager::SetAppEndpoint(const std::string& policy_app_id, + const std::string& endpoint) { + policy_table::ApplicationPolicies& policies = + pt_->policy_table.app_policies_section.apps; + policy_table::ApplicationPolicies::iterator policy_iter = + policies.find(policy_app_id); + if (policies.end() != policy_iter) { + *(*policy_iter).second.endpoint = endpoint; + } +} + +void CacheManager::SetAppNicknames(const std::string& policy_app_id, + const StringArray& nicknames) { + policy_table::ApplicationPolicies& policies = + pt_->policy_table.app_policies_section.apps; + policy_table::ApplicationPolicies::iterator policy_iter = + policies.find(policy_app_id); + if (policies.end() != policy_iter) { + (*(*policy_iter).second.nicknames) = nicknames; + } +} + +void CacheManager::SetHybridAppPreference( + const std::string& policy_app_id, + const std::string& hybrid_app_preference) { + policy_table::HybridAppPreference value; + bool valid = EnumFromJsonString(hybrid_app_preference, &value); + policy_table::ApplicationPolicies& policies = + pt_->policy_table.app_policies_section.apps; + policy_table::ApplicationPolicies::iterator policy_iter = + policies.find(policy_app_id); + if (policies.end() != policy_iter && valid) { + *(*policy_iter).second.hybrid_app_preference = value; + } +} + +void CacheManager::GetAppServiceParameters( + const std::string& policy_app_id, + policy_table::AppServiceParameters* app_service_parameters) const { + LOG4CXX_AUTO_TRACE(logger_); + const policy_table::ApplicationPolicies& policies = + pt_->policy_table.app_policies_section.apps; + policy_table::ApplicationPolicies::const_iterator policy_iter = + policies.find(policy_app_id); + if (policies.end() != policy_iter) { + auto app_policy = (*policy_iter).second; + if (app_policy.app_service_parameters.is_initialized()) { + *app_service_parameters = *(app_policy.app_service_parameters); + } + } +} + +bool CacheManager::UnknownRPCPassthroughAllowed( + const std::string& policy_app_id) const { + const policy_table::ApplicationPolicies& policies = + pt_->policy_table.app_policies_section.apps; + policy_table::ApplicationPolicies::const_iterator policy_iter = + policies.find(policy_app_id); + if (policies.end() != policy_iter) { + const auto app_policy = (*policy_iter).second; + if (app_policy.allow_unknown_rpc_passthrough.is_initialized()) { + return *(app_policy.allow_unknown_rpc_passthrough); + } + } + return false; +} + std::vector<UserFriendlyMessage> CacheManager::GetUserFriendlyMsg( const std::vector<std::string>& msg_codes, const std::string& language, @@ -1491,6 +1663,21 @@ std::string CacheManager::GetLockScreenIconUrl() const { return std::string(""); } +std::string CacheManager::GetIconUrl(const std::string& policy_app_id) const { + CACHE_MANAGER_CHECK(std::string()); + std::string url; + const policy_table::ApplicationPolicies& policies = + pt_->policy_table.app_policies_section.apps; + policy_table::ApplicationPolicies::const_iterator policy_iter = + policies.find(policy_app_id); + if (policies.end() != policy_iter) { + auto app_policy = (*policy_iter).second; + url = app_policy.icon_url.is_initialized() ? *app_policy.icon_url + : std::string(); + } + return url; +} + rpc::policy_table_interface_base::NumberOfNotificationsType CacheManager::GetNotificationsNumber(const std::string& priority) { CACHE_MANAGER_CHECK(0); @@ -2002,9 +2189,9 @@ bool CacheManager::CleanupUnpairedDevices() { LOG4CXX_DEBUG(logger_, "Device_data size is: " << device_data.size()); device_data.erase(it_device); - LOG4CXX_INFO(logger_, - "Device id " << *iter - << " had been deleted from device_data section."); + LOG4CXX_INFO( + logger_, + "Device id " << *iter << " had been deleted from device_data section."); LOG4CXX_DEBUG(logger_, "Device_data size is: " << device_data.size()); } is_unpaired_.clear(); @@ -2581,7 +2768,7 @@ ExternalConsentStatus CacheManager::GetExternalConsentEntities() { policy_table::DisallowedByExternalConsentEntities::const_iterator it_2 = (*it->second.disallowed_by_external_consent_entities_off).begin(); for (; it_2 != - (*it->second.disallowed_by_external_consent_entities_off).end(); + (*it->second.disallowed_by_external_consent_entities_off).end(); ++it_2) { items.insert(ExternalConsentStatusItem( it_2->entity_type, it_2->entity_id, EntityStatus::kStatusOff)); @@ -2730,8 +2917,9 @@ void CacheManager::MergeFG(const policy_table::PolicyTable& new_pt, void CacheManager::MergeAP(const policy_table::PolicyTable& new_pt, policy_table::PolicyTable& pt) { LOG4CXX_AUTO_TRACE(logger_); - pt.app_policies_section.device = const_cast<policy_table::PolicyTable&>( - new_pt).app_policies_section.device; + pt.app_policies_section.device = + const_cast<policy_table::PolicyTable&>(new_pt) + .app_policies_section.device; pt.app_policies_section.apps[kDefaultId] = const_cast<policy_table::PolicyTable&>(new_pt) |