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 <napi/native_api.h>
17 #include <napi/native_common.h>
18
19 #include "add_netfirewall_rule_context.h"
20 #include "delete_netfirewall_rule_context.h"
21 #include "get_all_intercept_records_context.h"
22 #include "get_all_netfirewall_rules_context.h"
23 #include "get_netfirewall_rule_context.h"
24 #include "get_netfirewall_policy_context.h"
25 #include "module_template.h"
26 #include "napi_utils.h"
27 #include "net_firewall_async_work.h"
28 #include "set_netfirewall_policy_context.h"
29 #include "update_netfirewall_rule_context.h"
30
31 namespace OHOS {
32 namespace NetManagerStandard {
33 namespace {
34 static constexpr const char *FUNCTION_SET_NET_FIREWALL_POLICY = "setNetFirewallPolicy";
35 static constexpr const char *FUNCTION_GET_NET_FIREWALL_POLICY = "getNetFirewallPolicy";
36 static constexpr const char *FUNCTION_ADD_NET_FIREWALL_RULE = "addNetFirewallRule";
37 static constexpr const char *FUNCTION_UPDATE_NET_FIREWALL_RULE = "updateNetFirewallRule";
38 static constexpr const char *FUNCTION_DELETE_NET_FIREWALL_RULE = "removeNetFirewallRule";
39 static constexpr const char *FUNCTION_GET_NET_FIREWALL_RULES = "getNetFirewallRules";
40 static constexpr const char *FUNCTION_GET_NET_FIREWALL_RULE = "getNetFirewallRule";
41 static constexpr const char *FUNCTION_GET_INTERCEPT_RECORDS = "getInterceptRecords";
42
SetNetFirewallPolicy(napi_env env,napi_callback_info info)43 napi_value SetNetFirewallPolicy(napi_env env, napi_callback_info info)
44 {
45 return ModuleTemplate::Interface<SetNetFirewallPolicyContext>(env, info, FUNCTION_SET_NET_FIREWALL_POLICY, nullptr,
46 NetFirewallAsyncWork::ExecSetNetFirewallPolicy, NetFirewallAsyncWork::SetNetFirewallPolicyCallback);
47 }
48
GetNetFirewallPolicy(napi_env env,napi_callback_info info)49 napi_value GetNetFirewallPolicy(napi_env env, napi_callback_info info)
50 {
51 return ModuleTemplate::Interface<GetNetFirewallPolicyContext>(env, info, FUNCTION_GET_NET_FIREWALL_POLICY, nullptr,
52 NetFirewallAsyncWork::ExecGetNetFirewallPolicy, NetFirewallAsyncWork::GetNetFirewallPolicyCallback);
53 }
54
AddNetFirewallRule(napi_env env,napi_callback_info info)55 napi_value AddNetFirewallRule(napi_env env, napi_callback_info info)
56 {
57 return ModuleTemplate::Interface<AddNetFirewallRuleContext>(env, info, FUNCTION_ADD_NET_FIREWALL_RULE, nullptr,
58 NetFirewallAsyncWork::ExecAddNetFirewallRule, NetFirewallAsyncWork::AddNetFirewallRuleCallback);
59 }
60
UpdateNetFirewallRule(napi_env env,napi_callback_info info)61 napi_value UpdateNetFirewallRule(napi_env env, napi_callback_info info)
62 {
63 return ModuleTemplate::Interface<UpdateNetFirewallRuleContext>(env, info, FUNCTION_UPDATE_NET_FIREWALL_RULE,
64 nullptr, NetFirewallAsyncWork::ExecUpdateNetFirewallRule, NetFirewallAsyncWork::UpdateNetFirewallRuleCallback);
65 }
66
DeleteNetFirewallRule(napi_env env,napi_callback_info info)67 napi_value DeleteNetFirewallRule(napi_env env, napi_callback_info info)
68 {
69 return ModuleTemplate::Interface<DeleteNetFirewallRuleContext>(env, info, FUNCTION_DELETE_NET_FIREWALL_RULE,
70 nullptr, NetFirewallAsyncWork::ExecDeleteNetFirewallRule, NetFirewallAsyncWork::DeleteNetFirewallRuleCallback);
71 }
72
GetNetFirewallRules(napi_env env,napi_callback_info info)73 napi_value GetNetFirewallRules(napi_env env, napi_callback_info info)
74 {
75 return ModuleTemplate::Interface<GetNetFirewallRulesContext>(env, info, FUNCTION_GET_NET_FIREWALL_RULES,
76 nullptr, NetFirewallAsyncWork::ExecGetNetFirewallRules,
77 NetFirewallAsyncWork::GetNetFirewallRulesCallback);
78 }
79
GetNetFirewallRule(napi_env env,napi_callback_info info)80 napi_value GetNetFirewallRule(napi_env env, napi_callback_info info)
81 {
82 return ModuleTemplate::Interface<GetNetFirewallRuleContext>(env, info, FUNCTION_GET_NET_FIREWALL_RULE, nullptr,
83 NetFirewallAsyncWork::ExecGetNetFirewallRule, NetFirewallAsyncWork::GetNetFirewallRuleCallback);
84 }
85
GetInterceptRecords(napi_env env,napi_callback_info info)86 napi_value GetInterceptRecords(napi_env env, napi_callback_info info)
87 {
88 return ModuleTemplate::Interface<GetInterceptRecordsContext>(env, info, FUNCTION_GET_INTERCEPT_RECORDS,
89 nullptr, NetFirewallAsyncWork::ExecGetInterceptRecords,
90 NetFirewallAsyncWork::GetInterceptRecordCallbacks);
91 }
92 } // namespace
93
DeclareNetFirewallInterface(napi_env env,napi_value exports)94 napi_value DeclareNetFirewallInterface(napi_env env, napi_value exports)
95 {
96 NapiUtils::DefineProperties(env, exports,
97 {
98 DECLARE_NAPI_FUNCTION(FUNCTION_SET_NET_FIREWALL_POLICY, SetNetFirewallPolicy),
99 DECLARE_NAPI_FUNCTION(FUNCTION_GET_NET_FIREWALL_POLICY, GetNetFirewallPolicy),
100 DECLARE_NAPI_FUNCTION(FUNCTION_ADD_NET_FIREWALL_RULE, AddNetFirewallRule),
101 DECLARE_NAPI_FUNCTION(FUNCTION_UPDATE_NET_FIREWALL_RULE, UpdateNetFirewallRule),
102 DECLARE_NAPI_FUNCTION(FUNCTION_DELETE_NET_FIREWALL_RULE, DeleteNetFirewallRule),
103 DECLARE_NAPI_FUNCTION(FUNCTION_GET_NET_FIREWALL_RULES, GetNetFirewallRules),
104 DECLARE_NAPI_FUNCTION(FUNCTION_GET_NET_FIREWALL_RULE, GetNetFirewallRule),
105 DECLARE_NAPI_FUNCTION(FUNCTION_GET_INTERCEPT_RECORDS, GetInterceptRecords),
106 });
107 return exports;
108 }
109
110 static napi_module g_netfirewallModule = {
111 .nm_version = 1,
112 .nm_flags = 0,
113 .nm_filename = nullptr,
114 .nm_register_func = DeclareNetFirewallInterface,
115 .nm_modname = "net.netfirewall",
116 .nm_priv = (0),
117 .reserved = { 0 },
118 };
119
RegisterNetFirewallModule(void)120 extern "C" __attribute__((constructor)) void RegisterNetFirewallModule(void)
121 {
122 napi_module_register(&g_netfirewallModule);
123 }
124 } // namespace NetManagerStandard
125 } // namespace OHOS
126