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 static_cast<int32_t>(VpnType::IKEV2_IPSEC_MSCHAPv2):
30 case static_cast<int32_t>(VpnType::IKEV2_IPSEC_PSK):
31 case static_cast<int32_t>(VpnType::IKEV2_IPSEC_RSA):
32 case static_cast<int32_t>(VpnType::IPSEC_XAUTH_PSK):
33 case static_cast<int32_t>(VpnType::IPSEC_XAUTH_RSA):
34 case static_cast<int32_t>(VpnType::IPSEC_HYBRID_RSA):
35 return ConvertVpnBeanToIpsecVpnConfig(vpnBean);
36 case static_cast<int32_t>(VpnType::L2TP_IPSEC_PSK):
37 case static_cast<int32_t>(VpnType::L2TP_IPSEC_RSA):
38 return ConvertVpnBeanToL2tpVpnConfig(vpnBean);
39 default:
40 NETMGR_EXT_LOG_E("ConvertVpnBeanToSysVpnConfig failed, invalid type=%{public}d", vpnBean->vpnType_);
41 return nullptr;
42 }
43 }
44
ConvertVpnBeanToIpsecVpnConfig(sptr<VpnDataBean> & vpnBean)45 sptr<IpsecVpnConfig> VpnDataBean::ConvertVpnBeanToIpsecVpnConfig(sptr<VpnDataBean> &vpnBean)
46 {
47 if (vpnBean == nullptr) {
48 NETMGR_EXT_LOG_E("ConvertVpnBeanToIpsecVpnConfig vpnBean is null");
49 return nullptr;
50 }
51 sptr<IpsecVpnConfig> ipsecVpnConfig = new (std::nothrow) IpsecVpnConfig();
52 if (ipsecVpnConfig == nullptr) {
53 NETMGR_EXT_LOG_E("ConvertVpnBeanToIpsecVpnConfig ipsecVpnConfig is null");
54 return nullptr;
55 }
56 ipsecVpnConfig->vpnId_ = vpnBean->vpnId_;
57 ipsecVpnConfig->vpnName_ = vpnBean->vpnName_;
58 ipsecVpnConfig->vpnType_ = vpnBean->vpnType_;
59 sptr<INetAddr> netAddr = new (std::nothrow) INetAddr();
60 netAddr->address_ = vpnBean->vpnAddress_;
61 ipsecVpnConfig->addresses_.push_back(*netAddr);
62 ipsecVpnConfig->userName_ = vpnBean->userName_;
63 ipsecVpnConfig->password_ = vpnBean->password_;
64 ipsecVpnConfig->userId_ = vpnBean->userId_;
65 ipsecVpnConfig->isLegacy_ = (vpnBean->isLegacy_) == 1;
66 ipsecVpnConfig->saveLogin_ = (vpnBean->saveLogin_) == 1;
67 ipsecVpnConfig->forwardingRoutes_ = vpnBean->forwardingRoutes_;
68 ipsecVpnConfig->dnsAddresses_.push_back(vpnBean->dnsAddresses_);
69 ipsecVpnConfig->searchDomains_.push_back(vpnBean->searchDomains_);
70
71 ipsecVpnConfig->ipsecPreSharedKey_ = vpnBean->ipsecPreSharedKey_;
72 ipsecVpnConfig->ipsecIdentifier_ = vpnBean->ipsecIdentifier_;
73 ipsecVpnConfig->swanctlConf_ = vpnBean->swanctlConf_;
74 ipsecVpnConfig->strongswanConf_ = vpnBean->strongswanConf_;
75 ipsecVpnConfig->ipsecCaCertConf_ = vpnBean->ipsecCaCertConf_;
76 ipsecVpnConfig->ipsecPrivateUserCertConf_ = vpnBean->ipsecPrivateUserCertConf_;
77 ipsecVpnConfig->ipsecPublicUserCertConf_ = vpnBean->ipsecPublicUserCertConf_;
78 ipsecVpnConfig->ipsecPrivateServerCertConf_ = vpnBean->ipsecPrivateServerCertConf_;
79 ipsecVpnConfig->ipsecPublicServerCertConf_ = vpnBean->ipsecPublicServerCertConf_;
80 ipsecVpnConfig->ipsecCaCertFilePath_ = vpnBean->ipsecCaCertFilePath_;
81 ipsecVpnConfig->ipsecPrivateUserCertFilePath_ = vpnBean->ipsecPrivateUserCertFilePath_;
82 ipsecVpnConfig->ipsecPublicUserCertFilePath_ = vpnBean->ipsecPublicUserCertFilePath_;
83 ipsecVpnConfig->ipsecPrivateServerCertFilePath_ = vpnBean->ipsecPrivateServerCertFilePath_;
84 ipsecVpnConfig->ipsecPublicServerCertFilePath_ = vpnBean->ipsecPublicServerCertFilePath_;
85
86 return ipsecVpnConfig;
87 }
88
ConvertVpnBeanToL2tpVpnConfig(sptr<VpnDataBean> & vpnBean)89 sptr<L2tpVpnConfig> VpnDataBean::ConvertVpnBeanToL2tpVpnConfig(sptr<VpnDataBean> &vpnBean)
90 {
91 if (vpnBean == nullptr) {
92 NETMGR_EXT_LOG_E("ConvertVpnBeanToL2tpVpnConfig vpnBean is null");
93 return nullptr;
94 }
95 sptr<L2tpVpnConfig> l2tpVpnConfig = new (std::nothrow) L2tpVpnConfig();
96 if (l2tpVpnConfig == nullptr) {
97 NETMGR_EXT_LOG_E("ConvertVpnBeanToL2tpVpnConfig l2tpVpnConfig is null");
98 return nullptr;
99 }
100 l2tpVpnConfig->vpnId_ = vpnBean->vpnId_;
101 l2tpVpnConfig->vpnName_ = vpnBean->vpnName_;
102 l2tpVpnConfig->vpnType_ = vpnBean->vpnType_;
103 sptr<INetAddr> netAddr = new (std::nothrow) INetAddr();
104 netAddr->address_ = vpnBean->vpnAddress_;
105 l2tpVpnConfig->addresses_.push_back(*netAddr);
106 l2tpVpnConfig->userName_ = vpnBean->userName_;
107 l2tpVpnConfig->password_ = vpnBean->password_;
108 l2tpVpnConfig->userId_ = vpnBean->userId_;
109 l2tpVpnConfig->isLegacy_ = (vpnBean->isLegacy_) == 1;
110 l2tpVpnConfig->saveLogin_ = (vpnBean->saveLogin_) == 1;
111 l2tpVpnConfig->forwardingRoutes_ = vpnBean->forwardingRoutes_;
112 l2tpVpnConfig->dnsAddresses_.push_back(vpnBean->dnsAddresses_);
113 l2tpVpnConfig->searchDomains_.push_back(vpnBean->searchDomains_);
114
115 l2tpVpnConfig->ipsecPreSharedKey_ = vpnBean->ipsecPreSharedKey_;
116 l2tpVpnConfig->ipsecIdentifier_ = vpnBean->ipsecIdentifier_;
117 l2tpVpnConfig->strongswanConf_ = vpnBean->strongswanConf_;
118 l2tpVpnConfig->ipsecCaCertConf_ = vpnBean->ipsecCaCertConf_;
119 l2tpVpnConfig->ipsecPrivateUserCertConf_ = vpnBean->ipsecPrivateUserCertConf_;
120 l2tpVpnConfig->ipsecPublicUserCertConf_ = vpnBean->ipsecPublicUserCertConf_;
121 l2tpVpnConfig->ipsecPrivateServerCertConf_ = vpnBean->ipsecPrivateServerCertConf_;
122 l2tpVpnConfig->ipsecPublicServerCertConf_ = vpnBean->ipsecPublicServerCertConf_;
123 l2tpVpnConfig->ipsecCaCertFilePath_ = vpnBean->ipsecCaCertFilePath_;
124 l2tpVpnConfig->ipsecPrivateUserCertFilePath_ = vpnBean->ipsecPrivateUserCertFilePath_;
125 l2tpVpnConfig->ipsecPublicUserCertFilePath_ = vpnBean->ipsecPublicUserCertFilePath_;
126 l2tpVpnConfig->ipsecPrivateServerCertFilePath_ = vpnBean->ipsecPrivateServerCertFilePath_;
127 l2tpVpnConfig->ipsecPublicServerCertFilePath_ = vpnBean->ipsecPublicServerCertFilePath_;
128
129 l2tpVpnConfig->ipsecConf_ = vpnBean->ipsecConf_;
130 l2tpVpnConfig->ipsecSecrets_ = vpnBean->ipsecSecrets_;
131 l2tpVpnConfig->optionsL2tpdClient_ = vpnBean->optionsL2tpdClient_;
132 l2tpVpnConfig->xl2tpdConf_ = vpnBean->xl2tpdConf_;
133 l2tpVpnConfig->l2tpSharedKey_ = vpnBean->l2tpSharedKey_;
134
135 return l2tpVpnConfig;
136 }
137
ConvertSysVpnConfigToVpnBean(sptr<SysVpnConfig> & sysVpnConfig)138 sptr<VpnDataBean> VpnDataBean::ConvertSysVpnConfigToVpnBean(sptr<SysVpnConfig> &sysVpnConfig)
139 {
140 if (sysVpnConfig == nullptr) {
141 NETMGR_EXT_LOG_E("ConvertSysVpnConfigToVpnBean sysVpnConfig is null");
142 return nullptr;
143 }
144 sptr<VpnDataBean> vpnBean = new (std::nothrow) VpnDataBean();
145 if (vpnBean == nullptr) {
146 NETMGR_EXT_LOG_E("ConvertSysVpnConfigToVpnBean vpnBean is null");
147 return nullptr;
148 }
149 ConvertCommonVpnConfigToVpnBean(sysVpnConfig, vpnBean);
150 sptr<IpsecVpnConfig> ipsecVpnConfig;
151 sptr<L2tpVpnConfig> l2tpVpnConfig;
152 switch (sysVpnConfig->vpnType_) {
153 case static_cast<int32_t>(VpnType::IKEV2_IPSEC_MSCHAPv2):
154 case static_cast<int32_t>(VpnType::IKEV2_IPSEC_PSK):
155 case static_cast<int32_t>(VpnType::IKEV2_IPSEC_RSA):
156 case static_cast<int32_t>(VpnType::IPSEC_XAUTH_PSK):
157 case static_cast<int32_t>(VpnType::IPSEC_XAUTH_RSA):
158 case static_cast<int32_t>(VpnType::IPSEC_HYBRID_RSA):
159 ipsecVpnConfig = sptr<IpsecVpnConfig>(static_cast<IpsecVpnConfig *>(sysVpnConfig.GetRefPtr()));
160 ConvertIpsecVpnConfigToVpnBean(ipsecVpnConfig, vpnBean);
161 break;
162 case static_cast<int32_t>(VpnType::L2TP_IPSEC_PSK):
163 case static_cast<int32_t>(VpnType::L2TP_IPSEC_RSA):
164 l2tpVpnConfig = sptr<L2tpVpnConfig>(static_cast<L2tpVpnConfig *>(sysVpnConfig.GetRefPtr()));
165 ConvertL2tpVpnConfigToVpnBean(l2tpVpnConfig, vpnBean);
166 break;
167 default:
168 NETMGR_EXT_LOG_E("ConvertSysVpnConfigToVpnBean proxy vpn type is error");
169 break;
170 }
171 return vpnBean;
172 }
173
ConvertCommonVpnConfigToVpnBean(sptr<SysVpnConfig> & sysVpnConfig,sptr<VpnDataBean> & vpnBean)174 void VpnDataBean::ConvertCommonVpnConfigToVpnBean(sptr<SysVpnConfig> &sysVpnConfig, sptr<VpnDataBean> &vpnBean)
175 {
176 if (vpnBean == nullptr || sysVpnConfig == nullptr) {
177 NETMGR_EXT_LOG_E("ConvertCommonVpnConfigToVpnBean params is null");
178 return;
179 }
180 vpnBean->vpnId_ = sysVpnConfig->vpnId_;
181 vpnBean->vpnName_ = sysVpnConfig->vpnName_;
182 vpnBean->vpnType_ = sysVpnConfig->vpnType_;
183 std::vector<INetAddr> addresses = sysVpnConfig->addresses_;
184 if (!addresses.empty()) {
185 vpnBean->vpnAddress_ = addresses[0].address_;
186 }
187 vpnBean->userName_ = sysVpnConfig->userName_;
188 vpnBean->password_ = sysVpnConfig->password_;
189 vpnBean->userId_ = sysVpnConfig->userId_;
190 vpnBean->isLegacy_ = sysVpnConfig->isLegacy_ ? 1 : 0;
191 vpnBean->saveLogin_ = sysVpnConfig->saveLogin_ ? 1 : 0;
192 vpnBean->forwardingRoutes_ = sysVpnConfig->forwardingRoutes_;
193 std::vector<std::string> dnsAddresses = sysVpnConfig->dnsAddresses_;
194 if (!dnsAddresses.empty()) {
195 vpnBean->dnsAddresses_ = dnsAddresses[0];
196 }
197 std::vector<std::string> searchDomains = sysVpnConfig->searchDomains_;
198 if (!searchDomains.empty()) {
199 vpnBean->searchDomains_ = searchDomains[0];
200 }
201 }
ConvertIpsecVpnConfigToVpnBean(sptr<IpsecVpnConfig> & ipsecVpnConfig,sptr<VpnDataBean> & vpnBean)202 void VpnDataBean::ConvertIpsecVpnConfigToVpnBean(sptr<IpsecVpnConfig> &ipsecVpnConfig, sptr<VpnDataBean> &vpnBean)
203 {
204 if (vpnBean == nullptr || ipsecVpnConfig == nullptr) {
205 NETMGR_EXT_LOG_E("ConvertIpsecVpnConfigToVpnBean params is null");
206 return;
207 }
208 vpnBean->ipsecPreSharedKey_ = ipsecVpnConfig->ipsecPreSharedKey_;
209 vpnBean->ipsecIdentifier_ = ipsecVpnConfig->ipsecIdentifier_;
210 vpnBean->swanctlConf_ = ipsecVpnConfig->swanctlConf_;
211 vpnBean->strongswanConf_ = ipsecVpnConfig->strongswanConf_;
212 vpnBean->ipsecCaCertConf_ = ipsecVpnConfig->ipsecCaCertConf_;
213 vpnBean->ipsecPrivateUserCertConf_ = ipsecVpnConfig->ipsecPrivateUserCertConf_;
214 vpnBean->ipsecPublicUserCertConf_ = ipsecVpnConfig->ipsecPublicUserCertConf_;
215 vpnBean->ipsecPrivateServerCertConf_ = ipsecVpnConfig->ipsecPrivateServerCertConf_;
216 vpnBean->ipsecPublicServerCertConf_ = ipsecVpnConfig->ipsecPublicServerCertConf_;
217 vpnBean->ipsecCaCertFilePath_ = ipsecVpnConfig->ipsecCaCertFilePath_;
218 vpnBean->ipsecPrivateUserCertFilePath_ = ipsecVpnConfig->ipsecPrivateUserCertFilePath_;
219 vpnBean->ipsecPublicUserCertFilePath_ = ipsecVpnConfig->ipsecPublicUserCertFilePath_;
220 vpnBean->ipsecPrivateServerCertFilePath_ = ipsecVpnConfig->ipsecPrivateServerCertFilePath_;
221 vpnBean->ipsecPublicServerCertFilePath_ = ipsecVpnConfig->ipsecPublicServerCertFilePath_;
222 }
223
ConvertL2tpVpnConfigToVpnBean(sptr<L2tpVpnConfig> & l2tpVpnConfig,sptr<VpnDataBean> & vpnBean)224 void VpnDataBean::ConvertL2tpVpnConfigToVpnBean(sptr<L2tpVpnConfig> &l2tpVpnConfig, sptr<VpnDataBean> &vpnBean)
225 {
226 if (vpnBean == nullptr || l2tpVpnConfig == nullptr) {
227 NETMGR_EXT_LOG_E("ConvertL2tpVpnConfigToVpnBean params is null");
228 return;
229 }
230 vpnBean->ipsecPreSharedKey_ = l2tpVpnConfig->ipsecPreSharedKey_;
231 vpnBean->ipsecIdentifier_ = l2tpVpnConfig->ipsecIdentifier_;
232 vpnBean->strongswanConf_ = l2tpVpnConfig->strongswanConf_;
233 vpnBean->ipsecCaCertConf_ = l2tpVpnConfig->ipsecCaCertConf_;
234 vpnBean->ipsecPrivateUserCertConf_ = l2tpVpnConfig->ipsecPrivateUserCertConf_;
235 vpnBean->ipsecPublicUserCertConf_ = l2tpVpnConfig->ipsecPublicUserCertConf_;
236 vpnBean->ipsecPrivateServerCertConf_ = l2tpVpnConfig->ipsecPrivateServerCertConf_;
237 vpnBean->ipsecPublicServerCertConf_ = l2tpVpnConfig->ipsecPublicServerCertConf_;
238 vpnBean->ipsecCaCertFilePath_ = l2tpVpnConfig->ipsecCaCertFilePath_;
239 vpnBean->ipsecPrivateUserCertFilePath_ = l2tpVpnConfig->ipsecPrivateUserCertFilePath_;
240 vpnBean->ipsecPublicUserCertFilePath_ = l2tpVpnConfig->ipsecPublicUserCertFilePath_;
241 vpnBean->ipsecPrivateServerCertFilePath_ = l2tpVpnConfig->ipsecPrivateServerCertFilePath_;
242 vpnBean->ipsecPublicServerCertFilePath_ = l2tpVpnConfig->ipsecPublicServerCertFilePath_;
243
244 vpnBean->ipsecConf_ = l2tpVpnConfig->ipsecConf_;
245 vpnBean->ipsecSecrets_ = l2tpVpnConfig->ipsecSecrets_;
246 vpnBean->optionsL2tpdClient_ = l2tpVpnConfig->optionsL2tpdClient_;
247 vpnBean->xl2tpdConf_ = l2tpVpnConfig->xl2tpdConf_;
248 vpnBean->l2tpSharedKey_ = l2tpVpnConfig->l2tpSharedKey_;
249 }
250 } // namespace NetManagerStandard
251 } // namespace OHOS
252