• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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