eric6/E5Network/E5NetworkProxyFactory.py

changeset 7253
50dbe65a1334
parent 7229
53054eb5b15a
child 7360
9190402e4505
equal deleted inserted replaced
7252:c5e3705073eb 7253:50dbe65a1334
10 10
11 import os 11 import os
12 12
13 from PyQt5.QtCore import Qt, QUrl, QCoreApplication, QRegExp 13 from PyQt5.QtCore import Qt, QUrl, QCoreApplication, QRegExp
14 from PyQt5.QtWidgets import QDialog 14 from PyQt5.QtWidgets import QDialog
15 from PyQt5.QtNetwork import QNetworkProxyFactory, QNetworkProxy, \ 15 from PyQt5.QtNetwork import (
16 QNetworkProxyQuery 16 QNetworkProxyFactory, QNetworkProxy, QNetworkProxyQuery
17 )
17 18
18 from E5Gui import E5MessageBox 19 from E5Gui import E5MessageBox
19 20
20 import Preferences 21 import Preferences
21 import Globals 22 import Globals
48 @param proxy reference to the proxy object (QNetworkProxy) 49 @param proxy reference to the proxy object (QNetworkProxy)
49 @param auth reference to the authenticator object (QAuthenticator) 50 @param auth reference to the authenticator object (QAuthenticator)
50 """ 51 """
51 info = QCoreApplication.translate( 52 info = QCoreApplication.translate(
52 "E5NetworkProxyFactory", 53 "E5NetworkProxyFactory",
53 "<b>Connect to proxy '{0}' using:</b>")\ 54 "<b>Connect to proxy '{0}' using:</b>"
54 .format(Utilities.html_encode(proxy.hostName())) 55 ).format(Utilities.html_encode(proxy.hostName()))
55 56
56 from UI.AuthenticationDialog import AuthenticationDialog 57 from UI.AuthenticationDialog import AuthenticationDialog
57 dlg = AuthenticationDialog(info, proxy.user(), True) 58 dlg = AuthenticationDialog(info, proxy.user(), True)
58 dlg.setData(proxy.user(), proxy.password()) 59 dlg.setData(proxy.user(), proxy.password())
59 if dlg.exec_() == QDialog.Accepted: 60 if dlg.exec_() == QDialog.Accepted:
154 Public method to determine a proxy for a given query. 155 Public method to determine a proxy for a given query.
155 156
156 @param query reference to the query object (QNetworkProxyQuery) 157 @param query reference to the query object (QNetworkProxyQuery)
157 @return list of proxies in order of preference (list of QNetworkProxy) 158 @return list of proxies in order of preference (list of QNetworkProxy)
158 """ 159 """
159 if query.queryType() == QNetworkProxyQuery.UrlRequest and \ 160 if (
160 query.protocolTag() in ["http", "https", "ftp"]: 161 query.queryType() == QNetworkProxyQuery.UrlRequest and
162 query.protocolTag() in ["http", "https", "ftp"]
163 ):
161 # use proxy at all ? 164 # use proxy at all ?
162 if not Preferences.getUI("UseProxy"): 165 if not Preferences.getUI("UseProxy"):
163 return [QNetworkProxy(QNetworkProxy.NoProxy)] 166 return [QNetworkProxy(QNetworkProxy.NoProxy)]
164 167
165 # test for exceptions 168 # test for exceptions
172 return [QNetworkProxy(QNetworkProxy.NoProxy)] 175 return [QNetworkProxy(QNetworkProxy.NoProxy)]
173 176
174 # determine proxy 177 # determine proxy
175 if Preferences.getUI("UseSystemProxy"): 178 if Preferences.getUI("UseSystemProxy"):
176 proxyList = QNetworkProxyFactory.systemProxyForQuery(query) 179 proxyList = QNetworkProxyFactory.systemProxyForQuery(query)
177 if not Globals.isWindowsPlatform() and \ 180 if (
178 len(proxyList) == 1 and \ 181 not Globals.isWindowsPlatform() and
179 proxyList[0].type() == QNetworkProxy.NoProxy: 182 len(proxyList) == 1 and
183 proxyList[0].type() == QNetworkProxy.NoProxy
184 ):
180 # try it the Python way 185 # try it the Python way
181 # scan the environment for variables named <scheme>_proxy 186 # scan the environment for variables named <scheme>_proxy
182 # scan over whole environment to make this case insensitive 187 # scan over whole environment to make this case insensitive
183 for name, value in os.environ.items(): 188 for name, value in os.environ.items():
184 name = name.lower() 189 name = name.lower()
185 if value and name[-6:] == '_proxy' and \ 190 if (
186 name[:-6] == query.protocolTag().lower(): 191 value and
192 name[-6:] == '_proxy' and
193 name[:-6] == query.protocolTag().lower()
194 ):
187 url = QUrl(value) 195 url = QUrl(value)
188 if url.scheme() in ["http", "https"]: 196 if url.scheme() in ["http", "https"]:
189 proxyType = QNetworkProxy.HttpProxy 197 proxyType = QNetworkProxy.HttpProxy
190 elif url.scheme() == "ftp": 198 elif url.scheme() == "ftp":
191 proxyType = QNetworkProxy.FtpCachingProxy 199 proxyType = QNetworkProxy.FtpCachingProxy

eric ide

mercurial