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