• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-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 #ifndef OHOS_FILEMGMT_BACKUP_B_CONSTANTS_H
17 #define OHOS_FILEMGMT_BACKUP_B_CONSTANTS_H
18 
19 #include <array>
20 #include <cstdint>
21 #include <string>
22 #include <string_view>
23 #include <unistd.h>
24 
25 namespace OHOS::FileManagement::Backup::BConstants {
26 
27 static inline const char *EXTENSION_ACTION_PARA = "extensionAction";
28 static inline const char *EXTENSION_RESTORE_TYPE_PARA = "restoreType";
29 static inline const char *EXTENSION_VERSION_CODE_PARA = "versionCode";
30 static inline const char *EXTENSION_VERSION_NAME_PARA = "versionName";
31 static inline const char *EXTENSION_RESTORE_EXT_INFO_PARA = "restoreExtInfo";
32 static inline const char *EXTENSION_BACKUP_EXT_INFO_PARA = "backupExtInfo";
33 static inline const char *EXTENSION_APP_CLONE_INDEX_PARA = "ohos.extra.param.key.appCloneIndex";
34 static inline const char *EXTENSION_OLD_BACKUP_VERSION_PARA = "oldBackupVersion";
35 
36 enum class ExtensionAction {
37     INVALID = 0,
38     BACKUP = 1,
39     RESTORE = 2,
40 };
41 
42 enum ServiceSchedAction {
43     WAIT = 0,
44     START = 1,
45     RUNNING = 2,
46     FINISH = 3,
47     CLEAN = 4,
48     UNKNOWN = 5,
49 };
50 
51 constexpr int SPAN_USERID_UID = 200000;
52 constexpr int SYSTEM_UID = 0;
53 constexpr int XTS_UID = 1;
54 constexpr int DEFAULT_USER_ID = 100;
55 constexpr int BACKUP_UID = 1089;
56 constexpr int EXTENSION_THREAD_POOL_COUNT = 1;
57 constexpr int BACKUP_LOADSA_TIMEOUT_MS = 5000;
58 
59 constexpr int DECIMAL_BASE = 10; // 十进制基数
60 
61 constexpr off_t BIG_FILE_BOUNDARY = 2 * 1024 * 1024; // 大文件边界
62 constexpr unsigned long BIG_FILE_NAME_SIZE = 16;     // 大文件名长度(hash处理)
63 
64 constexpr int PATHES_TO_BACKUP_SIZE = 13;     // 应用默认备份的目录个数
65 constexpr uint32_t BACKUP_PARA_VALUE_MAX = 5; // 读取backup.para字段值的最大长度
66 constexpr int SA_THREAD_POOL_COUNT = 1;       // SA THREAD_POOL 最大线程数
67 constexpr int EXT_CONNECT_MAX_COUNT = 3;      // extension 最大启动数
68 constexpr int EXT_CONNECT_MAX_TIME = 15000;   // SA 启动 extension 等待连接最大时间
69 
70 constexpr int IPC_MAX_WAIT_TIME = 3000; // IPC通讯最大等待时间(s)
71 constexpr int MAX_PARCELABLE_VECTOR_NUM = 10000;
72 constexpr char FILE_SEPARATOR_CHAR = '/';
73 
74 // 分片打包常量
75 const uint64_t DEFAULT_SLICE_SIZE = 100 * 1024 * 1024; // 分片文件大小为100M
76 const uint32_t MAX_FILE_COUNT = 6000; // 单个tar包最多包含6000个文件
77 const int FILE_AND_MANIFEST_FD_COUNT = 2; // 每组文件和简报数量统计
78 
79 constexpr int DEFAULT_VFS_CACHE_PRESSURE = 100; // 默认内存回收参数
80 constexpr int BACKUP_VFS_CACHE_PRESSURE = 10000; // 备份过程修改参数
81 
82 constexpr int32_t INVALID_FD_NUM = -1;
83 
84 constexpr int MAX_FD_SEND_RATE = 800; // 允许应用申请的最大FD数量
85 constexpr int MIN_FD_SEND_RATE = 0; // 允许应用申请的最小FD数量
86 constexpr int DEFAULT_FD_SEND_RATE = 60; // 框架默认的FD数量
87 constexpr int32_t PARAM_STARING_MAX_MEMORY = 2 * 1024 * 1024;
88 constexpr uint32_t H2MS = 60 * 60 * 1000;
89 constexpr uint32_t MAX_UPDATE_TIMER = 4 * H2MS;
90 constexpr uint32_t DEFAULT_TIMEOUT = 15 * 60 * 1000;
91 constexpr uint32_t TIMEOUT_INVALID = UINT32_MAX;
92 constexpr int LONG_FILE_NAME_BOUNDARY_VAL = 255;
93 
94 constexpr int CALL_APP_ON_PROCESS_TIME_INTERVAL = 5; // 框架每隔5s去调用应用的onProcess
95 constexpr int APP_ON_PROCESS_MAX_TIMEOUT = 1000; // 应用的onProcess接口最大超时时间为1秒
96 constexpr int FIRST_CALL_APP_ON_PROCESS_MAX_TIMEOUT = 15000; // 首次调用应用的onProcess接口最大超时时间为15秒
97 constexpr int APP_ON_PROCESS_TIMEOUT_MAX_COUNT = 3; // 应用的onProcess接口超时的上限次数
98 
99 // backup.para内配置项的名称,该配置项值为true时可在不更新hap包的情况下,可以读取包管理元数据配置文件的内容
100 static inline std::string BACKUP_DEBUG_OVERRIDE_EXTENSION_CONFIG_KEY = "backup.debug.overrideExtensionConfig";
101 static const bool BACKUP_DEBUG_OVERRIDE_EXTENSION_CONFIG_DEFAULT_VALUE = false;
102 
103 // backup.para内配置项的名称,该配置项AccountConfig为true时存在时,可以按照配置的AccountNumber备份恢复
104 static inline std::string BACKUP_DEBUG_OVERRIDE_ACCOUNT_CONFIG_KEY = "backup.debug.overrideAccountConfig";
105 static inline std::string BACKUP_DEBUG_OVERRIDE_ACCOUNT_NUMBER_KEY = "backup.debug.overrideAccountNumber";
106 
107 // 增量备份相关处理目录
108 static const std::string BACKUP_PATH_PREFIX = "/data/service/el2/";
109 static const std::string BACKUP_PATH_SURFFIX = "/backup/backup_sa/";
110 static const std::string BACKUP_INCEXC_SYMBOL = "incExc_";
111 static const std::string BACKUP_STAT_SYMBOL = "stat_";
112 static const std::string BACKUP_INCLUDE = "INCLUDES";
113 static const std::string BACKUP_EXCLUDE = "EXCLUDES";
114 
115 // backup.para内配置项的名称,该配置项为true时备份恢复支持Release接口调用
116 static inline std::string BACKUP_OVERRIDE_BACKUP_SA_RELEASE_KEY = "backup.overrideBackupSARelease";
117 static const bool BACKUP_DEBUG_OVERRIDE_BACKUP_SA_RELEASE_DEFAULT_VALUE = true;
118 
119 // backup.para内配置项的名称,该配置项为true时备份恢复支持增量恢复
120 static inline std::string BACKUP_OVERRIDE_INCREMENTAL_KEY = "backup.overrideIncrementalRestore";
121 static const bool BACKUP_DEBUG_OVERRIDE_INCREMENTAL_DEFAULT_VALUE = true;
122 
123 // 应用备份数据暂存路径
124 static inline std::string_view SA_BUNDLE_BACKUP_BACKUP = "/backup/";
125 static inline std::string_view SA_BUNDLE_BACKUP_RESTORE = "/restore/";
126 static inline std::string_view SA_BUNDLE_BACKUP_TMP_DIR = "/tmp/";
127 static inline std::string_view BACKUP_TOOL_RECEIVE_DIR = "/data/backup/received/";
128 static inline std::string_view PATH_BUNDLE_BACKUP_HOME_EL1 = "/data/storage/el1/base/.backup";
129 static inline std::string_view PATH_BUNDLE_BACKUP_HOME = "/data/storage/el2/base/.backup";
130 static inline std::string_view PATH_FILEMANAGE_BACKUP_HOME = "/storage/Users/currentUser/.backup";
131 static inline std::string_view PATH_MEDIALDATA_BACKUP_HOME = "/storage/media/local/files/.backup";
132 static inline std::string_view BACKUP_TOOL_LINK_DIR = "/data/backup";
133 static inline std::string_view BACKUP_TOOL_INCREMENTAL_RECEIVE_DIR = "/data/backup/incrementalreceived/";
134 static inline std::string_view BACKUP_TOOL_MANIFEST = "/manifest";
135 static inline std::string_view BACKUP_TOOL_INCREMENTAL = "/incremental";
136 static inline std::string BACKUP_DIR_PRE = "/data/storage/";
137 static inline std::string CONTEXT_ELS[] = {"el1", "el2"};
138 static inline std::string BACKUP_DIR_END = "/base/.backup/";
139 static inline std::string BUNDLE_BASE_DIR = "/data/storage/el2/base";
140 static inline std::string PATH_PUBLIC_HOME = "/storage/Users/currentUser/";
141 static inline std::string PATH_APP_DATA = "appdata";
142 
143 // 文管bundleName
144 static inline std::string BUNDLE_FILE_MANAGER = "hmos.filemanager";
145 // 文管bundleNameSize
146 constexpr size_t FM_LEN = 27;
147 // 媒体库数据bundleName
148 static inline std::string BUNDLE_MEDIAL_DATA = "com.ohos.medialibrary.medialibrarydata";
149 // SA Ext
150 constexpr int BACKUP_DEFAULT_SA_ID = -1;
151 constexpr int BACKUP_SA_RELOAD_MAX = 2;
152 static inline std::string EXTENSION_BACKUP = "backup";
153 static inline std::string EXTENSION_RESTORE = "restore";
154 // 路径校验
155 static inline std::string PATH_ABSOLUTE = "../";
156 
157 // 多用户场景应用备份数据路径
GetSaBundleBackupDir(int32_t userId)158 static inline std::string GetSaBundleBackupDir(int32_t userId)
159 {
160     std::string str;
161     str.append("/data/app/el2/");
162     str.append(std::to_string(userId));
163     str.append("/base/.backup/");
164     return str;
165 }
166 
GetSaBundleBackupRootDir(int32_t userId)167 static inline std::string GetSaBundleBackupRootDir(int32_t userId)
168 {
169     std::string str;
170     str.append("/data/service/el2/");
171     str.append(std::to_string(userId));
172     str.append("/backup/backup_sa/");
173     return str;
174 }
175 
GetSaBundleBackupToolDir(int32_t userId)176 static inline std::string GetSaBundleBackupToolDir(int32_t userId)
177 {
178     std::string str;
179     str.append("/data/service/el2/");
180     str.append(std::to_string(userId));
181     str.append("/backup/backup_tool/");
182     return str;
183 }
184 
185 // 备份恢复配置文件暂存路径
186 static inline std::string_view BACKUP_CONFIG_EXTENSION_PATH = "/data/storage/el2/base/cache/";
187 
188 // 应用备份恢复所需的索引文件
189 static inline std::string_view EXT_BACKUP_MANAGE = "manage.json";
190 
191 // 包管理元数据配置文件
192 static inline std::string_view BACKUP_CONFIG_JSON = "backup_config.json";
193 
194 // 简报文件名后缀
195 static inline std::string_view REPORT_FILE_EXT = "rp";
196 
197 // 空简报
198 static inline std::string BLANK_REPORT_NAME = "blankReport.rp";
199 
200 // 特殊版本信息
201 constexpr int DEFAULT_VERSION_CODE = 0;
202 constexpr char VERSION_NAME_SEPARATOR_CHAR = '-';
203 static inline std::string_view DEFAULT_VERSION_NAME = "0.0.0.0";
204 static inline std::string_view DEFAULT_VERSION_NAME_CLONE = "99.99.99.999";
205 static inline std::string_view DEFAULT_VERSION_NAME_CLONE_2 = "99.99.99.998";
206 static inline std::string_view DEFAULT_VERSION_NAME_CLONE_3 = "99.99.99.997";
207 static inline std::string_view DEFAULT_VERSION_NAME_PC = "99.99.99.996";
208 static inline std::string_view DEFAULT_VERSION_NAME_CLOUD = "99.99.99.995";
209 static inline std::vector<std::string_view> DEFAULT_VERSION_NAMES_VEC = {
210     DEFAULT_VERSION_NAME,         DEFAULT_VERSION_NAME_CLONE, DEFAULT_VERSION_NAME_CLONE_2,
211     DEFAULT_VERSION_NAME_CLONE_3, DEFAULT_VERSION_NAME_PC,    DEFAULT_VERSION_NAME_CLOUD,
212 };
213 static inline std::string BACKUP_VERSION = R"({"backupVersion" : "16.0"})";
214 
215 // 应用默认备份的目录,其均为相对根路径的路径。为避免模糊匹配,务必以斜线为结尾。
216 static inline std::array<std::string_view, PATHES_TO_BACKUP_SIZE> PATHES_TO_BACKUP = {
217     "data/storage/el1/database/",          "data/storage/el1/base/files/",
218     "data/storage/el1/base/preferences/",  "data/storage/el1/base/haps/*/database/",
219     "data/storage/el1/base/haps/*/files/", "data/storage/el1/base/haps/*/preferences/",
220     "data/storage/el2/database/",          "data/storage/el2/base/files/",
221     "data/storage/el2/base/preferences/",  "data/storage/el2/base/haps/*/database/",
222     "data/storage/el2/base/haps/*/files/", "data/storage/el2/base/haps/*/preferences/",
223     "data/storage/el2/distributedfiles/",
224 };
225 
226 // napi 层代码引用到的常量,对应js接口声明(@ohos.file.backup.d.ts)中的属性字段
227 static inline std::string BUNDLE_NAME = "bundleName";
228 static inline std::string URI = "uri";
229 static inline std::string FD = "fd";
230 static inline std::string MANIFEST_FD = "manifestFd";
231 static inline std::string LAST_INCREMENTAL_TIME = "lastIncrementalTime";
232 static inline std::string PARAMETERS = "parameters";
233 static inline std::string PRIORITY = "priority";
234 
235 // unicast
236 const std::string UNICAST_TYPE = "unicast";
237 
238 // 雷达打点引用到的常量
239 constexpr int32_t MS_1000 = 1000;
240 constexpr int32_t MAX_TIME_COST = 900000;
241 constexpr int32_t MAX_INEXCLUDE_SIZE = 25;
242 constexpr uint8_t INDEX = 3;
243 constexpr int INVALID_TIMEOUT_VALUE = -1;
244 static inline std::string FILE_BACKUP_RESTORE_EVENTS = "FILE_BACKUP_RESTORE_EVENTS";
245 static inline std::string FILE_BACKUP_RESTORE_STATISTIC = "FILE_BACKUP_RESTORE_STATISTIC";
246 } // namespace OHOS::FileManagement::Backup::BConstants
247 
248 #endif // OHOS_FILEMGMT_BACKUP_B_CONSTANTS_H
249