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