• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-2023 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 COMMUNICATIONNETMANAGERBASE_CONNECTION_EXEC_H
17 #define COMMUNICATIONNETMANAGERBASE_CONNECTION_EXEC_H
18 
19 #include <netdb.h>
20 
21 #include "bindsocket_context.h"
22 #include "getaddressbyname_context.h"
23 #include "getappnet_context.h"
24 #include "getdefaultnet_context.h"
25 #include "gethttpproxy_context.h"
26 #include "napi/native_api.h"
27 #include "none_params_context.h"
28 #include "parse_nethandle_context.h"
29 #include "register_context.h"
30 #include "setappnet_context.h"
31 #include "setglobalhttpproxy_context.h"
32 #include "setcustomdnsrule_context.h"
33 #include "deletecustomdnsrule_context.h"
34 #include "deletecustomdnsrules_context.h"
35 #include "factoryresetnetwork_context.h"
36 #include "setapphttpproxy_context.h"
37 #include "pacurl_context.h"
38 
39 namespace OHOS::NetManagerStandard {
40 static constexpr size_t MAX_ARRAY_LENGTH = 64;
41 static constexpr size_t MAX_IPV4_STR_LEN = 16;
42 static constexpr size_t MAX_IPV6_STR_LEN = 64;
43 class ConnectionExec final {
44 public:
45     ConnectionExec() = delete;
46 
47     ~ConnectionExec() = delete;
48 
49     static napi_value CreateNetHandle(napi_env env, NetHandle *handle);
50 
51     static napi_value CreateNetCapabilities(napi_env env, NetAllCapabilities *capabilities);
52 
53     static napi_value CreateConnectionProperties(napi_env env, NetLinkInfo *linkInfo);
54 
55     static bool ExecGetDefaultNet(GetDefaultNetContext *context);
56 
57     static napi_value GetDefaultNetCallback(GetDefaultNetContext *context);
58 
59     static bool ExecHasDefaultNet(HasDefaultNetContext *context);
60 
61     static napi_value HasDefaultNetCallback(HasDefaultNetContext *context);
62 
63     static bool ExecIsDefaultNetMetered(IsDefaultNetMeteredContext *context);
64 
65     static napi_value IsDefaultNetMeteredCallback(IsDefaultNetMeteredContext *context);
66 
67     static bool ExecGetNetCapabilities(GetNetCapabilitiesContext *context);
68 
69     static napi_value GetNetCapabilitiesCallback(GetNetCapabilitiesContext *context);
70 
71     static bool ExecGetConnectionProperties(GetConnectionPropertiesContext *context);
72 
73     static napi_value GetConnectionPropertiesCallback(GetConnectionPropertiesContext *context);
74 
75     static bool ExecGetAddressByName(GetAddressByNameContext *context);
76 
77     static napi_value GetAddressByNameCallback(GetAddressByNameContext *context);
78 
79     static bool ExecGetAllNets(GetAllNetsContext *context);
80 
81     static napi_value GetAllNetsCallback(GetAllNetsContext *context);
82 
83     static bool ExecEnableAirplaneMode(EnableAirplaneModeContext *context);
84 
85     static napi_value EnableAirplaneModeCallback(EnableAirplaneModeContext *context);
86 
87     static bool ExecDisableAirplaneMode(DisableAirplaneModeContext *context);
88 
89     static napi_value DisableAirplaneModeCallback(DisableAirplaneModeContext *context);
90 
91     static bool ExecReportNetConnected(ReportNetConnectedContext *context);
92 
93     static napi_value ReportNetConnectedCallback(ReportNetConnectedContext *context);
94 
95     static bool ExecReportNetDisconnected(ReportNetDisconnectedContext *context);
96 
97     static napi_value ReportNetDisconnectedCallback(ReportNetDisconnectedContext *context);
98 
99     static bool ExecGetDefaultHttpProxy(GetHttpProxyContext *context);
100 
101     static napi_value GetDefaultHttpProxyCallback(GetHttpProxyContext *context);
102 
103     static bool ExecGetGlobalHttpProxy(GetHttpProxyContext *context);
104 
105     static napi_value GetGlobalHttpProxyCallback(GetHttpProxyContext *context);
106 
107     static bool ExecSetGlobalHttpProxy(SetGlobalHttpProxyContext *context);
108 
109     static napi_value SetGlobalHttpProxyCallback(SetGlobalHttpProxyContext *context);
110 
111     static bool ExecSetAppHttpProxy(SetAppHttpProxyContext *context);
112 
113     static napi_value SetAppHttpProxyCallback(SetAppHttpProxyContext *context);
114 
115     static bool ExecGetAppNet(GetAppNetContext *context);
116 
117     static napi_value GetAppNetCallback(GetAppNetContext *context);
118 
119     static bool ExecSetAppNet(SetAppNetContext *context);
120 
121     static napi_value SetAppNetCallback(SetAppNetContext *context);
122 
123     static bool ExecSetCustomDNSRule(SetCustomDNSRuleContext *context);
124 
125     static napi_value SetCustomDNSRuleCallback(SetCustomDNSRuleContext *context);
126 
127     static bool ExecDeleteCustomDNSRule(DeleteCustomDNSRuleContext *context);
128 
129     static napi_value DeleteCustomDNSRuleCallback(DeleteCustomDNSRuleContext *context);
130 
131     static bool ExecDeleteCustomDNSRules(DeleteCustomDNSRulesContext *context);
132 
133     static napi_value DeleteCustomDNSRulesCallback(DeleteCustomDNSRulesContext *context);
134 
135     static bool ExecFactoryResetNetwork(FactoryResetNetworkContext *context);
136 
137     static napi_value FactoryResetNetworkCallback(FactoryResetNetworkContext *context);
138 
139     static bool ExecSetPacUrl(SetPacUrlContext *context);
140 
141     static napi_value SetPacUrlCallback(SetPacUrlContext *context);
142 
143     static bool ExecGetPacUrl(GetPacUrlContext *context);
144 
145     static napi_value GetPacUrlCallback(GetPacUrlContext *context);
146 
147     class NetHandleExec final {
148     public:
149         NetHandleExec() = delete;
150 
151         ~NetHandleExec() = delete;
152 
153         static bool ExecGetAddressByName(GetAddressByNameContext *context);
154 
155         static napi_value GetAddressByNameCallback(GetAddressByNameContext *context);
156 
157         static bool ExecGetAddressesByName(GetAddressByNameContext *context);
158 
159         static napi_value GetAddressesByNameCallback(GetAddressByNameContext *context);
160 
161         static bool ExecBindSocket(BindSocketContext *context);
162 
163         static napi_value BindSocketCallback(BindSocketContext *context);
164 
165     private:
166         static napi_value MakeNetAddressJsValue(napi_env env, const NetAddress &address);
167 
168         static void SetAddressInfo(const char *host, addrinfo *info, NetAddress &address);
169     };
170 
171     class NetConnectionExec final {
172     public:
173         NetConnectionExec() = delete;
174 
175         ~NetConnectionExec() = delete;
176 
177         static bool ExecRegister(RegisterContext *context);
178 
179         static napi_value RegisterCallback(RegisterContext *context);
180 
181         static bool ExecUnregister(UnregisterContext *context);
182 
183         static napi_value UnregisterCallback(UnregisterContext *context);
184     };
185 
186 private:
187     static void FillLinkAddress(napi_env env, napi_value connectionProperties, NetLinkInfo *linkInfo);
188 
189     static void FillRouoteList(napi_env env, napi_value connectionProperties, NetLinkInfo *linkInfo);
190 
191     static void FillDns(napi_env env, napi_value connectionProperties, NetLinkInfo *linkInfo);
192 };
193 } // namespace OHOS::NetManagerStandard
194 
195 #endif /* COMMUNICATIONNETMANAGERBASE_CONNECTION_EXEC_H */
196