• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "extension_config.h"
17 
18 #include <fstream>
19 
20 #include "config_policy_utils.h"
21 #include "hilog_tag_wrapper.h"
22 #include "json_utils.h"
23 #include "status_singleton.h"
24 namespace OHOS {
25 namespace AAFwk {
26 namespace {
27 constexpr const char* EXTENSION_CONFIG_DEFAULT_PATH = "/system/etc/extension_config.json";
28 constexpr const char* EXTENSION_CONFIG_FILE_PATH = "/etc/extension_config.json";
29 
30 constexpr const char* EXTENSION_CONFIG_NAME = "extension_config";
31 constexpr const char* EXTENSION_TYPE_NAME = "extension_type_name";
32 constexpr const char* EXTENSION_AUTO_DISCONNECT_TIME = "auto_disconnect_time";
33 
34 // old access flag, deprecated
35 constexpr const char* EXTENSION_THIRD_PARTY_APP_BLOCKED_FLAG_NAME = "third_party_app_blocked_flag";
36 constexpr const char* EXTENSION_SERVICE_BLOCKED_LIST_NAME = "service_blocked_list";
37 constexpr const char* EXTENSION_SERVICE_STARTUP_ENABLE_FLAG = "service_startup_enable_flag";
38 
39 // new access flag
40 constexpr const char* ABILITY_ACCESS = "ability_access";
41 constexpr const char* THIRD_PARTY_APP_ACCESS_FLAG = "third_party_app_access_flag";
42 constexpr const char* SERVICE_ACCESS_FLAG = "service_access_flag";
43 constexpr const char* DEFAULT_ACCESS_FLAG = "default_access_flag";
44 constexpr const char* BLOCK_LIST = "blocklist";
45 constexpr const char* ALLOW_LIST = "allowlist";
46 constexpr const char* NETWORK_ACCESS_ENABLE_FLAG = "network_access_enable_flag";
47 constexpr const char* SA_ACCESS_ENABLE_FLAG = "sa_access_enable_flag";
48 }
49 
GetExtensionConfigPath() const50 std::string ExtensionConfig::GetExtensionConfigPath() const
51 {
52     std::string configPath = "/etc/extension_config.json";
53     return configPath;
54 }
55 
LoadExtensionConfiguration()56 void ExtensionConfig::LoadExtensionConfiguration()
57 {
58     return;
59 }
60 
GetExtensionAutoDisconnectTime(const std::string & extensionTypeName)61 int32_t ExtensionConfig::GetExtensionAutoDisconnectTime(const std::string &extensionTypeName)
62 {
63     return DEFAULT_EXTENSION_AUTO_DISCONNECT_TIME;
64 }
65 
IsExtensionStartThirdPartyAppEnable(const std::string & extensionTypeName)66 bool ExtensionConfig::IsExtensionStartThirdPartyAppEnable(const std::string &extensionTypeName)
67 {
68     TAG_LOGE(AAFwkTag::ABILITYMGR, "testcase IsExtensionStartThirdPartyAppEnable");
69     return StatusSingleton::GetInstance().isExtensionStartThirdPartyAppEnable_;
70 }
71 
IsExtensionStartServiceEnable(const std::string & extensionTypeName,const std::string & targetUri)72 bool ExtensionConfig::IsExtensionStartServiceEnable(const std::string &extensionTypeName, const std::string &targetUri)
73 {
74     return StatusSingleton::GetInstance().isExtensionStartServiceEnable_;
75 }
76 
LoadExtensionConfig(const nlohmann::json & object)77 void ExtensionConfig::LoadExtensionConfig(const nlohmann::json &object)
78 {
79     return;
80 }
81 
LoadExtensionAutoDisconnectTime(const nlohmann::json & object,const std::string & extensionTypeName)82 void ExtensionConfig::LoadExtensionAutoDisconnectTime(const nlohmann::json &object,
83     const std::string &extensionTypeName)
84 {
85     return;
86 }
87 
LoadExtensionThirdPartyAppBlockedList(const nlohmann::json & object,std::string extensionTypeName)88 void ExtensionConfig::LoadExtensionThirdPartyAppBlockedList(const nlohmann::json &object,
89     std::string extensionTypeName)
90 {
91     return;
92 }
93 
LoadExtensionServiceBlockedList(const nlohmann::json & object,std::string extensionTypeName)94 void ExtensionConfig::LoadExtensionServiceBlockedList(const nlohmann::json &object, std::string extensionTypeName)
95 {
96     return;
97 }
98 
LoadExtensionAbilityAccess(const nlohmann::json & object,const std::string & extensionTypeName)99 bool ExtensionConfig::LoadExtensionAbilityAccess(const nlohmann::json &object, const std::string &extensionTypeName)
100 {
101     return true;
102 }
103 
FormatAccessFlag(const std::optional<bool> & flag)104 std::string ExtensionConfig::FormatAccessFlag(const std::optional<bool> &flag)
105 {
106     if (!flag.has_value()) {
107         return "null";
108     }
109     return flag.value() ? "true" : "false";
110 }
111 
LoadExtensionAllowOrBlockedList(const nlohmann::json & object,const std::string & key,std::unordered_set<std::string> & list)112 void ExtensionConfig::LoadExtensionAllowOrBlockedList(const nlohmann::json &object, const std::string &key,
113     std::unordered_set<std::string> &list)
114 {
115     return;
116 }
117 
LoadExtensionNetworkEnable(const nlohmann::json & object,const std::string & extensionTypeName)118 void ExtensionConfig::LoadExtensionNetworkEnable(const nlohmann::json &object,
119     const std::string &extensionTypeName)
120 {
121     return;
122 }
123 
LoadExtensionSAEnable(const nlohmann::json & object,const std::string & extensionTypeName)124 void ExtensionConfig::LoadExtensionSAEnable(const nlohmann::json &object,
125     const std::string &extensionTypeName)
126 {
127     return;
128 }
129 
HasAbilityAccess(const std::string & extensionTypeName)130 bool ExtensionConfig::HasAbilityAccess(const std::string &extensionTypeName)
131 {
132     return StatusSingleton::GetInstance().hasAbilityAccess_;
133 }
134 
HasThridPartyAppAccessFlag(const std::string & extensionTypeName)135 bool ExtensionConfig::HasThridPartyAppAccessFlag(const std::string &extensionTypeName)
136 {
137     return StatusSingleton::GetInstance().hasThridPartyAppAccessFlag_;
138 }
139 
HasServiceAccessFlag(const std::string & extensionTypeName)140 bool ExtensionConfig::HasServiceAccessFlag(const std::string &extensionTypeName)
141 {
142     return StatusSingleton::GetInstance().hasServiceAccessFlag_;
143 }
144 
HasDefaultAccessFlag(const std::string & extensionTypeName)145 bool ExtensionConfig::HasDefaultAccessFlag(const std::string &extensionTypeName)
146 {
147     return StatusSingleton::GetInstance().hasDefaultAccessFlag_;
148 }
149 
GetSingleAccessFlag(const std::string & extensionTypeName,std::function<std::optional<bool> (const AbilityAccessItem &)> getAccessFlag)150 std::optional<bool> ExtensionConfig::GetSingleAccessFlag(const std::string &extensionTypeName,
151     std::function<std::optional<bool>(const AbilityAccessItem&)> getAccessFlag)
152 {
153     return std::nullopt;
154 }
155 
IsExtensionStartThirdPartyAppEnableNew(const std::string & extensionTypeName,const std::string & targetUri)156 bool ExtensionConfig::IsExtensionStartThirdPartyAppEnableNew(const std::string &extensionTypeName,
157     const std::string &targetUri)
158 {
159     return StatusSingleton::GetInstance().isExtensionStartThirdPartyAppEnableNew_;
160 }
161 
IsExtensionStartServiceEnableNew(const std::string & extensionTypeName,const std::string & targetUri)162 bool ExtensionConfig::IsExtensionStartServiceEnableNew(const std::string &extensionTypeName,
163     const std::string &targetUri)
164 {
165     return StatusSingleton::GetInstance().isExtensionStartServiceEnableNew_;
166 }
167 
IsExtensionStartDefaultEnable(const std::string & extensionTypeName,const std::string & targetUri)168 bool ExtensionConfig::IsExtensionStartDefaultEnable(const std::string &extensionTypeName,
169     const std::string &targetUri)
170 {
171     return StatusSingleton::GetInstance().isExtensionStartDefaultEnable_;
172 }
173 
IsExtensionAbilityAccessEnable(const std::string & extensionTypeName,const std::string & targetUri,std::function<std::optional<bool> (const AbilityAccessItem &)> getAccessFlag)174 bool ExtensionConfig::IsExtensionAbilityAccessEnable(const std::string &extensionTypeName,
175     const std::string &targetUri,
176     std::function<std::optional<bool>(const AbilityAccessItem&)> getAccessFlag)
177 {
178     return true;
179 }
180 
FindTargetUriInList(const AppExecFwk::ElementName & targetElementName,std::unordered_set<std::string> & list)181 bool ExtensionConfig::FindTargetUriInList(const AppExecFwk::ElementName &targetElementName,
182     std::unordered_set<std::string> &list)
183 {
184     return true;
185 }
186 
IsExtensionNetworkEnable(const std::string & extensionTypeName)187 bool ExtensionConfig::IsExtensionNetworkEnable(const std::string &extensionTypeName)
188 {
189     return EXTENSION_NETWORK_ENABLE_FLAG_DEFAULT;
190 }
191 
IsExtensionSAEnable(const std::string & extensionTypeName)192 bool ExtensionConfig::IsExtensionSAEnable(const std::string &extensionTypeName)
193 {
194     return EXTENSION_SA_ENABLE_FLAG_DEFAULT;
195 }
196 
ReadFileInfoJson(const std::string & filePath,nlohmann::json & jsonBuf)197 bool ExtensionConfig::ReadFileInfoJson(const std::string &filePath, nlohmann::json &jsonBuf)
198 {
199     return true;
200 }
201 
CheckExtensionUriValid(const std::string & uri)202 bool ExtensionConfig::CheckExtensionUriValid(const std::string &uri)
203 {
204     return true;
205 }
206 }
207 }