hdb
Version:
SAP HANA Database Client for Node
130 lines (118 loc) • 4.16 kB
JavaScript
// Copyright 2025 SAP AG.
//
// 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.
// Protocol constants and sizes for SOCKS5 (RFC1928 and related specs)
"use strict";
const DEFAULT_PROXY_PORT = 1080;
const NetworkErrors = Object.freeze({
ERR_NETWORK_PROXY_NOTSOCKSV5:
"ERR_NETWORK_PROXY_NOTSOCKSV5",
ERR_NETWORK_PROXY_AUTH_UNSUPPORTED:
"ERR_NETWORK_PROXY_AUTH_UNSUPPORTED",
ERR_NETWORK_PROXY_HANA_HOSTNAME_TOO_LONG:
"ERR_NETWORK_PROXY_HANA_HOSTNAME_TOO_LONG",
ERR_NETWORK_PROXY_AUTH_USERPASS_REJECT:
"ERR_NETWORK_PROXY_AUTH_USERPASS_REJECT",
ERR_NETWORK_PROXY_AUTH_USERPASS_USERLONG:
"ERR_NETWORK_PROXY_AUTH_USERPASS_USERLONG",
ERR_NETWORK_PROXY_AUTH_USERPASS_PWDLONG:
"ERR_NETWORK_PROXY_AUTH_USERPASS_PWDLONG",
ERR_NETWORK_PROXY_AUTH_SAPCLOUD_REJECT:
"ERR_NETWORK_PROXY_AUTH_SAPCLOUD_REJECT",
ERR_NETWORK_PROXY_AUTH_SAPCLOUD_USERLONG:
"ERR_NETWORK_PROXY_AUTH_SAPCLOUD_USERLONG",
ERR_NETWORK_PROXY_AUTH_SAPCLOUD_PWDLONG:
"ERR_NETWORK_PROXY_AUTH_SAPCLOUD_PWDLONG",
ERR_NETWORK_PROXY_CONNECT_FAIL:
"ERR_NETWORK_PROXY_CONNECT_FAIL",
ERR_NETWORK_PROXY_CONNECT_SOCKSSERVER_FAIL:
"ERR_NETWORK_PROXY_CONNECT_SOCKSSERVER_FAIL",
ERR_NETWORK_PROXY_CONNECT_RULESET:
"ERR_NETWORK_PROXY_CONNECT_RULESET",
ERR_NETWORK_PROXY_CONNECT_NET_UNREACHABLE:
"ERR_NETWORK_PROXY_CONNECT_NET_UNREACHABLE",
ERR_NETWORK_PROXY_CONNECT_HOST_UNREACHABLE:
"ERR_NETWORK_PROXY_CONNECT_HOST_UNREACHABLE",
ERR_NETWORK_PROXY_CONNECT_CONN_REFUSED:
"ERR_NETWORK_PROXY_CONNECT_CONN_REFUSED",
ERR_NETWORK_PROXY_CONNECT_TTL_EXPIRED:
"ERR_NETWORK_PROXY_CONNECT_TTL_EXPIRED",
ERR_NETWORK_PROXY_CONNECT_CMD_UNSUPPORTED:
"ERR_NETWORK_PROXY_CONNECT_CMD_UNSUPPORTED",
ERR_NETWORK_PROXY_CONNECT_BAD_ADDRESS_TYPE:
"ERR_NETWORK_PROXY_CONNECT_BAD_ADDRESS_TYPE",
ERR_NETWORK_HTTP_PROXY_CONNECT_FAIL:
"ERR_NETWORK_HTTP_PROXY_CONNECT_FAIL",
});
// Maximum field sizes
const PROXY_MAX_HANAHOST_SIZE = 255;
const PROXY_MAX_PASSWORD_SIZE = 255;
const PROXY_MAX_USERID_SIZE = 255;
const PROXY_MAX_SAPCLOUDJWT_SIZE = 512 * 1024;
// Section 3 - Procedure for TCP-based clients
const ProxyVersions = Object.freeze({
PROXY_SOCKSV5: 0x05,
});
// Section 3 - Authentication methods (RFCs and IANA assigned)
const ProxyAuthMethods = Object.freeze({
PROXYAUTH_NOAUTH: 0x00,
PROXYAUTH_GSSAPI: 0x01, // RFC 1961
PROXYAUTH_USERPASS: 0x02, // RFC 1929
PROXYAUTH_SAPCLOUDJWT: 0x80, // IANA assigned
});
// RFC 1929 - Section 2 - Initial negotiation
const ProxyAuthRequestVersion = Object.freeze({
PROXYREQ_VERSION1: 0x01,
});
const ProxyAuthResponse = Object.freeze({
PROXYAUTHRESP_SUCCESS: 0x00,
});
// Section 4 - Requests
const ProxyCommandRequest = Object.freeze({
PROXYCMD_CONNECT: 0x01,
PROXYCMD_BIND: 0x02,
PROXYCMD_UDPASSOC: 0x03,
});
// Section 5 - Addressing
const ProxyAddressTypes = Object.freeze({
PROXYNET_IPV4: 0x01,
PROXYNET_DOMAINNAME: 0x03,
PROXYNET_IPV6: 0x04,
});
// Section 6 - Replies
const ProxyConnectResponse = Object.freeze({
PROXYRESP_SUCCESS: 0x00,
PROXYRESP_SOCKSSERVER_FAIL: 0x01,
PROXYRESP_RULESET: 0x02,
PROXYRESP_NET_UNREACHABLE: 0x03,
PROXYRESP_HOST_UNREACHABLE: 0x04,
PROXYRESP_CONN_REFUSED: 0x05,
PROXYRESP_TTL_EXPIRED: 0x06,
PROXYRESP_CMD_UNSUPPORTED: 0x07,
PROXYRESP_BAD_ADDRESS_TYPE: 0x08,
});
module.exports = {
DEFAULT_PROXY_PORT,
PROXY_MAX_HANAHOST_SIZE,
PROXY_MAX_PASSWORD_SIZE,
PROXY_MAX_USERID_SIZE,
PROXY_MAX_SAPCLOUDJWT_SIZE,
ProxyVersions,
ProxyAuthMethods,
ProxyAuthRequestVersion,
ProxyAuthResponse,
ProxyCommandRequest,
ProxyAddressTypes,
ProxyConnectResponse,
NetworkErrors,
};