* Copyright (c) 2024 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "vpn_data_bean.h"
#include "netmgr_ext_log_wrapper.h"
#include "net_manager_ext_constants.h"
namespace OHOS {
namespace NetManagerStandard {
sptr<SysVpnConfig> VpnDataBean::ConvertVpnBeanToSysVpnConfig(sptr<VpnDataBean> &vpnBean)
{
if (vpnBean == nullptr) {
NETMGR_EXT_LOG_E("ConvertVpnBeanToSysVpnConfig vpnBean is null");
return nullptr;
}
switch (vpnBean->vpnType_) {
case VpnType::IKEV2_IPSEC_MSCHAPv2:
case VpnType::IKEV2_IPSEC_PSK:
case VpnType::IKEV2_IPSEC_RSA:
case VpnType::IPSEC_XAUTH_PSK:
case VpnType::IPSEC_XAUTH_RSA:
case VpnType::IPSEC_HYBRID_RSA:
return ConvertVpnBeanToIpsecVpnConfig(vpnBean);
case VpnType::OPENVPN:
return ConvertVpnBeanToOpenvpnConfig(vpnBean);
case VpnType::L2TP:
case VpnType::L2TP_IPSEC_PSK:
case VpnType::L2TP_IPSEC_RSA:
return ConvertVpnBeanToL2tpVpnConfig(vpnBean);
default:
NETMGR_EXT_LOG_E("ConvertVpnBeanToSysVpnConfig failed, invalid type=%{public}d", vpnBean->vpnType_);
return nullptr;
}
}
sptr<OpenvpnConfig> VpnDataBean::ConvertVpnBeanToOpenvpnConfig(sptr<VpnDataBean> vpnBean)
{
if (vpnBean == nullptr) {
NETMGR_EXT_LOG_E("ConvertVpnBeanToOpenvpnConfig vpnBean is null");
return nullptr;
}
sptr<OpenvpnConfig> openvpnConfig = new (std::nothrow) OpenvpnConfig();
if (openvpnConfig == nullptr) {
NETMGR_EXT_LOG_E("ConvertVpnBeanToOpenvpnConfig openvpnConfig is null");
return nullptr;
}
openvpnConfig->vpnId_ = vpnBean->vpnId_;
openvpnConfig->vpnName_ = vpnBean->vpnName_;
openvpnConfig->vpnType_ = vpnBean->vpnType_;
openvpnConfig->userName_ = vpnBean->userName_;
openvpnConfig->password_ = vpnBean->password_;
openvpnConfig->userId_ = vpnBean->userId_;
openvpnConfig->isLegacy_ = (vpnBean->isLegacy_) == 1;
openvpnConfig->saveLogin_ = (vpnBean->saveLogin_) == 1;
openvpnConfig->ovpnPort_ = vpnBean->ovpnPort_;
openvpnConfig->ovpnProtocol_ = vpnBean->ovpnProtocol_;
openvpnConfig->ovpnConfig_ = vpnBean->ovpnConfig_;
openvpnConfig->ovpnAuthType_ = vpnBean->ovpnAuthType_;
openvpnConfig->askpass_ = vpnBean->askpass_;
openvpnConfig->ovpnConfigFilePath_ = vpnBean->ovpnConfigFilePath_;
openvpnConfig->ovpnCaCertFilePath_ = vpnBean->ovpnCaCertFilePath_;
openvpnConfig->ovpnUserCertFilePath_ = vpnBean->ovpnUserCertFilePath_;
openvpnConfig->ovpnPrivateKeyFilePath_ = vpnBean->ovpnPrivateKeyFilePath_;
if (!vpnBean->remoteAddr_.empty()) {
openvpnConfig->remoteAddresses_.push_back(vpnBean->remoteAddr_);
}
return openvpnConfig;
}
sptr<IpsecVpnConfig> VpnDataBean::ConvertVpnBeanToIpsecVpnConfig(sptr<VpnDataBean> &vpnBean)
{
if (vpnBean == nullptr) {
NETMGR_EXT_LOG_E("ConvertVpnBeanToIpsecVpnConfig vpnBean is null");
return nullptr;
}
sptr<IpsecVpnConfig> ipsecVpnConfig = new (std::nothrow) IpsecVpnConfig();
sptr<INetAddr> netAddr = new (std::nothrow) INetAddr();
if (ipsecVpnConfig == nullptr || netAddr == nullptr) {
NETMGR_EXT_LOG_E("ConvertVpnBeanToIpsecVpnConfig ipsecVpnConfig or netAddr is null");
return nullptr;
}
ipsecVpnConfig->vpnId_ = vpnBean->vpnId_;
ipsecVpnConfig->vpnName_ = vpnBean->vpnName_;
ipsecVpnConfig->vpnType_ = vpnBean->vpnType_;
netAddr->address_ = vpnBean->vpnAddress_;
ipsecVpnConfig->addresses_.push_back(*netAddr);
ipsecVpnConfig->userName_ = vpnBean->userName_;
ipsecVpnConfig->password_ = vpnBean->password_;
ipsecVpnConfig->userId_ = vpnBean->userId_;
ipsecVpnConfig->isLegacy_ = (vpnBean->isLegacy_) == 1;
ipsecVpnConfig->saveLogin_ = (vpnBean->saveLogin_) == 1;
ipsecVpnConfig->forwardingRoutes_ = vpnBean->forwardingRoutes_;
ipsecVpnConfig->dnsAddresses_.push_back(vpnBean->dnsAddresses_);
ipsecVpnConfig->searchDomains_.push_back(vpnBean->searchDomains_);
ipsecVpnConfig->ipsecPreSharedKey_ = vpnBean->ipsecPreSharedKey_;
ipsecVpnConfig->ipsecIdentifier_ = vpnBean->ipsecIdentifier_;
ipsecVpnConfig->ipsecCaCertConf_ = vpnBean->ipsecCaCertConf_;
ipsecVpnConfig->ipsecPrivateUserCertConf_ = vpnBean->ipsecPrivateUserCertConf_;
ipsecVpnConfig->ipsecPublicUserCertConf_ = vpnBean->ipsecPublicUserCertConf_;
ipsecVpnConfig->ipsecPrivateServerCertConf_ = vpnBean->ipsecPrivateServerCertConf_;
ipsecVpnConfig->ipsecPublicServerCertConf_ = vpnBean->ipsecPublicServerCertConf_;
ipsecVpnConfig->ipsecCaCertFilePath_ = vpnBean->ipsecCaCertFilePath_;
ipsecVpnConfig->ipsecPrivateUserCertFilePath_ = vpnBean->ipsecPrivateUserCertFilePath_;
ipsecVpnConfig->ipsecPublicUserCertFilePath_ = vpnBean->ipsecPublicUserCertFilePath_;
ipsecVpnConfig->ipsecPrivateServerCertFilePath_ = vpnBean->ipsecPrivateServerCertFilePath_;
ipsecVpnConfig->ipsecPublicServerCertFilePath_ = vpnBean->ipsecPublicServerCertFilePath_;
if (!vpnBean->remoteAddr_.empty()) {
ipsecVpnConfig->remoteAddresses_.push_back(vpnBean->remoteAddr_);
}
return ipsecVpnConfig;
}
sptr<L2tpVpnConfig> VpnDataBean::ConvertVpnBeanToL2tpVpnConfig(sptr<VpnDataBean> &vpnBean)
{
if (vpnBean == nullptr) {
NETMGR_EXT_LOG_E("ConvertVpnBeanToL2tpVpnConfig vpnBean is null");
return nullptr;
}
sptr<L2tpVpnConfig> l2tpVpnConfig = new (std::nothrow) L2tpVpnConfig();
sptr<INetAddr> netAddr = new (std::nothrow) INetAddr();
if (l2tpVpnConfig == nullptr || netAddr == nullptr) {
NETMGR_EXT_LOG_E("ConvertVpnBeanToL2tpVpnConfig l2tpVpnConfig or netAddr is null");
return nullptr;
}
l2tpVpnConfig->vpnId_ = vpnBean->vpnId_;
l2tpVpnConfig->vpnName_ = vpnBean->vpnName_;
l2tpVpnConfig->vpnType_ = vpnBean->vpnType_;
netAddr->address_ = vpnBean->vpnAddress_;
l2tpVpnConfig->addresses_.push_back(*netAddr);
l2tpVpnConfig->userName_ = vpnBean->userName_;
l2tpVpnConfig->password_ = vpnBean->password_;
l2tpVpnConfig->userId_ = vpnBean->userId_;
l2tpVpnConfig->isLegacy_ = (vpnBean->isLegacy_) == 1;
l2tpVpnConfig->saveLogin_ = (vpnBean->saveLogin_) == 1;
l2tpVpnConfig->forwardingRoutes_ = vpnBean->forwardingRoutes_;
l2tpVpnConfig->dnsAddresses_.push_back(vpnBean->dnsAddresses_);
l2tpVpnConfig->searchDomains_.push_back(vpnBean->searchDomains_);
l2tpVpnConfig->ipsecPreSharedKey_ = vpnBean->ipsecPreSharedKey_;
l2tpVpnConfig->ipsecIdentifier_ = vpnBean->ipsecIdentifier_;
l2tpVpnConfig->ipsecCaCertConf_ = vpnBean->ipsecCaCertConf_;
l2tpVpnConfig->ipsecPrivateUserCertConf_ = vpnBean->ipsecPrivateUserCertConf_;
l2tpVpnConfig->ipsecPublicUserCertConf_ = vpnBean->ipsecPublicUserCertConf_;
l2tpVpnConfig->ipsecPrivateServerCertConf_ = vpnBean->ipsecPrivateServerCertConf_;
l2tpVpnConfig->ipsecPublicServerCertConf_ = vpnBean->ipsecPublicServerCertConf_;
l2tpVpnConfig->ipsecCaCertFilePath_ = vpnBean->ipsecCaCertFilePath_;
l2tpVpnConfig->ipsecPrivateUserCertFilePath_ = vpnBean->ipsecPrivateUserCertFilePath_;
l2tpVpnConfig->ipsecPublicUserCertFilePath_ = vpnBean->ipsecPublicUserCertFilePath_;
l2tpVpnConfig->ipsecPrivateServerCertFilePath_ = vpnBean->ipsecPrivateServerCertFilePath_;
l2tpVpnConfig->ipsecPublicServerCertFilePath_ = vpnBean->ipsecPublicServerCertFilePath_;
l2tpVpnConfig->l2tpSharedKey_ = vpnBean->l2tpSharedKey_;
if (!vpnBean->remoteAddr_.empty()) {
l2tpVpnConfig->remoteAddresses_.push_back(vpnBean->remoteAddr_);
}
return l2tpVpnConfig;
}
sptr<VpnDataBean> VpnDataBean::ConvertSysVpnConfigToVpnBean(const sptr<SysVpnConfig> &sysVpnConfig)
{
if (sysVpnConfig == nullptr) {
NETMGR_EXT_LOG_E("ConvertSysVpnConfigToVpnBean sysVpnConfig is null");
return nullptr;
}
sptr<VpnDataBean> vpnBean = new (std::nothrow) VpnDataBean();
if (vpnBean == nullptr) {
NETMGR_EXT_LOG_E("ConvertSysVpnConfigToVpnBean vpnBean is null");
return nullptr;
}
ConvertCommonVpnConfigToVpnBean(sysVpnConfig, vpnBean);
switch (sysVpnConfig->vpnType_) {
case VpnType::IKEV2_IPSEC_MSCHAPv2:
case VpnType::IKEV2_IPSEC_PSK:
case VpnType::IKEV2_IPSEC_RSA:
case VpnType::IPSEC_XAUTH_PSK:
case VpnType::IPSEC_XAUTH_RSA:
case VpnType::IPSEC_HYBRID_RSA:
ConvertIpsecVpnConfigToVpnBean(sysVpnConfig, vpnBean);
break;
case VpnType::L2TP:
case VpnType::L2TP_IPSEC_PSK:
case VpnType::L2TP_IPSEC_RSA:
ConvertL2tpVpnConfigToVpnBean(sysVpnConfig, vpnBean);
break;
case VpnType::OPENVPN:
ConvertOpenvpnConfigToVpnBean(sysVpnConfig, vpnBean);
break;
default:
NETMGR_EXT_LOG_E("ConvertSysVpnConfigToVpnBean proxy vpn type is error");
break;
}
return vpnBean;
}
void VpnDataBean::ConvertCommonVpnConfigToVpnBean(const sptr<SysVpnConfig> &sysVpnConfig, sptr<VpnDataBean> &vpnBean)
{
if (vpnBean == nullptr || sysVpnConfig == nullptr) {
NETMGR_EXT_LOG_E("ConvertCommonVpnConfigToVpnBean params is null");
return;
}
vpnBean->vpnId_ = sysVpnConfig->vpnId_;
vpnBean->vpnName_ = sysVpnConfig->vpnName_;
vpnBean->vpnType_ = sysVpnConfig->vpnType_;
std::vector<INetAddr> addresses = sysVpnConfig->addresses_;
if (!addresses.empty()) {
vpnBean->vpnAddress_ = addresses[0].address_;
}
if (!sysVpnConfig->remoteAddresses_.empty()) {
vpnBean->remoteAddr_ = sysVpnConfig->remoteAddresses_[0];
}
vpnBean->userName_ = sysVpnConfig->userName_;
vpnBean->password_ = sysVpnConfig->password_;
vpnBean->userId_ = sysVpnConfig->userId_;
vpnBean->isLegacy_ = sysVpnConfig->isLegacy_ ? 1 : 0;
vpnBean->saveLogin_ = sysVpnConfig->saveLogin_ ? 1 : 0;
vpnBean->forwardingRoutes_ = sysVpnConfig->forwardingRoutes_;
std::vector<std::string> dnsAddresses = sysVpnConfig->dnsAddresses_;
if (!dnsAddresses.empty()) {
vpnBean->dnsAddresses_ = dnsAddresses[0];
}
std::vector<std::string> searchDomains = sysVpnConfig->searchDomains_;
if (!searchDomains.empty()) {
vpnBean->searchDomains_ = searchDomains[0];
}
}
void VpnDataBean::ConvertOpenvpnConfigToVpnBean(const sptr<SysVpnConfig> sysVpnConfig, sptr<VpnDataBean> &vpnBean)
{
if (vpnBean == nullptr || sysVpnConfig == nullptr) {
NETMGR_EXT_LOG_E("ConvertOpenvpnConfigToVpnBean params is null");
return;
}
OpenvpnConfig *openvpnConfig = static_cast<OpenvpnConfig *>(sysVpnConfig.GetRefPtr());
if (openvpnConfig == nullptr) {
NETMGR_EXT_LOG_E("ConvertOpenvpnConfigToVpnBean openvpnConfig is null");
return;
}
vpnBean->ovpnPort_ = openvpnConfig->ovpnPort_;
vpnBean->ovpnProtocol_ = openvpnConfig->ovpnProtocol_;
vpnBean->ovpnConfig_ = openvpnConfig->ovpnConfig_;
vpnBean->ovpnAuthType_ = openvpnConfig->ovpnAuthType_;
vpnBean->askpass_ = openvpnConfig->askpass_;
vpnBean->ovpnConfigFilePath_ = openvpnConfig->ovpnConfigFilePath_;
vpnBean->ovpnCaCertFilePath_ = openvpnConfig->ovpnCaCertFilePath_;
vpnBean->ovpnUserCertFilePath_ = openvpnConfig->ovpnUserCertFilePath_;
vpnBean->ovpnPrivateKeyFilePath_ = openvpnConfig->ovpnPrivateKeyFilePath_;
openvpnConfig = nullptr;
}
void VpnDataBean::ConvertIpsecVpnConfigToVpnBean(const sptr<SysVpnConfig> sysVpnConfig, sptr<VpnDataBean> &vpnBean)
{
if (vpnBean == nullptr || sysVpnConfig == nullptr) {
NETMGR_EXT_LOG_E("ConvertIpsecVpnConfigToVpnBean params is null");
return;
}
IpsecVpnConfig *ipsecVpnConfig = static_cast<IpsecVpnConfig *>(sysVpnConfig.GetRefPtr());
if (ipsecVpnConfig == nullptr) {
NETMGR_EXT_LOG_E("ConvertIpsecVpnConfigToVpnBean ipsecVpnConfig is null");
return;
}
vpnBean->ipsecPreSharedKey_ = ipsecVpnConfig->ipsecPreSharedKey_;
vpnBean->ipsecIdentifier_ = ipsecVpnConfig->ipsecIdentifier_;
vpnBean->ipsecCaCertConf_ = ipsecVpnConfig->ipsecCaCertConf_;
vpnBean->ipsecPrivateUserCertConf_ = ipsecVpnConfig->ipsecPrivateUserCertConf_;
vpnBean->ipsecPublicUserCertConf_ = ipsecVpnConfig->ipsecPublicUserCertConf_;
vpnBean->ipsecPrivateServerCertConf_ = ipsecVpnConfig->ipsecPrivateServerCertConf_;
vpnBean->ipsecPublicServerCertConf_ = ipsecVpnConfig->ipsecPublicServerCertConf_;
vpnBean->ipsecCaCertFilePath_ = ipsecVpnConfig->ipsecCaCertFilePath_;
vpnBean->ipsecPrivateUserCertFilePath_ = ipsecVpnConfig->ipsecPrivateUserCertFilePath_;
vpnBean->ipsecPublicUserCertFilePath_ = ipsecVpnConfig->ipsecPublicUserCertFilePath_;
vpnBean->ipsecPrivateServerCertFilePath_ = ipsecVpnConfig->ipsecPrivateServerCertFilePath_;
vpnBean->ipsecPublicServerCertFilePath_ = ipsecVpnConfig->ipsecPublicServerCertFilePath_;
ipsecVpnConfig = nullptr;
}
void VpnDataBean::ConvertL2tpVpnConfigToVpnBean(const sptr<SysVpnConfig> sysVpnConfig, sptr<VpnDataBean> &vpnBean)
{
if (vpnBean == nullptr || sysVpnConfig == nullptr) {
NETMGR_EXT_LOG_E("ConvertL2tpVpnConfigToVpnBean params is null");
return;
}
L2tpVpnConfig *l2tpVpnConfig = static_cast<L2tpVpnConfig *>(sysVpnConfig.GetRefPtr());
if (l2tpVpnConfig == nullptr) {
NETMGR_EXT_LOG_E("ConvertL2tpVpnConfigToVpnBean l2tpVpnConfig is null");
return;
}
vpnBean->ipsecPreSharedKey_ = l2tpVpnConfig->ipsecPreSharedKey_;
vpnBean->ipsecIdentifier_ = l2tpVpnConfig->ipsecIdentifier_;
vpnBean->ipsecCaCertConf_ = l2tpVpnConfig->ipsecCaCertConf_;
vpnBean->ipsecPrivateUserCertConf_ = l2tpVpnConfig->ipsecPrivateUserCertConf_;
vpnBean->ipsecPublicUserCertConf_ = l2tpVpnConfig->ipsecPublicUserCertConf_;
vpnBean->ipsecPrivateServerCertConf_ = l2tpVpnConfig->ipsecPrivateServerCertConf_;
vpnBean->ipsecPublicServerCertConf_ = l2tpVpnConfig->ipsecPublicServerCertConf_;
vpnBean->ipsecCaCertFilePath_ = l2tpVpnConfig->ipsecCaCertFilePath_;
vpnBean->ipsecPrivateUserCertFilePath_ = l2tpVpnConfig->ipsecPrivateUserCertFilePath_;
vpnBean->ipsecPublicUserCertFilePath_ = l2tpVpnConfig->ipsecPublicUserCertFilePath_;
vpnBean->ipsecPrivateServerCertFilePath_ = l2tpVpnConfig->ipsecPrivateServerCertFilePath_;
vpnBean->ipsecPublicServerCertFilePath_ = l2tpVpnConfig->ipsecPublicServerCertFilePath_;
vpnBean->l2tpSharedKey_ = l2tpVpnConfig->l2tpSharedKey_;
l2tpVpnConfig = nullptr;
}
}
}