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 |