1
0
mirror of https://github.com/moparisthebest/curl synced 2025-03-11 07:39:50 -04:00

curl_version_info: add CURL_VERSION_HTTPS_PROXY

Closes #1142
This commit is contained in:
Okhin Vasilij 2016-11-25 16:27:22 +07:00 committed by Daniel Stenberg
parent e38fe7abbf
commit a4b2f7aafd
12 changed files with 36 additions and 3 deletions

View File

@ -3710,6 +3710,11 @@ if test "x$USE_NGHTTP2" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2" SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
fi fi
if test "x$OPENSSL_ENABLED" = "x1" -o "x$GNUTLS_ENABLED" = "x1" \
-o "x$NSS_ENABLED" = "x1"; then
SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy"
fi
AC_SUBST(SUPPORT_FEATURES) AC_SUBST(SUPPORT_FEATURES)
dnl For supported protocols in pkg-config file dnl For supported protocols in pkg-config file

View File

@ -153,6 +153,9 @@ libcurl was built with support for Unix domain sockets.
libcurl was built with support for Mozilla's Public Suffix List. This makes libcurl was built with support for Mozilla's Public Suffix List. This makes
libcurl ignore cookies with a domain that's on the list. libcurl ignore cookies with a domain that's on the list.
(Added in 7.47.0) (Added in 7.47.0)
.IP CURL_VERSION_HTTPS_PROXY
libcurl was built with support for HTTPS-proxy.
(Added in 7.52.0)
.RE .RE
\fIssl_version\fP is an ASCII string for the OpenSSL version used. If libcurl \fIssl_version\fP is an ASCII string for the OpenSSL version used. If libcurl
has no SSL support, this is NULL. has no SSL support, this is NULL.

View File

@ -810,6 +810,7 @@ CURL_VERSION_DEBUG 7.10.6
CURL_VERSION_GSSAPI 7.38.0 CURL_VERSION_GSSAPI 7.38.0
CURL_VERSION_GSSNEGOTIATE 7.10.6 7.38.0 CURL_VERSION_GSSNEGOTIATE 7.10.6 7.38.0
CURL_VERSION_HTTP2 7.33.0 CURL_VERSION_HTTP2 7.33.0
CURL_VERSION_HTTPS_PROXY 7.52.0
CURL_VERSION_IDN 7.12.0 CURL_VERSION_IDN 7.12.0
CURL_VERSION_IPV6 7.10 CURL_VERSION_IPV6 7.10
CURL_VERSION_KERBEROS4 7.10 7.33.0 CURL_VERSION_KERBEROS4 7.10 7.33.0

View File

@ -640,7 +640,7 @@ typedef enum {
CONNECT HTTP/1.1 */ CONNECT HTTP/1.1 */
CURLPROXY_HTTP_1_0 = 1, /* added in 7.19.4, force to use CONNECT CURLPROXY_HTTP_1_0 = 1, /* added in 7.19.4, force to use CONNECT
HTTP/1.0 */ HTTP/1.0 */
CURLPROXY_HTTPS = 2, /* added in TBD */ CURLPROXY_HTTPS = 2, /* added in 7.52.0 */
CURLPROXY_SOCKS4 = 4, /* support added in 7.15.2, enum existed already CURLPROXY_SOCKS4 = 4, /* support added in 7.15.2, enum existed already
in 7.10 */ in 7.10 */
CURLPROXY_SOCKS5 = 5, /* added in 7.10 */ CURLPROXY_SOCKS5 = 5, /* added in 7.10 */
@ -2446,6 +2446,7 @@ typedef struct {
#define CURL_VERSION_UNIX_SOCKETS (1<<19) /* Unix domain sockets support */ #define CURL_VERSION_UNIX_SOCKETS (1<<19) /* Unix domain sockets support */
#define CURL_VERSION_PSL (1<<20) /* Mozilla's Public Suffix List, used #define CURL_VERSION_PSL (1<<20) /* Mozilla's Public Suffix List, used
for cookie domain verification */ for cookie domain verification */
#define CURL_VERSION_HTTPS_PROXY (1<<21) /* HTTPS-proxy support built-in */
/* /*
* NAME curl_version_info() * NAME curl_version_info()

View File

@ -4924,6 +4924,14 @@ static CURLcode parse_proxy(struct Curl_easy *data,
else else
proxyptr = proxy; /* No xxx:// head: It's a HTTP proxy */ proxyptr = proxy; /* No xxx:// head: It's a HTTP proxy */
#ifndef HTTPS_PROXY_SUPPORT
if(proxytype == CURLPROXY_HTTPS) {
failf(data, "Unsupported proxy \'%s\'"
", libcurl is built without the HTTPS-proxy support.", proxy);
return CURLE_NOT_BUILT_IN;
}
#endif
sockstype = proxytype == CURLPROXY_SOCKS5_HOSTNAME || sockstype = proxytype == CURLPROXY_SOCKS5_HOSTNAME ||
proxytype == CURLPROXY_SOCKS5 || proxytype == CURLPROXY_SOCKS5 ||
proxytype == CURLPROXY_SOCKS4A || proxytype == CURLPROXY_SOCKS4A ||

View File

@ -323,6 +323,9 @@ static curl_version_info_data version_info = {
#endif #endif
#if defined(USE_LIBPSL) #if defined(USE_LIBPSL)
| CURL_VERSION_PSL | CURL_VERSION_PSL
#endif
#if defined(HTTPS_PROXY_SUPPORT)
| CURL_VERSION_HTTPS_PROXY
#endif #endif
, ,
NULL, /* ssl_version */ NULL, /* ssl_version */

View File

@ -41,6 +41,9 @@ int Curl_gskit_shutdown(struct connectdata *conn, int sockindex);
size_t Curl_gskit_version(char *buffer, size_t size); size_t Curl_gskit_version(char *buffer, size_t size);
int Curl_gskit_check_cxn(struct connectdata *cxn); int Curl_gskit_check_cxn(struct connectdata *cxn);
/* Support HTTPS-proxy */
/* TODO: add '#define HTTPS_PROXY_SUPPORT 1' and fix test #1014 (if need) */
/* Set the API backend definition to GSKit */ /* Set the API backend definition to GSKit */
#define CURL_SSL_BACKEND CURLSSLBACKEND_GSKIT #define CURL_SSL_BACKEND CURLSSLBACKEND_GSKIT

View File

@ -57,6 +57,9 @@ void Curl_gtls_sha256sum(const unsigned char *tmp, /* input */
bool Curl_gtls_cert_status_request(void); bool Curl_gtls_cert_status_request(void);
/* Support HTTPS-proxy */
#define HTTPS_PROXY_SUPPORT 1
/* Set the API backend definition to GnuTLS */ /* Set the API backend definition to GnuTLS */
#define CURL_SSL_BACKEND CURLSSLBACKEND_GNUTLS #define CURL_SSL_BACKEND CURLSSLBACKEND_GNUTLS

View File

@ -65,6 +65,9 @@ bool Curl_nss_cert_status_request(void);
bool Curl_nss_false_start(void); bool Curl_nss_false_start(void);
/* Support HTTPS-proxy */
#define HTTPS_PROXY_SUPPORT 1
/* Set the API backend definition to NSS */ /* Set the API backend definition to NSS */
#define CURL_SSL_BACKEND CURLSSLBACKEND_NSS #define CURL_SSL_BACKEND CURLSSLBACKEND_NSS

View File

@ -79,6 +79,9 @@ void Curl_ossl_sha256sum(const unsigned char *tmp, /* input */
bool Curl_ossl_cert_status_request(void); bool Curl_ossl_cert_status_request(void);
/* Support HTTPS-proxy */
#define HTTPS_PROXY_SUPPORT 1
/* Set the API backend definition to OpenSSL */ /* Set the API backend definition to OpenSSL */
#define CURL_SSL_BACKEND CURLSSLBACKEND_OPENSSL #define CURL_SSL_BACKEND CURLSSLBACKEND_OPENSSL

View File

@ -187,8 +187,7 @@ ssl_connect_init_proxy(struct connectdata *conn, int sockindex)
DEBUGASSERT(conn->bits.proxy_ssl_connected[sockindex]); DEBUGASSERT(conn->bits.proxy_ssl_connected[sockindex]);
if(ssl_connection_complete == conn->ssl[sockindex].state && if(ssl_connection_complete == conn->ssl[sockindex].state &&
!conn->proxy_ssl[sockindex].use) { !conn->proxy_ssl[sockindex].use) {
#if defined(USE_OPENSSL) || defined(USE_GNUTLS) || defined(USE_NSS) || \ #if defined(HTTPS_PROXY_SUPPORT)
defined(USE_GSKIT)
conn->proxy_ssl[sockindex] = conn->ssl[sockindex]; conn->proxy_ssl[sockindex] = conn->ssl[sockindex];
memset(&conn->ssl[sockindex], 0, sizeof(conn->ssl[sockindex])); memset(&conn->ssl[sockindex], 0, sizeof(conn->ssl[sockindex]));
#else #else

View File

@ -317,6 +317,7 @@ static const struct feat feats[] = {
{"TLS-SRP", CURL_VERSION_TLSAUTH_SRP}, {"TLS-SRP", CURL_VERSION_TLSAUTH_SRP},
{"HTTP2", CURL_VERSION_HTTP2}, {"HTTP2", CURL_VERSION_HTTP2},
{"UnixSockets", CURL_VERSION_UNIX_SOCKETS}, {"UnixSockets", CURL_VERSION_UNIX_SOCKETS},
{"HTTPS-proxy", CURL_VERSION_HTTPS_PROXY}
}; };
void tool_help(void) void tool_help(void)