]> granicus.if.org Git - php/commitdiff
- MFH
authorPierre Joye <pajoye@php.net>
Sun, 25 Jan 2009 16:28:18 +0000 (16:28 +0000)
committerPierre Joye <pajoye@php.net>
Sun, 25 Jan 2009 16:28:18 +0000 (16:28 +0000)
 - [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

index ce97f637fa372d3f9d91faa64573a911c09363d5..aa5032651ef589e306dfd5796933b8f023f4c874 100644 (file)
@@ -433,7 +433,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);
@@ -696,7 +696,9 @@ PHP_MINIT_FUNCTION(curl)
 #if LIBCURL_VERSION_NUM >= 0x070b00
        REGISTER_CURL_CONSTANT(CURLE_FTP_SSL_FAILED);
 #endif
-
+#if LIBCURL_VERSION_NUM >= 0x071300
+       REGISTER_CURL_CONSTANT(CURLE_SSH);
+#endif
        REGISTER_CURL_CONSTANT(CURLPROXY_HTTP);
        REGISTER_CURL_CONSTANT(CURLPROXY_SOCKS5);
 
@@ -732,6 +734,22 @@ PHP_MINIT_FUNCTION(curl)
        REGISTER_CURL_CONSTANT(CURLFTPSSL_ALL);
 #endif
 
+/* SSH support works in 7.19.0+ using libssh2 */
+#if 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();
@@ -1442,14 +1460,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);
                        }
 
@@ -1471,7 +1498,7 @@ static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *retu
                        FILE *fp = NULL;
                        int type;
                        void * what;
-               
+
                        what = zend_fetch_resource(zvalue TSRMLS_CC, -1, "File-Handle", &type, 1, php_file_le_stream());
                        if (!what) {
                                RETVAL_FALSE;