Skip to content

Commit

Permalink
add connection individual proxy settings
Browse files Browse the repository at this point in the history
  • Loading branch information
SimbaGithub committed Oct 16, 2022
1 parent ea024b3 commit a3dd462
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 1 deletion.
2 changes: 2 additions & 0 deletions php_pdo_snowflake_int.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,5 +92,7 @@ enum {
#define PDO_SNOWFLAKE_CONN_ATTR_AUTHENTICATOR_IDX 12
#define PDO_SNOWFLAKE_CONN_ATTR_PRIV_KEY_FILE_IDX 13
#define PDO_SNOWFLAKE_CONN_ATTR_PRIV_KEY_FILE_PWD_IDX 14
#define PDO_SNOWFLAKE_CONN_ATTR_PROXY_IDX 15
#define PDO_SNOWFLAKE_CONN_ATTR_NO_PROXY_IDX 16

#endif /* PHP_PDO_SNOWFLAKE_INT_H */
22 changes: 21 additions & 1 deletion snowflake_driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -556,7 +556,9 @@ pdo_snowflake_handle_factory(pdo_dbh_t *dbh, zval *driver_options) /* {{{ */
{"application", NULL, 0},
{"authenticator", NULL, 0},
{"priv_key_file", NULL, 0},
{"priv_key_file_pwd", NULL, 0}
{"priv_key_file_pwd", NULL, 0},
{"proxy", NULL, 0},
{"no_proxy", NULL, 0}
};

// Parse the input data parameters
Expand Down Expand Up @@ -726,6 +728,24 @@ pdo_snowflake_handle_factory(pdo_dbh_t *dbh, zval *driver_options) /* {{{ */
PDO_LOG_DBG(
"priv_key_file_pwd: %s", vars[PDO_SNOWFLAKE_CONN_ATTR_PRIV_KEY_FILE_PWD_IDX].optval);

if (vars[PDO_SNOWFLAKE_CONN_ATTR_PROXY_IDX].optval != NULL) {
/* proxy */
snowflake_set_attribute(
H->server, SF_CON_PROXY,
vars[PDO_SNOWFLAKE_CONN_ATTR_PROXY_IDX].optval);
}
PDO_LOG_DBG(
"proxy: %s", "******");

if (vars[PDO_SNOWFLAKE_CONN_ATTR_NO_PROXY_IDX].optval != NULL) {
/* priv_key_file_pwd */
snowflake_set_attribute(
H->server, SF_CON_NO_PROXY,
vars[PDO_SNOWFLAKE_CONN_ATTR_NO_PROXY_IDX].optval);
}
PDO_LOG_DBG(
"no_proxy: %s", vars[PDO_SNOWFLAKE_CONN_ATTR_NO_PROXY_IDX].optval);

if (snowflake_connect(H->server) > 0) {
pdo_snowflake_error(dbh);
goto cleanup;
Expand Down
39 changes: 39 additions & 0 deletions tests/proxy.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
--TEST--
pdo_snowflake - proxy
--INI--
pdo_snowflake.cacert=libsnowflakeclient/cacert.pem
--FILE--
<?php
include __DIR__ . "/common.php";
if (getenv("all_proxy") || getenv("https_proxy") || getenv("http_proxy"))
{
// skip the test if the test evironment uses proxy already
echo "OK\n";
}
// set invalid proxy in environment variables
putenv("https_proxy=a.b.c");
putenv("http_proxy=a.b.c");
putenv("no_proxy");

// use connection parameter to overwrite proxy setting in environment variables
$dbh = new PDO("$dsn;proxy=;no_proxy=", $user, $password);
$dbh = null;

// test no proxy also works as well
$dbh = new PDO("$dsn;proxy=a.b.c;no_proxy=*", $user, $password);
$dbh = null;

// unset environment variables
putenv("https_proxy");
putenv("http_proxy");
putenv("no_proxy");

echo "OK\n";

?>
===DONE===
<?php exit(0); ?>
--EXPECT--
OK
===DONE===

0 comments on commit a3dd462

Please sign in to comment.