From 3765a0903f43fce5580255c1e8ea6cf8f768bffb Mon Sep 17 00:00:00 2001 From: Pierre Joye Date: Sun, 25 Jan 2009 16:27:25 +0000 Subject: [PATCH] - [DOC] Add support for SSH via libssh2 - new constants: CURLE_SSH, CURLSSH_AUTH_NONE, CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD, CURLSSH_AUTH_DEFAULT, CURLOPT_SSH_AUTH_TYPES, CURLOPT_KEYPASSWD, CURLOPT_SSH_PUBLIC_KEYFILE, CURLOPT_SSH_PRIVATE_KEYFILE, CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 See http://curl.haxx.se/libcurl/c/curl_easy_setopt.html fortheir roles or usages --- ext/curl/interface.c | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/ext/curl/interface.c b/ext/curl/interface.c index 7a2ac6965f..08da8d310e 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -431,7 +431,7 @@ PHP_MINFO_FUNCTION(curl) } #endif -#if defined(CURLVERSION_FOURTH) && CURLVERSION_NOW >= CURLVERSION_FOURTH +#if LIBCURL_VERSION_NUM >= 0x071300 if (d->iconv_ver_num) { php_info_print_table_row(2, "IconV Version", d->iconv_ver_num); @@ -694,7 +694,9 @@ PHP_MINIT_FUNCTION(curl) #if LIBCURL_VERSION_NUM >= 0x070b00 REGISTER_CURL_CONSTANT(CURLE_FTP_SSL_FAILED); #endif - +#ifdef LIBCURL_VERSION_NUM >= 0x071300 + REGISTER_CURL_CONSTANT(CURLE_SSH); +#endif REGISTER_CURL_CONSTANT(CURLPROXY_HTTP); REGISTER_CURL_CONSTANT(CURLPROXY_SOCKS4); REGISTER_CURL_CONSTANT(CURLPROXY_SOCKS5); @@ -731,6 +733,22 @@ PHP_MINIT_FUNCTION(curl) REGISTER_CURL_CONSTANT(CURLFTPSSL_ALL); #endif +/* SSH support works in 7.19.0+ using libssh2 */ +#ifdef LIBCURL_VERSION_NUM >= 0x071300 + REGISTER_CURL_CONSTANT(CURLSSH_AUTH_NONE); + REGISTER_CURL_CONSTANT(CURLSSH_AUTH_PUBLICKEY); + REGISTER_CURL_CONSTANT(CURLSSH_AUTH_PASSWORD); + REGISTER_CURL_CONSTANT(CURLSSH_AUTH_HOST); + REGISTER_CURL_CONSTANT(CURLSSH_AUTH_KEYBOARD); + REGISTER_CURL_CONSTANT(CURLSSH_AUTH_DEFAULT); + REGISTER_CURL_CONSTANT(CURLOPT_SSH_AUTH_TYPES); + REGISTER_CURL_CONSTANT(CURLOPT_KEYPASSWD); + REGISTER_CURL_CONSTANT(CURLOPT_SSH_PUBLIC_KEYFILE); + REGISTER_CURL_CONSTANT(CURLOPT_SSH_PRIVATE_KEYFILE); + REGISTER_CURL_CONSTANT(CURLOPT_SSH_HOST_PUBLIC_KEY_MD5); + REGISTER_CURL_CONSTANT(CURLE_SSH); +#endif + #ifdef PHP_CURL_NEED_OPENSSL_TSL if (!CRYPTO_get_id_callback()) { int i, c = CRYPTO_num_locks(); @@ -1454,14 +1472,23 @@ static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *retu case CURLOPT_SSLENGINE: case CURLOPT_SSLENGINE_DEFAULT: case CURLOPT_SSLCERTTYPE: - case CURLOPT_ENCODING: { + case CURLOPT_ENCODING: +#if LIBCURL_VERSION_NUM >= 0x071300 + case CURLOPT_SSH_PUBLIC_KEYFILE: + case CURLOPT_SSH_PRIVATE_KEYFILE: +#endif + { #if LIBCURL_VERSION_NUM < 0x071100 char *copystr = NULL; #endif convert_to_string_ex(zvalue); - if (option == CURLOPT_URL) { + if (option == CURLOPT_URL +#if LIBCURL_VERSION_NUM >= 0x071300 + || option == CURLOPT_SSH_PUBLIC_KEYFILE || option == CURLOPT_SSH_PRIVATE_KEYFILE +#endif + ) { PHP_CURL_CHECK_OPEN_BASEDIR(Z_STRVAL_PP(zvalue), Z_STRLEN_PP(zvalue), 1); } -- 2.50.1