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 "route.h" 25 #include "inet_addr.h" 26 #include "vpn_config.h" 27 #include "ipsecvpn_config.h" 28 #include "l2tpvpn_config.h" 29 30 namespace OHOS { 31 namespace NetManagerStandard { 32 namespace VpnConfigUtils { 33 constexpr int32_t NET_MASK_MAX_LENGTH = 32; 34 constexpr int32_t IPV6_NET_PREFIX_MAX_LENGTH = 128; 35 constexpr const char *CONFIG_ADDRESSES = "addresses"; 36 constexpr const char *CONFIG_ROUTES = "routes"; 37 constexpr const char *NET_ADDRESS = "address"; 38 constexpr const char *NET_FAMILY = "family"; 39 constexpr const char *NET_PORT = "port"; 40 constexpr const char *NET_PREFIXLENGTH = "prefixLength"; 41 constexpr const char *NET_INTERFACE = "interface"; 42 constexpr const char *NET_DESTINATION = "destination"; 43 constexpr const char *NET_GATEWAY = "gateway"; 44 constexpr const char *NET_HAS_GATEWAY = "hasGateway"; 45 constexpr const char *NET_ISDEFAULTROUTE = "isDefaultRoute"; 46 constexpr const char *CONFIG_DNSADDRESSES = "dnsAddresses"; 47 constexpr const char *CONFIG_SEARCHDOMAINS = "searchDomains"; 48 constexpr const char *CONFIG_MTU = "mtu"; 49 constexpr const char *CONFIG_ISIPV4ACCEPTED = "isIPv4Accepted"; 50 constexpr const char *CONFIG_ISIPV6ACCEPTED = "isIPv6Accepted"; 51 constexpr const char *CONFIG_ISLEGACY = "isLegacy"; 52 constexpr const char *CONFIG_ISMETERED = "isMetered"; 53 constexpr const char *CONFIG_ISBLOCKING = "isBlocking"; 54 constexpr const char *CONFIG_TRUSTEDAPPLICATIONS = "trustedApplications"; 55 constexpr const char *CONFIG_BLOCKEDAPPLICATIONS = "blockedApplications"; 56 57 constexpr const char *CONFIG_VPN_ID = "vpnId"; 58 constexpr const char *CONFIG_VPN_NAME = "vpnName"; 59 constexpr const char *CONFIG_VPN_TYPE = "vpnType"; 60 constexpr const char *CONFIG_USER_NAME = "userName"; 61 constexpr const char *CONFIG_PASSWORD = "password"; 62 constexpr const char *CONFIG_SAVE_LOGIN = "saveLogin"; 63 constexpr const char *CONFIG_FORWARDED_ROUTES = "forwardingRoutes"; 64 65 constexpr const char *CONFIG_OVPN_PORT = "ovpnPort"; 66 constexpr const char *CONFIG_OPEN_VPN_PROTOCOL = "ovpnProtocol"; 67 constexpr const char *CONFIG_OPEN_VPN_CFG = "ovpnConfig"; 68 constexpr const char *CONFIG_OPEN_VPN_AUTH_TYPE = "ovpnAuthType"; 69 constexpr const char *CONFIG_ASKPASS = "askpass"; 70 constexpr const char *CONFIG_OPEN_VPN_CFG_FILE_PATH = "ovpnConfigFilePath"; 71 constexpr const char *CONFIG_OPEN_VPN_CA_CERT_FILE_PATH = "ovpnCaCertFilePath"; 72 constexpr const char *CONFIG_OPEN_VPN_USER_CERT_FILE_PATH = "ovpnUserCertFilePath"; 73 constexpr const char *CONFIG_OPEN_VPN_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 bool ParseIpsecVpnParams(napi_env env, napi_value config, sptr<SysVpnConfig> &vpnConfig); 101 bool ParseL2tpVpnParams(napi_env env, napi_value config, sptr<SysVpnConfig> &vpnConfig); 102 103 bool ParseAddress(napi_env env, napi_value address, struct INetAddr &iNetAddr); 104 bool ParseDestination(napi_env env, napi_value jsRoute, struct INetAddr &iNetAddr); 105 bool ParseGateway(napi_env env, napi_value jsRoute, struct INetAddr &iNetAddr); 106 bool ParseRoute(napi_env env, napi_value jsRoute, Route &route); 107 bool ParseOptionArrayString(napi_env env, napi_value config, const std::string &key, 108 std::vector<std::string> &vector); 109 void GetBoolFromJsOptionItem(napi_env env, napi_value object, const std::string &key, bool &value); 110 void GetUint8FromJsOptionItem(napi_env env, napi_value object, const std::string &key, uint8_t &value); 111 void GetStringFromJsOptionItem(napi_env env, napi_value object, const std::string &key, std::string &value); 112 bool GetStringFromJsMandatoryItem(napi_env env, napi_value object, const std::string &key, std::string &value); 113 void GetInt32FromJsOptionItem(napi_env env, napi_value object, const std::string &key, int32_t &value); 114 115 napi_value CreateNapiVpnConfig(napi_env env, sptr<SysVpnConfig> &sysVpnConfig); 116 napi_value CreateNapiSysVpnConfig(napi_env env, sptr<SysVpnConfig> &sysVpnConfig); 117 napi_value CreateNapiIpsecVpnConfig(napi_env env, sptr<SysVpnConfig> &sysVpnConfig); 118 napi_value CreateNapiL2tpVpnConfig(napi_env env, sptr<SysVpnConfig> &sysVpnConfig); 119 } 120 } // namespace NetManagerStandard 121 } // namespace OHOS 122 123 #endif // VPN_CONFIG_UTILS_H 124