From e18188dea6823c42f21f5e86c18fdf08fc9e7cea Mon Sep 17 00:00:00 2001 From: gss2002 Date: Thu, 9 Aug 2018 14:31:11 -0400 Subject: [PATCH] Fix pyp2rpm to respect proxy settings from env http_proxy/https_proxy or --proxy --- pyp2rpm/convertor.py | 48 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/pyp2rpm/convertor.py b/pyp2rpm/convertor.py index 0318b402..527720dc 100644 --- a/pyp2rpm/convertor.py +++ b/pyp2rpm/convertor.py @@ -56,7 +56,37 @@ def __init__(self, package=None, version=None, if not self.template.endswith('.spec'): self.template = '{0}.spec'.format(self.template) self.rpm_name = rpm_name - self.proxy = proxy + #check and set proxy settings + + self.use_proxy = None + if (os.environ.get('HTTP_PROXY') or os.environ.get('http_proxy')): + if(os.environ.get('HTTP_PROXY')): + self.use_proxy = "true" + self.http_proxy=os.environ.get('HTTP_PROXY') + elif(os.environ.get('http_proxy')): + self.use_proxy = "true" + self.http_proxy=os.environ.get('http_proxy') + else: + if proxy: + self.use_proxy = "true" + self.http_proxy=proxy + os.environ["http_proxy"] = "http://"+proxy + os.environ["HTTP_PROXY"] = "http://"+proxy + + if (os.environ.get('HTTPS_PROXY') or os.environ.get('https_proxy')): + if(os.environ.get('HTTPS_PROXY')): + self.use_proxy = "true" + self.https_proxy=os.environ.get('HTTPS_PROXY') + elif(os.environ.get('https_proxy')): + self.use_proxy = "true" + self.https_proxy=os.environ.get('https_proxy') + else: + if proxy: + self.use_proxy = "true" + self.https_proxy=proxy + os.environ["https_proxy"] = "http://"+proxy + os.environ["HTTPS_PROXY"] = "http://"+proxy + self.venv = venv self.autonc = autonc self.pypi = True @@ -287,17 +317,19 @@ def client(self): Returns: XMLRPC client for PyPI or None. """ - if self.proxy: - proxyhandler = urllib.ProxyHandler({"http": self.proxy}) + if self.use_proxy: + proxyhandler = urllib.ProxyHandler({"https": self.https_proxy, "http": self.http_proxy}) opener = urllib.build_opener(proxyhandler) urllib.install_opener(opener) transport = ProxyTransport() if not hasattr(self, '_client'): - transport = None if self.pypi: - if self.proxy: - logger.info('Using provided proxy: {0}.'.format( - self.proxy)) + if self.use_proxy: + logger.info('Using provided http_proxy: {0}.'.format(self.http_proxy)) + logger.info('Using provided https_proxy: {0}.'.format(self.https_proxy)) + else: + transport = None + self._client = xmlrpclib.ServerProxy(settings.PYPI_URL, transport=transport) self._client_set = True @@ -316,6 +348,6 @@ def request(self, host, handler, request_body, verbose): request = urllib.Request(url) request.add_data(request_body) request.add_header("User-Agent", self.user_agent) - request.add_header("Content-Type", "text/html") + request.add_header("Content-Type", "text/xml") f = urllib.urlopen(request) return self.parse_response(f)