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