From bec746b76f3322dfc5935dd4163abde44409f0da Mon Sep 17 00:00:00 2001 From: Alexey Minnekhanov Date: Tue, 15 May 2018 12:48:18 +0300 Subject: [PATCH] Use proxies from Pyfa's "Network settings" for ESI requests --- service/esiAccess.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/service/esiAccess.py b/service/esiAccess.py index 2d4605f69..7a1fe262b 100644 --- a/service/esiAccess.py +++ b/service/esiAccess.py @@ -18,7 +18,7 @@ import base64 import datetime from eos.enum import Enum -from service.settings import EsiSettings +from service.settings import EsiSettings, NetworkSettings from requests import Session from urllib.parse import urlencode, quote @@ -85,6 +85,7 @@ class EsiAccess(object): 'pyfa v{}'.format(config.version) ) }) + self._session.proxies = self.get_requests_proxies() @property def sso_url(self): @@ -132,6 +133,26 @@ class EsiAccess(object): if 'refresh_token' in tokenResponse: char.refreshToken = config.cipher.encrypt(tokenResponse['refresh_token'].encode()) + @staticmethod + def get_requests_proxies(): + proxies = {} + proxy_settings = NetworkSettings.getInstance().getProxySettings() + # proxy_settings is a tuple of (host, port), like ('192.168.20.1', 3128), or None + if proxy_settings is not None: + # form proxy address in format "http://host:port + proxy_host_port = '{}:{}'.format(proxy_settings[0], proxy_settings[1]) + proxy_auth_details = NetworkSettings.getInstance().getProxyAuthDetails() + # proxy_auth_details is a tuple of (login, password), or None + user_pass = '' + if proxy_auth_details is not None: + # construct prefix in form "user:password@" + user_pass = '{}:{}@'.format(proxy_auth_details[0], proxy_auth_details[1]) + proxies = { + 'http': 'http://' + user_pass + proxy_host_port, + 'https': 'http://' + user_pass + proxy_host_port + } + return proxies + def getLoginURI(self, redirect=None): self.state = str(uuid.uuid4())