From ad3ddeef37f7a3fb81cc74b1a1966a6d281845da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Dieding?= Date: Tue, 29 Apr 2025 15:47:06 +0200 Subject: [PATCH 1/2] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 73c7537500..58ddbe9359 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Kubernetes Python Client +# Kubernetes Python Client (bjoern) [![Build Status](https://travis-ci.org/kubernetes-client/python.svg?branch=master)](https://travis-ci.org/kubernetes-client/python) [![PyPI version](https://badge.fury.io/py/kubernetes.svg)](https://badge.fury.io/py/kubernetes) From 666feacf67248e85aaf68bca957b5472a67a6dc1 Mon Sep 17 00:00:00 2001 From: "bjoern.dieding" Date: Tue, 29 Apr 2025 16:24:40 +0200 Subject: [PATCH 2/2] socks5 support --- README.md | 2 +- kubernetes/base/stream/ws_client.py | 2 +- kubernetes/client/rest.py | 36 ++++++++++++++++++++--------- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 58ddbe9359..73c7537500 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Kubernetes Python Client (bjoern) +# Kubernetes Python Client [![Build Status](https://travis-ci.org/kubernetes-client/python.svg?branch=master)](https://travis-ci.org/kubernetes-client/python) [![PyPI version](https://badge.fury.io/py/kubernetes.svg)](https://badge.fury.io/py/kubernetes) diff --git a/kubernetes/base/stream/ws_client.py b/kubernetes/base/stream/ws_client.py index 10c6c1bcd5..4c5d13c1da 100644 --- a/kubernetes/base/stream/ws_client.py +++ b/kubernetes/base/stream/ws_client.py @@ -508,7 +508,7 @@ def websocket_proxycare(connect_opt, configuration, url, headers): if configuration.proxy: proxy_url = urlparse(configuration.proxy) - connect_opt.update({'http_proxy_host': proxy_url.hostname, 'http_proxy_port': proxy_url.port}) + connect_opt.update({'http_proxy_host': proxy_url.hostname, 'http_proxy_port': proxy_url.port, 'proxy_type': proxy_url.scheme}) if configuration.proxy_headers: for key,value in configuration.proxy_headers.items(): if key == 'proxy-authorization' and value.startswith('Basic'): diff --git a/kubernetes/client/rest.py b/kubernetes/client/rest.py index 3e3b8b2736..ce0c0544f7 100644 --- a/kubernetes/client/rest.py +++ b/kubernetes/client/rest.py @@ -88,17 +88,31 @@ def __init__(self, configuration, pools_size=4, maxsize=None): # https pool manager if configuration.proxy and not should_bypass_proxies(configuration.host, no_proxy=configuration.no_proxy or ''): - self.pool_manager = urllib3.ProxyManager( - num_pools=pools_size, - maxsize=maxsize, - cert_reqs=cert_reqs, - ca_certs=ca_certs, - cert_file=configuration.cert_file, - key_file=configuration.key_file, - proxy_url=configuration.proxy, - proxy_headers=configuration.proxy_headers, - **addition_pool_args - ) + if configuration.proxy.startswith('sock'): + from urllib3.contrib.socks import SOCKSProxyManager + self.pool_manager = SOCKSProxyManager( + num_pools=pools_size, + maxsize=maxsize, + cert_reqs=cert_reqs, + ca_certs=ca_certs, + cert_file=configuration.cert_file, + key_file=configuration.key_file, + proxy_url=configuration.proxy, + headers=configuration.proxy_headers, + **addition_pool_args + ) + else: + self.pool_manager = urllib3.ProxyManager( + num_pools=pools_size, + maxsize=maxsize, + cert_reqs=cert_reqs, + ca_certs=ca_certs, + cert_file=configuration.cert_file, + key_file=configuration.key_file, + proxy_url=configuration.proxy, + proxy_headers=configuration.proxy_headers, + **addition_pool_args + ) else: self.pool_manager = urllib3.PoolManager( num_pools=pools_size,