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 "vpn_data_bean.h"
17 #include "netmgr_ext_log_wrapper.h"
18 #include "net_manager_ext_constants.h"
19
20 namespace OHOS {
21 namespace NetManagerStandard {
ConvertVpnBeanToSysVpnConfig(sptr<VpnDataBean> &vpnBean)22 sptr<SysVpnConfig> VpnDataBean::ConvertVpnBeanToSysVpnConfig(sptr<VpnDataBean> &vpnBean)
23 {
24 if (vpnBean == nullptr) {
25 NETMGR_EXT_LOG_E("ConvertVpnBeanToSysVpnConfig vpnBean is null");
26 return nullptr;
27 }
28 switch (vpnBean->vpnType_) {
29 case VpnType::IKEV2_IPSEC_MSCHAPv2:
30 case VpnType::IKEV2_IPSEC_PSK:
31 case VpnType::IKEV2_IPSEC_RSA:
32 case VpnType::IPSEC_XAUTH_PSK:
33 case VpnType::IPSEC_XAUTH_RSA:
34 case VpnType::IPSEC_HYBRID_RSA:
35 return ConvertVpnBeanToIpsecVpnConfig(vpnBean);
36 case VpnType::OPENVPN:
37 return ConvertVpnBeanToOpenvpnConfig(vpnBean);
38 case VpnType::L2TP_IPSEC_PSK:
39 case VpnType::L2TP_IPSEC_RSA:
40 return ConvertVpnBeanToL2tpVpnConfig(vpnBean);
41 default:
42 NETMGR_EXT_LOG_E("ConvertVpnBeanToSysVpnConfig failed, invalid type=%{public}d", vpnBean->vpnType_);
43 return nullptr;
44 }
45 }
46
ConvertVpnBeanToOpenvpnConfig(sptr<VpnDataBean> vpnBean)47 sptr<OpenvpnConfig> VpnDataBean::ConvertVpnBeanToOpenvpnConfig(sptr<VpnDataBean> vpnBean)
48 {
49 if (vpnBean == nullptr) {
50 NETMGR_EXT_LOG_E("ConvertVpnBeanToOpenvpnConfig vpnBean is null");
51 return nullptr;
52 }
53 sptr<OpenvpnConfig> openvpnConfig = new (std::nothrow) OpenvpnConfig();
54 if (openvpnConfig == nullptr) {
55 NETMGR_EXT_LOG_E("ConvertVpnBeanToOpenvpnConfig openvpnConfig is null");
56 return nullptr;
57 }
58 openvpnConfig->vpnId_ = vpnBean->vpnId_;
59 openvpnConfig->vpnName_ = vpnBean->vpnName_;
60 openvpnConfig->vpnType_ = vpnBean->vpnType_;
61 openvpnConfig->userName_ = vpnBean->userName_;
62 openvpnConfig->password_ = vpnBean->password_;
63 openvpnConfig->userId_ = vpnBean->userId_;
64 openvpnConfig->isLegacy_ = (vpnBean->isLegacy_) == 1;
65 openvpnConfig->saveLogin_ = (vpnBean->saveLogin_) == 1;
66
67 openvpnConfig->ovpnPort_ = vpnBean->ovpnPort_;
68 openvpnConfig->ovpnProtocol_ = vpnBean->ovpnProtocol_;
69 openvpnConfig->ovpnConfig_ = vpnBean->ovpnConfig_;
70 openvpnConfig->ovpnAuthType_ = vpnBean->ovpnAuthType_;
71 openvpnConfig->askpass_ = vpnBean->askpass_;
72 openvpnConfig->ovpnConfigFilePath_ = vpnBean->ovpnConfigFilePath_;
73 openvpnConfig->ovpnCaCertFilePath_ = vpnBean->ovpnCaCertFilePath_;
74 openvpnConfig->ovpnUserCertFilePath_ = vpnBean->ovpnUserCertFilePath_;
75 openvpnConfig->ovpnPrivateKeyFilePath_ = vpnBean->ovpnPrivateKeyFilePath_;
76
77 return openvpnConfig;
78 }
79
ConvertVpnBeanToIpsecVpnConfig(sptr<VpnDataBean> &vpnBean)80 sptr<IpsecVpnConfig> VpnDataBean::ConvertVpnBeanToIpsecVpnConfig(sptr<VpnDataBean> &vpnBean)
81 {
82 if (vpnBean == nullptr) {
83 NETMGR_EXT_LOG_E("ConvertVpnBeanToIpsecVpnConfig vpnBean is null");
84 return nullptr;
85 }
86 sptr<IpsecVpnConfig> ipsecVpnConfig = new (std::nothrow) IpsecVpnConfig();
87 sptr<INetAddr> netAddr = new (std::nothrow) INetAddr();
88 if (ipsecVpnConfig == nullptr || netAddr == nullptr) {
89 NETMGR_EXT_LOG_E("ConvertVpnBeanToIpsecVpnConfig ipsecVpnConfig or netAddr is null");
90 return nullptr;
91 }
92 ipsecVpnConfig->vpnId_ = vpnBean->vpnId_;
93 ipsecVpnConfig->vpnName_ = vpnBean->vpnName_;
94 ipsecVpnConfig->vpnType_ = vpnBean->vpnType_;
95 netAddr->address_ = vpnBean->vpnAddress_;
96 ipsecVpnConfig->addresses_.push_back(*netAddr);
97 ipsecVpnConfig->userName_ = vpnBean->userName_;
98 ipsecVpnConfig->password_ = vpnBean->password_;
99 ipsecVpnConfig->userId_ = vpnBean->userId_;
100 ipsecVpnConfig->isLegacy_ = (vpnBean->isLegacy_) == 1;
101 ipsecVpnConfig->saveLogin_ = (vpnBean->saveLogin_) == 1;
102 ipsecVpnConfig->forwardingRoutes_ = vpnBean->forwardingRoutes_;
103 ipsecVpnConfig->dnsAddresses_.push_back(vpnBean->dnsAddresses_);
104 ipsecVpnConfig->searchDomains_.push_back(vpnBean->searchDomains_);
105
106 ipsecVpnConfig->ipsecPreSharedKey_ = vpnBean->ipsecPreSharedKey_;
107 ipsecVpnConfig->ipsecIdentifier_ = vpnBean->ipsecIdentifier_;
108 ipsecVpnConfig->swanctlConf_ = vpnBean->swanctlConf_;
109 ipsecVpnConfig->strongswanConf_ = vpnBean->strongswanConf_;
110 ipsecVpnConfig->ipsecCaCertConf_ = vpnBean->ipsecCaCertConf_;
111 ipsecVpnConfig->ipsecPrivateUserCertConf_ = vpnBean->ipsecPrivateUserCertConf_;
112 ipsecVpnConfig->ipsecPublicUserCertConf_ = vpnBean->ipsecPublicUserCertConf_;
113 ipsecVpnConfig->ipsecPrivateServerCertConf_ = vpnBean->ipsecPrivateServerCertConf_;
114 ipsecVpnConfig->ipsecPublicServerCertConf_ = vpnBean->ipsecPublicServerCertConf_;
115 ipsecVpnConfig->ipsecCaCertFilePath_ = vpnBean->ipsecCaCertFilePath_;
116 ipsecVpnConfig->ipsecPrivateUserCertFilePath_ = vpnBean->ipsecPrivateUserCertFilePath_;
117 ipsecVpnConfig->ipsecPublicUserCertFilePath_ = vpnBean->ipsecPublicUserCertFilePath_;
118 ipsecVpnConfig->ipsecPrivateServerCertFilePath_ = vpnBean->ipsecPrivateServerCertFilePath_;
119 ipsecVpnConfig->ipsecPublicServerCertFilePath_ = vpnBean->ipsecPublicServerCertFilePath_;
120 return ipsecVpnConfig;
121 }
122
ConvertVpnBeanToL2tpVpnConfig(sptr<VpnDataBean> &vpnBean)123 sptr<L2tpVpnConfig> VpnDataBean::ConvertVpnBeanToL2tpVpnConfig(sptr<VpnDataBean> &vpnBean)
124 {
125 if (vpnBean == nullptr) {
126 NETMGR_EXT_LOG_E("ConvertVpnBeanToL2tpVpnConfig vpnBean is null");
127 return nullptr;
128 }
129 sptr<L2tpVpnConfig> l2tpVpnConfig = new (std::nothrow) L2tpVpnConfig();
130 sptr<INetAddr> netAddr = new (std::nothrow) INetAddr();
131 if (l2tpVpnConfig == nullptr || netAddr == nullptr) {
132 NETMGR_EXT_LOG_E("ConvertVpnBeanToL2tpVpnConfig l2tpVpnConfig or netAddr is null");
133 return nullptr;
134 }
135 l2tpVpnConfig->vpnId_ = vpnBean->vpnId_;
136 l2tpVpnConfig->vpnName_ = vpnBean->vpnName_;
137 l2tpVpnConfig->vpnType_ = vpnBean->vpnType_;
138 netAddr->address_ = vpnBean->vpnAddress_;
139 l2tpVpnConfig->addresses_.push_back(*netAddr);
140 l2tpVpnConfig->userName_ = vpnBean->userName_;
141 l2tpVpnConfig->password_ = vpnBean->password_;
142 l2tpVpnConfig->userId_ = vpnBean->userId_;
143 l2tpVpnConfig->isLegacy_ = (vpnBean->isLegacy_) == 1;
144 l2tpVpnConfig->saveLogin_ = (vpnBean->saveLogin_) == 1;
145 l2tpVpnConfig->forwardingRoutes_ = vpnBean->forwardingRoutes_;
146 l2tpVpnConfig->dnsAddresses_.push_back(vpnBean->dnsAddresses_);
147 l2tpVpnConfig->searchDomains_.push_back(vpnBean->searchDomains_);
148
149 l2tpVpnConfig->ipsecPreSharedKey_ = vpnBean->ipsecPreSharedKey_;
150 l2tpVpnConfig->ipsecIdentifier_ = vpnBean->ipsecIdentifier_;
151 l2tpVpnConfig->strongswanConf_ = vpnBean->strongswanConf_;
152 l2tpVpnConfig->ipsecCaCertConf_ = vpnBean->ipsecCaCertConf_;
153 l2tpVpnConfig->ipsecPrivateUserCertConf_ = vpnBean->ipsecPrivateUserCertConf_;
154 l2tpVpnConfig->ipsecPublicUserCertConf_ = vpnBean->ipsecPublicUserCertConf_;
155 l2tpVpnConfig->ipsecPrivateServerCertConf_ = vpnBean->ipsecPrivateServerCertConf_;
156 l2tpVpnConfig->ipsecPublicServerCertConf_ = vpnBean->ipsecPublicServerCertConf_;
157 l2tpVpnConfig->ipsecCaCertFilePath_ = vpnBean->ipsecCaCertFilePath_;
158 l2tpVpnConfig->ipsecPrivateUserCertFilePath_ = vpnBean->ipsecPrivateUserCertFilePath_;
159 l2tpVpnConfig->ipsecPublicUserCertFilePath_ = vpnBean->ipsecPublicUserCertFilePath_;
160 l2tpVpnConfig->ipsecPrivateServerCertFilePath_ = vpnBean->ipsecPrivateServerCertFilePath_;
161 l2tpVpnConfig->ipsecPublicServerCertFilePath_ = vpnBean->ipsecPublicServerCertFilePath_;
162
163 l2tpVpnConfig->ipsecConf_ = vpnBean->ipsecConf_;
164 l2tpVpnConfig->ipsecSecrets_ = vpnBean->ipsecSecrets_;
165 l2tpVpnConfig->optionsL2tpdClient_ = vpnBean->optionsL2tpdClient_;
166 l2tpVpnConfig->xl2tpdConf_ = vpnBean->xl2tpdConf_;
167 l2tpVpnConfig->l2tpSharedKey_ = vpnBean->l2tpSharedKey_;
168 return l2tpVpnConfig;
169 }
170
ConvertSysVpnConfigToVpnBean(sptr<SysVpnConfig> &sysVpnConfig)171 sptr<VpnDataBean> VpnDataBean::ConvertSysVpnConfigToVpnBean(sptr<SysVpnConfig> &sysVpnConfig)
172 {
173 if (sysVpnConfig == nullptr) {
174 NETMGR_EXT_LOG_E("ConvertSysVpnConfigToVpnBean sysVpnConfig is null");
175 return nullptr;
176 }
177 sptr<VpnDataBean> vpnBean = new (std::nothrow) VpnDataBean();
178 if (vpnBean == nullptr) {
179 NETMGR_EXT_LOG_E("ConvertSysVpnConfigToVpnBean vpnBean is null");
180 return nullptr;
181 }
182 ConvertCommonVpnConfigToVpnBean(sysVpnConfig, vpnBean);
183 switch (sysVpnConfig->vpnType_) {
184 case VpnType::IKEV2_IPSEC_MSCHAPv2:
185 case VpnType::IKEV2_IPSEC_PSK:
186 case VpnType::IKEV2_IPSEC_RSA:
187 case VpnType::IPSEC_XAUTH_PSK:
188 case VpnType::IPSEC_XAUTH_RSA:
189 case VpnType::IPSEC_HYBRID_RSA:
190 ConvertIpsecVpnConfigToVpnBean(sysVpnConfig, vpnBean);
191 break;
192 case VpnType::L2TP_IPSEC_PSK:
193 case VpnType::L2TP_IPSEC_RSA:
194 ConvertL2tpVpnConfigToVpnBean(sysVpnConfig, vpnBean);
195 break;
196 case VpnType::OPENVPN:
197 ConvertOpenvpnConfigToVpnBean(sysVpnConfig, vpnBean);
198 break;
199 default:
200 NETMGR_EXT_LOG_E("ConvertSysVpnConfigToVpnBean proxy vpn type is error");
201 break;
202 }
203 return vpnBean;
204 }
205
ConvertCommonVpnConfigToVpnBean(sptr<SysVpnConfig> &sysVpnConfig, sptr<VpnDataBean> &vpnBean)206 void VpnDataBean::ConvertCommonVpnConfigToVpnBean(sptr<SysVpnConfig> &sysVpnConfig, sptr<VpnDataBean> &vpnBean)
207 {
208 if (vpnBean == nullptr || sysVpnConfig == nullptr) {
209 NETMGR_EXT_LOG_E("ConvertCommonVpnConfigToVpnBean params is null");
210 return;
211 }
212 vpnBean->vpnId_ = sysVpnConfig->vpnId_;
213 vpnBean->vpnName_ = sysVpnConfig->vpnName_;
214 vpnBean->vpnType_ = sysVpnConfig->vpnType_;
215 std::vector<INetAddr> addresses = sysVpnConfig->addresses_;
216 if (!addresses.empty()) {
217 vpnBean->vpnAddress_ = addresses[0].address_;
218 }
219 vpnBean->userName_ = sysVpnConfig->userName_;
220 vpnBean->password_ = sysVpnConfig->password_;
221 vpnBean->userId_ = sysVpnConfig->userId_;
222 vpnBean->isLegacy_ = sysVpnConfig->isLegacy_ ? 1 : 0;
223 vpnBean->saveLogin_ = sysVpnConfig->saveLogin_ ? 1 : 0;
224 vpnBean->forwardingRoutes_ = sysVpnConfig->forwardingRoutes_;
225 std::vector<std::string> dnsAddresses = sysVpnConfig->dnsAddresses_;
226 if (!dnsAddresses.empty()) {
227 vpnBean->dnsAddresses_ = dnsAddresses[0];
228 }
229 std::vector<std::string> searchDomains = sysVpnConfig->searchDomains_;
230 if (!searchDomains.empty()) {
231 vpnBean->searchDomains_ = searchDomains[0];
232 }
233 }
234
ConvertOpenvpnConfigToVpnBean(sptr<SysVpnConfig> sysVpnConfig, sptr<VpnDataBean> &vpnBean)235 void VpnDataBean::ConvertOpenvpnConfigToVpnBean(sptr<SysVpnConfig> sysVpnConfig, sptr<VpnDataBean> &vpnBean)
236 {
237 if (vpnBean == nullptr || sysVpnConfig == nullptr) {
238 NETMGR_EXT_LOG_E("ConvertOpenvpnConfigToVpnBean params is null");
239 return;
240 }
241 OpenvpnConfig *openvpnConfig = static_cast<OpenvpnConfig *>(sysVpnConfig.GetRefPtr());
242 if (openvpnConfig == nullptr) {
243 NETMGR_EXT_LOG_E("ConvertOpenvpnConfigToVpnBean openvpnConfig is null");
244 return;
245 }
246 vpnBean->ovpnPort_ = openvpnConfig->ovpnPort_;
247 vpnBean->ovpnProtocol_ = openvpnConfig->ovpnProtocol_;
248 vpnBean->ovpnConfig_ = openvpnConfig->ovpnConfig_;
249 vpnBean->ovpnAuthType_ = openvpnConfig->ovpnAuthType_;
250 vpnBean->askpass_ = openvpnConfig->askpass_;
251 vpnBean->ovpnConfigFilePath_ = openvpnConfig->ovpnConfigFilePath_;
252 vpnBean->ovpnCaCertFilePath_ = openvpnConfig->ovpnCaCertFilePath_;
253 vpnBean->ovpnUserCertFilePath_ = openvpnConfig->ovpnUserCertFilePath_;
254 vpnBean->ovpnPrivateKeyFilePath_ = openvpnConfig->ovpnPrivateKeyFilePath_;
255 openvpnConfig = nullptr;
256 }
257
ConvertIpsecVpnConfigToVpnBean(sptr<SysVpnConfig> sysVpnConfig, sptr<VpnDataBean> &vpnBean)258 void VpnDataBean::ConvertIpsecVpnConfigToVpnBean(sptr<SysVpnConfig> sysVpnConfig, sptr<VpnDataBean> &vpnBean)
259 {
260 if (vpnBean == nullptr || sysVpnConfig == nullptr) {
261 NETMGR_EXT_LOG_E("ConvertIpsecVpnConfigToVpnBean params is null");
262 return;
263 }
264 IpsecVpnConfig *ipsecVpnConfig = static_cast<IpsecVpnConfig *>(sysVpnConfig.GetRefPtr());
265 if (ipsecVpnConfig == nullptr) {
266 NETMGR_EXT_LOG_E("ConvertIpsecVpnConfigToVpnBean ipsecVpnConfig is null");
267 return;
268 }
269 vpnBean->ipsecPreSharedKey_ = ipsecVpnConfig->ipsecPreSharedKey_;
270 vpnBean->ipsecIdentifier_ = ipsecVpnConfig->ipsecIdentifier_;
271 vpnBean->swanctlConf_ = ipsecVpnConfig->swanctlConf_;
272 vpnBean->strongswanConf_ = ipsecVpnConfig->strongswanConf_;
273 vpnBean->ipsecCaCertConf_ = ipsecVpnConfig->ipsecCaCertConf_;
274 vpnBean->ipsecPrivateUserCertConf_ = ipsecVpnConfig->ipsecPrivateUserCertConf_;
275 vpnBean->ipsecPublicUserCertConf_ = ipsecVpnConfig->ipsecPublicUserCertConf_;
276 vpnBean->ipsecPrivateServerCertConf_ = ipsecVpnConfig->ipsecPrivateServerCertConf_;
277 vpnBean->ipsecPublicServerCertConf_ = ipsecVpnConfig->ipsecPublicServerCertConf_;
278 vpnBean->ipsecCaCertFilePath_ = ipsecVpnConfig->ipsecCaCertFilePath_;
279 vpnBean->ipsecPrivateUserCertFilePath_ = ipsecVpnConfig->ipsecPrivateUserCertFilePath_;
280 vpnBean->ipsecPublicUserCertFilePath_ = ipsecVpnConfig->ipsecPublicUserCertFilePath_;
281 vpnBean->ipsecPrivateServerCertFilePath_ = ipsecVpnConfig->ipsecPrivateServerCertFilePath_;
282 vpnBean->ipsecPublicServerCertFilePath_ = ipsecVpnConfig->ipsecPublicServerCertFilePath_;
283 ipsecVpnConfig = nullptr;
284 }
285
ConvertL2tpVpnConfigToVpnBean(sptr<SysVpnConfig> sysVpnConfig, sptr<VpnDataBean> &vpnBean)286 void VpnDataBean::ConvertL2tpVpnConfigToVpnBean(sptr<SysVpnConfig> sysVpnConfig, sptr<VpnDataBean> &vpnBean)
287 {
288 if (vpnBean == nullptr || sysVpnConfig == nullptr) {
289 NETMGR_EXT_LOG_E("ConvertL2tpVpnConfigToVpnBean params is null");
290 return;
291 }
292 L2tpVpnConfig *l2tpVpnConfig = static_cast<L2tpVpnConfig *>(sysVpnConfig.GetRefPtr());
293 if (l2tpVpnConfig == nullptr) {
294 NETMGR_EXT_LOG_E("ConvertL2tpVpnConfigToVpnBean l2tpVpnConfig is null");
295 return;
296 }
297 vpnBean->ipsecPreSharedKey_ = l2tpVpnConfig->ipsecPreSharedKey_;
298 vpnBean->ipsecIdentifier_ = l2tpVpnConfig->ipsecIdentifier_;
299 vpnBean->strongswanConf_ = l2tpVpnConfig->strongswanConf_;
300 vpnBean->ipsecCaCertConf_ = l2tpVpnConfig->ipsecCaCertConf_;
301 vpnBean->ipsecPrivateUserCertConf_ = l2tpVpnConfig->ipsecPrivateUserCertConf_;
302 vpnBean->ipsecPublicUserCertConf_ = l2tpVpnConfig->ipsecPublicUserCertConf_;
303 vpnBean->ipsecPrivateServerCertConf_ = l2tpVpnConfig->ipsecPrivateServerCertConf_;
304 vpnBean->ipsecPublicServerCertConf_ = l2tpVpnConfig->ipsecPublicServerCertConf_;
305 vpnBean->ipsecCaCertFilePath_ = l2tpVpnConfig->ipsecCaCertFilePath_;
306 vpnBean->ipsecPrivateUserCertFilePath_ = l2tpVpnConfig->ipsecPrivateUserCertFilePath_;
307 vpnBean->ipsecPublicUserCertFilePath_ = l2tpVpnConfig->ipsecPublicUserCertFilePath_;
308 vpnBean->ipsecPrivateServerCertFilePath_ = l2tpVpnConfig->ipsecPrivateServerCertFilePath_;
309 vpnBean->ipsecPublicServerCertFilePath_ = l2tpVpnConfig->ipsecPublicServerCertFilePath_;
310
311 vpnBean->ipsecConf_ = l2tpVpnConfig->ipsecConf_;
312 vpnBean->ipsecSecrets_ = l2tpVpnConfig->ipsecSecrets_;
313 vpnBean->optionsL2tpdClient_ = l2tpVpnConfig->optionsL2tpdClient_;
314 vpnBean->xl2tpdConf_ = l2tpVpnConfig->xl2tpdConf_;
315 vpnBean->l2tpSharedKey_ = l2tpVpnConfig->l2tpSharedKey_;
316 l2tpVpnConfig = nullptr;
317 }
318 } // namespace NetManagerStandard
319 } // namespace OHOS
320