]> granicus.if.org Git - php/commitdiff
Added stream_context_get_default() which returns the default context option.
authorWez Furlong <wez@php.net>
Thu, 22 Jul 2004 12:12:28 +0000 (12:12 +0000)
committerWez Furlong <wez@php.net>
Thu, 22 Jul 2004 12:12:28 +0000 (12:12 +0000)
You may then set options that affect streams operations for the whole script.

Added stream_socket_enable_crypto() which allows you to turn on or off a crypto
layer (eg: SSL/TLS) on stream, if supported by the underlying transport.

Registered a bunch of constants for that.

ext/standard/basic_functions.c
ext/standard/file.c
ext/standard/streamsfuncs.c
ext/standard/streamsfuncs.h

index 7817f1e0b369e84c609fb74710852d262d197908..6fd7d04915f99ba16ffe4d64107113cc99bb14c5 100644 (file)
@@ -587,6 +587,7 @@ function_entry basic_functions[] = {
        PHP_FE(stream_context_set_params,                                                                               NULL)
        PHP_FE(stream_context_set_option,                                                                               NULL)
        PHP_FE(stream_context_get_options,                                                                              NULL)
+       PHP_FE(stream_context_get_default,                                                                              NULL)
        PHP_FE(stream_filter_prepend,                                                                                   NULL)
        PHP_FE(stream_filter_append,                                                                                    NULL)
        PHP_FE(stream_socket_client,                             second_and_third_args_force_ref)
@@ -595,6 +596,7 @@ function_entry basic_functions[] = {
        PHP_FE(stream_socket_get_name,                                                                                  NULL)
        PHP_FE(stream_socket_recvfrom,                                                  fourth_arg_force_ref)
        PHP_FE(stream_socket_sendto,                                                                                    NULL)
+       PHP_FE(stream_socket_enable_crypto,                                                                             NULL)
        PHP_FE(stream_copy_to_stream,                                                                                   NULL)
        PHP_FE(stream_get_contents,                                                                                             NULL)
        PHP_FE(fgetcsv,                                                                                                                 NULL)
index b3af5a20c0ab9c856e6c06e7cff2471fe2fdd6d7..5fbd87de07717fdcf3411505ef932afefb75afee 100644 (file)
@@ -214,6 +214,15 @@ PHP_MINIT_FUNCTION(file)
        REGISTER_LONG_CONSTANT("STREAM_CLIENT_ASYNC_CONNECT",   PHP_STREAM_CLIENT_ASYNC_CONNECT,        CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("STREAM_CLIENT_CONNECT",                 PHP_STREAM_CLIENT_CONNECT,      CONST_CS | CONST_PERSISTENT);
 
+       REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv2_CLIENT",             STREAM_CRYPTO_METHOD_SSLv2_CLIENT,      CONST_CS|CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv3_CLIENT",             STREAM_CRYPTO_METHOD_SSLv3_CLIENT,      CONST_CS|CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv23_CLIENT",    STREAM_CRYPTO_METHOD_SSLv23_CLIENT,     CONST_CS|CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLS_CLIENT",               STREAM_CRYPTO_METHOD_TLS_CLIENT,        CONST_CS|CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv2_SERVER",             STREAM_CRYPTO_METHOD_SSLv2_SERVER,      CONST_CS|CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv3_SERVER",             STREAM_CRYPTO_METHOD_SSLv3_SERVER,      CONST_CS|CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv23_SERVER",    STREAM_CRYPTO_METHOD_SSLv23_SERVER,     CONST_CS|CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLS_SERVER",               STREAM_CRYPTO_METHOD_TLS_SERVER,        CONST_CS|CONST_PERSISTENT);
+
        REGISTER_LONG_CONSTANT("STREAM_PEEK", STREAM_PEEK, CONST_CS | CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("STREAM_OOB",  STREAM_OOB, CONST_CS | CONST_PERSISTENT);
 
index b73fabe8d8dc60852399d07d4f7bb2f5e225e2d0..1e889f0b8a30054e4953be46e547791c21fee942 100644 (file)
@@ -928,6 +928,30 @@ PHP_FUNCTION(stream_context_set_params)
 }
 /* }}} */
 
+/* {{{ proto resource stream_context_get_default([array options])
+   Get a handle on the default file/stream context and optionally set parameters */
+PHP_FUNCTION(stream_context_get_default)
+{
+       zval *params = NULL;
+       php_stream_context *context;
+
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|a", &params) == FAILURE) {
+               RETURN_FALSE;
+       }
+       
+       if (FG(default_context) == NULL) {
+               FG(default_context) = php_stream_context_alloc();
+       }
+       context = FG(default_context);
+       
+       if (params) {
+               parse_context_options(context, params);
+       }
+       
+       php_stream_context_to_zval(context, return_value);
+}
+/* }}} */
+
 /* {{{ proto resource stream_context_create([array options])
    Create a file context and optionally set parameters */
 PHP_FUNCTION(stream_context_create)
@@ -1166,6 +1190,35 @@ PHP_FUNCTION(stream_set_write_buffer)
 }
 /* }}} */
 
+/* {{{ proto bool stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind, resource sessionstream])
+   Enable or disable a specific kind of crypto on the stream */
+PHP_FUNCTION(stream_socket_enable_crypto)
+{
+       long cryptokind;
+       zval *zstream, *zsessstream = NULL;
+       php_stream *stream, *sessstream = NULL;
+       zend_bool enable;
+       
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rb|lr", &zstream, &enable, &cryptokind, &zsessstream) == FAILURE) {
+               RETURN_FALSE;
+       }
+       
+       php_stream_from_zval(stream, &zstream);
+
+       if (ZEND_NUM_ARGS() >= 3) {
+               if (zsessstream) {
+                       php_stream_from_zval(sessstream, zsessstream);
+               }
+               
+               if (php_stream_xport_crypto_setup(stream, cryptokind, sessstream TSRMLS_CC) < 0) {
+                       RETURN_FALSE;
+               }
+       }
+
+       RETURN_BOOL(php_stream_xport_crypto_enable(stream, enable TSRMLS_CC) < 0 ? 0 : 1);
+}
+/* }}} */
+
 /*
  * Local variables:
  * tab-width: 4
index 7d4e607b43c8d525325c0fc3ac55d5210c816997..6ec9dba491c4ad628ef0e9347d3a73e05985b4ca 100644 (file)
@@ -47,8 +47,10 @@ PHP_FUNCTION(stream_context_create);
 PHP_FUNCTION(stream_context_set_params);
 PHP_FUNCTION(stream_context_set_option);
 PHP_FUNCTION(stream_context_get_options);
+PHP_FUNCTION(stream_context_get_default);
 PHP_FUNCTION(stream_filter_prepend);
 PHP_FUNCTION(stream_filter_append);
+PHP_FUNCTION(stream_socket_enable_crypto);
 
 /*
  * Local variables: