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