• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 #ifndef VPN_CONFIG_UTILS_EXT_H
17 #define VPN_CONFIG_UTILS_EXT_H
18 
19 #include <cstddef>
20 #include <napi/native_api.h>
21 #include <vector>
22 
23 #include "inet_addr.h"
24 #include "ipsecvpn_config.h"
25 #include "l2tpvpn_config.h"
26 #include "openvpn_config.h"
27 
28 namespace OHOS {
29 namespace NetManagerStandard {
30 namespace VpnConfigUtilsExt {
31 constexpr int32_t NET_MASK_MAX_LENGTH = 32;
32 constexpr int32_t IPV6_NET_PREFIX_MAX_LENGTH = 128;
33 constexpr const char *CONFIG_ADDRESSES = "addresses";
34 constexpr const char *CONFIG_ROUTES = "routes";
35 constexpr const char *NET_ADDRESS = "address";
36 constexpr const char *NET_FAMILY = "family";
37 constexpr const char *NET_PORT = "port";
38 constexpr const char *NET_PREFIXLENGTH = "prefixLength";
39 constexpr const char *NET_INTERFACE = "interface";
40 constexpr const char *NET_DESTINATION = "destination";
41 constexpr const char *NET_GATEWAY = "gateway";
42 constexpr const char *NET_HAS_GATEWAY = "hasGateway";
43 constexpr const char *NET_ISDEFAULTROUTE = "isDefaultRoute";
44 constexpr const char *CONFIG_DNSADDRESSES = "dnsAddresses";
45 constexpr const char *CONFIG_SEARCHDOMAINS = "searchDomains";
46 constexpr const char *CONFIG_MTU = "mtu";
47 constexpr const char *CONFIG_ISIPV4ACCEPTED = "isIPv4Accepted";
48 constexpr const char *CONFIG_ISIPV6ACCEPTED = "isIPv6Accepted";
49 constexpr const char *CONFIG_ISLEGACY = "isLegacy";
50 constexpr const char *CONFIG_ISMETERED = "isMetered";
51 constexpr const char *CONFIG_ISBLOCKING = "isBlocking";
52 constexpr const char *CONFIG_TRUSTEDAPPLICATIONS = "trustedApplications";
53 constexpr const char *CONFIG_BLOCKEDAPPLICATIONS = "blockedApplications";
54 
55 constexpr const char *CONFIG_VPN_ID = "vpnId";
56 constexpr const char *CONFIG_VPN_NAME = "vpnName";
57 constexpr const char *CONFIG_VPN_TYPE = "vpnType";
58 constexpr const char *CONFIG_USER_NAME = "userName";
59 constexpr const char *CONFIG_PASSWORD = "password";
60 constexpr const char *CONFIG_SAVE_LOGIN = "saveLogin";
61 constexpr const char *CONFIG_FORWARDED_ROUTES = "forwardingRoutes";
62 constexpr const char *CONFIG_PK12_PASSWORD = "pkcs12Password";
63 constexpr const char *CONFIG_PK12_FILE_DATA = "pkcs12FileData";
64 
65 constexpr const char *CONFIG_OVPN_PORT = "ovpnPort";
66 constexpr const char *CONFIG_OPENVPN_PROTOCOL = "ovpnProtocol";
67 constexpr const char *CONFIG_OPENVPN_CFG = "ovpnConfig";
68 constexpr const char *CONFIG_OPENVPN_AUTH_TYPE = "ovpnAuthType";
69 constexpr const char *CONFIG_ASKPASS = "askpass";
70 constexpr const char *CONFIG_OPENVPN_CFG_FILE_PATH = "ovpnConfigFilePath";
71 constexpr const char *CONFIG_OPENVPN_CA_CERT_FILE_PATH = "ovpnCaCertFilePath";
72 constexpr const char *CONFIG_OPENVPN_USER_CERT_FILE_PATH = "ovpnUserCertFilePath";
73 constexpr const char *CONFIG_OPENVPN_PRIVATE_KEY_FILE_PATH = "ovpnPrivateKeyFilePath";
74 
75 constexpr const char *CONFIG_IPSEC_PRE_SHARE_KEY = "ipsecPreSharedKey";
76 constexpr const char *CONFIG_IPSEC_IDENTIFIER = "ipsecIdentifier";
77 constexpr const char *CONFIG_SWANCTL_CONF = "swanctlConfig";
78 constexpr const char *CONFIG_STRONGSWAN_CONF = "strongSwanConfig";
79 constexpr const char *CONFIG_IPSEC_CA_CERT_CONF = "ipsecCaCertConfig";
80 constexpr const char *CONFIG_IPSEC_PRIVATE_USER_CERT_CONF = "ipsecPrivateUserCertConfig";
81 constexpr const char *CONFIG_IPSEC_PUBLIC_USER_CERT_CONF = "ipsecPublicUserCertConfig";
82 constexpr const char *CONFIG_IPSEC_PRIVATE_SERVER_CERT_CONF = "ipsecPrivateServerCertConfig";
83 constexpr const char *CONFIG_IPSEC_PUBLIC_SERVER_CERT_CONF = "ipsecPublicServerCertConfig";
84 constexpr const char *CONFIG_IPSEC_CA_CERT_FILE_PATH = "ipsecCaCertFilePath";
85 constexpr const char *CONFIG_IPSEC_PRIVATE_USER_CERT_FILE_PATH = "ipsecPrivateUserCertFilePath";
86 constexpr const char *CONFIG_IPSEC_PUBLIC_USER_CERT_FILE_PATH = "ipsecPublicUserCertFilePath";
87 constexpr const char *CONFIG_IPSEC_PRIVATE_SERVER_CERT_FILE_PATH = "ipsecPrivateServerCertFilePath";
88 constexpr const char *CONFIG_IPSEC_PUBLIC_SERVER_CERT_FILE_PATH = "ipsecPublicServerCertFilePath";
89 
90 constexpr const char *CONFIG_IPSEC_CONF = "ipsecConfig";
91 constexpr const char *CONFIG_IPSEC_SECRETS = "ipsecSecrets";
92 constexpr const char *CONFIG_OPTIONS_L2TPD_CLIENT = "optionsL2tpdClient";
93 constexpr const char *CONFIG_XL2TPD_CONF = "xl2tpdConfig";
94 constexpr const char *CONFIG_L2TP_SHARED_KEY = "l2tpSharedKey";
95 
96 bool ParseSysVpnConfig(napi_env env, napi_value *params, sptr<SysVpnConfig> &vpnConfig);
97 bool ParseAddrRouteParams(napi_env env, napi_value config, sptr<SysVpnConfig> &vpnConfig);
98 bool ParseChoiceableParams(napi_env env, napi_value config, sptr<SysVpnConfig> &vpnConfig);
99 
100 sptr<OpenvpnConfig> CreateAndParseOpenvpnConf(napi_env env, napi_value config);
101 sptr<IpsecVpnConfig> CreateAndParseIpsecVpnConf(napi_env env, napi_value config);
102 sptr<L2tpVpnConfig> CreateAndParseL2tpVpnConf(napi_env env, napi_value config);
103 
104 bool ParseAddress(napi_env env, napi_value address, struct INetAddr &iNetAddr);
105 bool ParseDestination(napi_env env, napi_value jsRoute, struct INetAddr &iNetAddr);
106 bool ParseGateway(napi_env env, napi_value jsRoute, struct INetAddr &iNetAddr);
107 bool ParseRoute(napi_env env, napi_value jsRoute, Route &route);
108 bool ParseOptionArrayString(napi_env env, napi_value config, const std::string &key,
109     std::vector<std::string> &vector);
110 void GetBoolFromJsOptionItem(napi_env env, napi_value object, const std::string &key, bool &value);
111 void GetUint8FromJsOptionItem(napi_env env, napi_value object, const std::string &key, uint8_t &value);
112 void GetStringFromJsOptionItem(napi_env env, napi_value object, const std::string &key, std::string &value);
113 bool GetStringFromJsMandatoryItem(napi_env env, napi_value object, const std::string &key, std::string &value);
114 void GetInt32FromJsOptionItem(napi_env env, napi_value object, const std::string &key, int32_t &value);
115 bool GetU8VectorFromJsOptionItem(const napi_env env, napi_value object, const std::string &key,
116     std::vector<uint8_t> &value);
117 
118 napi_value CreateNapiVpnConfig(napi_env env, sptr<SysVpnConfig> &sysVpnConfig);
119 napi_value CreateNapiSysVpnConfig(napi_env env, sptr<SysVpnConfig> &sysVpnConfig);
120 napi_value CreateNapiOpenvpnConfig(napi_env env, sptr<SysVpnConfig> sysVpnConfig);
121 napi_value CreateNapiIpsecVpnConfig(napi_env env, sptr<SysVpnConfig> &sysVpnConfig);
122 napi_value CreateNapiL2tpVpnConfig(napi_env env, sptr<SysVpnConfig> &sysVpnConfig);
123 }
124 } // namespace NetManagerStandard
125 } // namespace OHOS
126 
127 #endif // VPN_CONFIG_UTILS_EXT_H
128