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 "errorcode_convertor.h"
17 #include "net_event_report.h"
18 #include "net_manager_constants.h"
19 #include "netfirewall_hisysevent.h"
20
21 namespace OHOS {
22 namespace NetManagerStandard {
23 namespace {
24 constexpr const char *NET_FIREWALL_CONF_FAULT = "NET_FIREWALL_CONF_FAULT";
25 constexpr const char *NET_FIREWALL_REQ_FAULT = "NET_FIREWALL_REQ_FAULT";
26 constexpr const char *NET_FIREWALL_LOG_REQ_FAULT = "NET_FIREWALL_LOG_REQ_FAULT";
27 constexpr const char *NET_FIREWALL_INIT_FAULT = "NET_FIREWALL_INIT_FAULT";
28 constexpr const char *NET_FIREWALL_CONF_BEHAVIOR = "NET_FIREWALL_CONF_BEHAVIOR";
29 constexpr const char *NET_FIREWALL_REQ_BEHAVIOR = "NET_FIREWALL_REQ_BEHAVIOR";
30 constexpr const char *NET_FIREWALL_LOG_REQ_BEHAVIOR = "NET_FIREWALL_LOG_REQ_BEHAVIOR";
31
32 constexpr const char *EVENT_KEY_FIREWALL_USER_ID = "userId";
33 constexpr const char *EVENT_KEY_FIREWALL_ERROR_TYPE = "errorType";
34 constexpr const char *EVENT_KEY_FIREWALL_ERROR_MSG = "errorMsg";
35 }
36
GetInstance()37 NetFirewallHisysEvent &NetFirewallHisysEvent::GetInstance()
38 {
39 static NetFirewallHisysEvent instance;
40 return instance;
41 }
42
SendFirewallConfigReport(int32_t userId,int32_t & errorCode)43 void NetFirewallHisysEvent::SendFirewallConfigReport(int32_t userId, int32_t &errorCode)
44 {
45 NetFirewallHisysEvent instance = GetInstance();
46 if (errorCode == FIREWALL_SUCCESS) {
47 instance.SendNetFirewallRuleBehavior(userId, NET_FIREWALL_CONF_BEHAVIOR);
48 } else {
49 NetFirewallEvent eventInfo;
50 eventInfo.userId = userId;
51 eventInfo.errorType = errorCode;
52 NetBaseErrorCodeConvertor convertor;
53 eventInfo.errorMsg = convertor.ConvertErrorCode(errorCode);
54 instance.SendNetFirewallRuleFault(eventInfo, NET_FIREWALL_CONF_FAULT);
55 }
56 }
57
SendFirewallRequestReport(const int32_t userId,int32_t & errorCode)58 void NetFirewallHisysEvent::SendFirewallRequestReport(const int32_t userId, int32_t &errorCode)
59 {
60 NetFirewallHisysEvent instance = GetInstance();
61 if (errorCode == FIREWALL_SUCCESS) {
62 instance.SendNetFirewallRuleBehavior(userId, NET_FIREWALL_REQ_BEHAVIOR);
63 } else {
64 NetFirewallEvent eventInfo;
65 eventInfo.userId = userId;
66 eventInfo.errorType = errorCode;
67 NetBaseErrorCodeConvertor convertor;
68 eventInfo.errorMsg = convertor.ConvertErrorCode(errorCode);
69 instance.SendNetFirewallRuleFault(eventInfo, NET_FIREWALL_REQ_FAULT);
70 }
71 }
72
SendRecordRequestReport(const int32_t userId,int32_t & errorCode)73 void NetFirewallHisysEvent::SendRecordRequestReport(const int32_t userId, int32_t &errorCode)
74 {
75 NetFirewallHisysEvent instance = GetInstance();
76 if (errorCode == FIREWALL_SUCCESS) {
77 instance.SendNetFirewallBehavior(userId, NET_FIREWALL_LOG_REQ_BEHAVIOR);
78 } else {
79 NetFirewallEvent eventInfo;
80 eventInfo.userId = userId;
81 eventInfo.errorType = errorCode;
82 NetBaseErrorCodeConvertor convertor;
83 eventInfo.errorMsg = convertor.ConvertErrorCode(errorCode);
84 instance.SendNetFirewallFault(eventInfo, NET_FIREWALL_LOG_REQ_FAULT);
85 }
86 }
87
SendInitDefaultRequestReport(const int32_t userId,int32_t & errorCode)88 void NetFirewallHisysEvent::SendInitDefaultRequestReport(const int32_t userId, int32_t &errorCode)
89 {
90 NetFirewallEvent eventInfo;
91 eventInfo.userId = userId;
92 eventInfo.errorType = errorCode;
93 NetBaseErrorCodeConvertor convertor;
94 eventInfo.errorMsg = convertor.ConvertErrorCode(errorCode);
95 GetInstance().SendNetFirewallFault(eventInfo, NET_FIREWALL_INIT_FAULT);
96 }
97
SendNetFirewallRuleFault(const NetFirewallEvent & event,const std::string & eventName)98 void NetFirewallHisysEvent::SendNetFirewallRuleFault(const NetFirewallEvent &event, const std::string &eventName)
99 {
100 HiSysEventWrite(HiSysEvent::Domain::NETMANAGER_STANDARD, eventName, HiSysEvent::EventType::FAULT,
101 EVENT_KEY_FIREWALL_USER_ID, event.userId, EVENT_KEY_FIREWALL_ERROR_TYPE, event.errorType,
102 EVENT_KEY_FIREWALL_ERROR_MSG, event.errorMsg);
103 }
104
SendNetFirewallRuleBehavior(const int32_t userId,const std::string & eventName)105 void NetFirewallHisysEvent::SendNetFirewallRuleBehavior(const int32_t userId, const std::string &eventName)
106 {
107 HiSysEventWrite(HiSysEvent::Domain::NETMANAGER_STANDARD, eventName, HiSysEvent::EventType::BEHAVIOR,
108 EVENT_KEY_FIREWALL_USER_ID, userId);
109 }
110
SendNetFirewallFault(const NetFirewallEvent & event,const std::string & eventName)111 void NetFirewallHisysEvent::SendNetFirewallFault(const NetFirewallEvent &event, const std::string &eventName)
112 {
113 HiSysEventWrite(HiSysEvent::Domain::NETMANAGER_STANDARD, eventName, HiSysEvent::EventType::FAULT,
114 EVENT_KEY_FIREWALL_USER_ID, event.userId, EVENT_KEY_FIREWALL_ERROR_TYPE, event.errorType,
115 EVENT_KEY_FIREWALL_ERROR_MSG, event.errorMsg);
116 }
117
SendNetFirewallBehavior(const int32_t userId,const std::string & eventName)118 void NetFirewallHisysEvent::SendNetFirewallBehavior(const int32_t userId, const std::string &eventName)
119 {
120 HiSysEventWrite(HiSysEvent::Domain::NETMANAGER_STANDARD, eventName, HiSysEvent::EventType::BEHAVIOR,
121 EVENT_KEY_FIREWALL_USER_ID, userId);
122 }
123 } // namespace NetManagerStandard
124 } // namespace OHOS