|
26 | 26 | PROXY_USER = None
|
27 | 27 | PROXY_PASSWORD = None
|
28 | 28 |
|
| 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 | + |
29 | 59 | # imports
|
30 | 60 | import select
|
31 | 61 | import socket
|
|
34 | 64 | from logging import getLogger
|
35 | 65 | from socket import error as SocketError
|
36 | 66 |
|
| 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 | + |
37 | 84 | import OpenSSL
|
38 | 85 | import idna
|
39 | 86 | from botocore.vendored.requests.packages.urllib3 import connection \
|
@@ -443,38 +490,6 @@ def ssl_wrap_socket_with_ocsp(
|
443 | 490 | return ret
|
444 | 491 |
|
445 | 492 |
|
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 |
| - |
478 | 493 | def inject_into_urllib3():
|
479 | 494 | """
|
480 | 495 | Monkey-patch urllib3 with PyOpenSSL-backed SSL-support and OCSP
|
|
0 commit comments