Skip to content

Commit ef005d8

Browse files
committed
SNOW-27715: Use proxy parameters for PUT and GET commands. If neither is set, the environment variables are used.
1 parent cead38e commit ef005d8

File tree

1 file changed

+47
-32
lines changed

1 file changed

+47
-32
lines changed

ssl_wrap_socket.py

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,36 @@
2626
PROXY_USER = None
2727
PROXY_PASSWORD = None
2828

29+
30+
def set_proxies(proxy_host, proxy_port, proxy_user=None, proxy_password=None):
31+
"""
32+
Set proxy dict for requests
33+
"""
34+
proxies = None
35+
if proxy_host and proxy_port:
36+
if proxy_user or proxy_password:
37+
proxy_auth = u'{proxy_user}:{proxy_password}@'.format(
38+
proxy_user=proxy_user if proxy_user is not None else '',
39+
proxy_password=proxy_password if proxy_password is not
40+
None else ''
41+
)
42+
else:
43+
proxy_auth = u''
44+
proxies = {
45+
u'http': u'http://{proxy_auth}{proxy_host}:{proxy_port}'.format(
46+
proxy_host=proxy_host,
47+
proxy_port=TO_UNICODE(proxy_port),
48+
proxy_auth=proxy_auth,
49+
),
50+
u'https': u'http://{proxy_auth}{proxy_host}:{proxy_port}'.format(
51+
proxy_host=proxy_host,
52+
proxy_port=TO_UNICODE(proxy_port),
53+
proxy_auth=proxy_auth,
54+
),
55+
}
56+
return proxies
57+
58+
2959
# imports
3060
import select
3161
import socket
@@ -34,6 +64,23 @@
3464
from logging import getLogger
3565
from socket import error as SocketError
3666

67+
import botocore.endpoint
68+
69+
# Monkey patch for all connections for AWS API. This is mainly for PUT
70+
# and GET commands
71+
original_get_proxies = botocore.endpoint.EndpointCreator._get_proxies
72+
73+
74+
def _get_proxies(self, url):
75+
return set_proxies(
76+
PROXY_HOST,
77+
PROXY_PORT,
78+
PROXY_USER,
79+
PROXY_PASSWORD) or original_get_proxies(self, url)
80+
81+
82+
botocore.endpoint.EndpointCreator._get_proxies = _get_proxies
83+
3784
import OpenSSL
3885
import idna
3986
from botocore.vendored.requests.packages.urllib3 import connection \
@@ -443,38 +490,6 @@ def ssl_wrap_socket_with_ocsp(
443490
return ret
444491

445492

446-
def set_proxies(proxy_host,
447-
proxy_port,
448-
proxy_user=None,
449-
proxy_password=None):
450-
"""
451-
Set proxy dict for requests
452-
"""
453-
proxies = None
454-
if proxy_host and proxy_port:
455-
if proxy_user or proxy_password:
456-
proxy_auth = u'{proxy_user}:{proxy_password}@'.format(
457-
proxy_user=proxy_user if proxy_user is not None else '',
458-
proxy_password=proxy_password if proxy_password is not
459-
None else ''
460-
)
461-
else:
462-
proxy_auth = u''
463-
proxies = {
464-
u'http': u'http://{proxy_auth}{proxy_host}:{proxy_port}'.format(
465-
proxy_host=proxy_host,
466-
proxy_port=TO_UNICODE(proxy_port),
467-
proxy_auth=proxy_auth,
468-
),
469-
u'https': u'http://{proxy_auth}{proxy_host}:{proxy_port}'.format(
470-
proxy_host=proxy_host,
471-
proxy_port=TO_UNICODE(proxy_port),
472-
proxy_auth=proxy_auth,
473-
),
474-
}
475-
return proxies
476-
477-
478493
def inject_into_urllib3():
479494
"""
480495
Monkey-patch urllib3 with PyOpenSSL-backed SSL-support and OCSP

0 commit comments

Comments
 (0)