1 /*
2 * Copyright (c) 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 <iomanip>
17 #include <sstream>
18 #include <string>
19 #include <unistd.h>
20
21 #include "b_process/b_multiuser.h"
22 #include "b_radar/b_radar.h"
23 #include "b_resources/b_constants.h"
24 #include "b_utils/b_time.h"
25 #include "hisysevent.h"
26 #include "i_service_reverse.h"
27
28 namespace OHOS::FileManagement::Backup {
GetUserId()29 int32_t AppRadar::GetUserId()
30 {
31 auto multiuser = BMultiuser::ParseUid(getuid());
32 if ((multiuser.userId == BConstants::SYSTEM_UID) || (multiuser.userId == BConstants::XTS_UID)) {
33 return BConstants::DEFAULT_USER_ID;
34 }
35 return multiuser.userId;
36 }
37
RecordDefaultFuncRes(Info & info,const std::string & func,int32_t userId,enum BizStageBackup bizStage,int32_t resultCode)38 void AppRadar::RecordDefaultFuncRes(Info &info, const std::string &func, int32_t userId,
39 enum BizStageBackup bizStage, int32_t resultCode)
40 {
41 std::stringstream ss;
42 ss << R"("result_info": {)" << info.resInfo << "}}";
43 HiSysEventWrite(
44 OHOS::HiviewDFX::HiSysEvent::Domain::FILEMANAGEMENT,
45 BConstants::FILE_BACKUP_RESTORE_EVENTS,
46 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
47 "BUNDLE_NAME", info.bundleName,
48 "USER_ID", userId,
49 "PID", getpid(),
50 "FUNC", func,
51 "TIME", TimeUtils::GetCurrentTime(),
52 "BIZ_SCENE", static_cast<int32_t>(IServiceReverse::Scenario::UNDEFINED),
53 "BIZ_STAGE", static_cast<int32_t>(bizStage),
54 "EXEC_STATUS", info.status,
55 "RESULT_CODE", resultCode,
56 "RESULT_INFO", ss.str());
57 }
58
RecordBackupFuncRes(Info & info,const std::string & func,int32_t userId,enum BizStageBackup bizStage,int32_t resultCode)59 void AppRadar::RecordBackupFuncRes(Info &info, const std::string &func, int32_t userId,
60 enum BizStageBackup bizStage, int32_t resultCode)
61 {
62 std::stringstream ss;
63 ss << R"("result_info": {)" << info.resInfo << "}}";
64 HiSysEventWrite(
65 OHOS::HiviewDFX::HiSysEvent::Domain::FILEMANAGEMENT,
66 BConstants::FILE_BACKUP_RESTORE_EVENTS,
67 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
68 "BUNDLE_NAME", info.bundleName,
69 "USER_ID", userId,
70 "PID", getpid(),
71 "FUNC", func,
72 "TIME", TimeUtils::GetCurrentTime(),
73 "BIZ_SCENE", static_cast<int32_t>(IServiceReverse::Scenario::BACKUP),
74 "BIZ_STAGE", static_cast<int32_t>(bizStage),
75 "EXEC_STATUS", info.status,
76 "RESULT_CODE", resultCode,
77 "RESULT_INFO", ss.str());
78 }
79
RecordRestoreFuncRes(Info & info,const std::string & func,int32_t userId,enum BizStageRestore bizStage,int32_t resultCode)80 void AppRadar::RecordRestoreFuncRes(Info &info, const std::string &func, int32_t userId,
81 enum BizStageRestore bizStage, int32_t resultCode)
82 {
83 std::stringstream ss;
84 ss << R"("result_info": {)" << info.resInfo << "}}";
85 HiSysEventWrite(
86 OHOS::HiviewDFX::HiSysEvent::Domain::FILEMANAGEMENT,
87 BConstants::FILE_BACKUP_RESTORE_EVENTS,
88 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
89 "BUNDLE_NAME", info.bundleName,
90 "USER_ID", userId,
91 "PID", getpid(),
92 "FUNC", func,
93 "TIME", TimeUtils::GetCurrentTime(),
94 "BIZ_SCENE", static_cast<int32_t>(IServiceReverse::Scenario::RESTORE),
95 "BIZ_STAGE", static_cast<int32_t>(bizStage),
96 "EXEC_STATUS", info.status,
97 "RESULT_CODE", resultCode,
98 "RESULT_INFO", ss.str());
99 }
100
RecordStatisticRes(StatInfo & statInfo,int32_t userId,enum IServiceReverse::Scenario scenario,int32_t succ_cnt,int32_t fail_cnt,int32_t resultCode)101 void AppRadar::RecordStatisticRes(StatInfo &statInfo, int32_t userId, enum IServiceReverse::Scenario scenario,
102 int32_t succ_cnt, int32_t fail_cnt, int32_t resultCode)
103 {
104 std::stringstream ss;
105 ss << R"("result_info": {)" << statInfo.resInfo << "}}";
106 HiSysEventWrite(
107 OHOS::HiviewDFX::HiSysEvent::Domain::FILEMANAGEMENT,
108 BConstants::FILE_BACKUP_RESTORE_STATISTIC,
109 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
110 "CALLER_NAME", statInfo.callerName,
111 "USER_ID", userId,
112 "PID", getpid(),
113 "TIME", TimeUtils::GetCurrentTime(),
114 "BIZ_SCENE", static_cast<int32_t>(scenario),
115 "SUCC_CNT", succ_cnt,
116 "FAIL_CNT", fail_cnt,
117 "RESULT_CODE", resultCode,
118 "RESULT_INFO", ss.str());
119 }
120 } // namespace OHOS::FileManagement::Backup