Helpviewer/Network/NetworkAccessManager.py

Wed, 02 Jan 2013 10:33:09 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 02 Jan 2013 10:33:09 +0100
branch
5_2_x
changeset 2303
0ed4ed026c16
parent 2068
81f7aecc6599
permissions
-rw-r--r--

Updated copyright for 2013.

0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
2303
0ed4ed026c16 Updated copyright for 2013.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2068
diff changeset
3 # Copyright (c) 2009 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a QNetworkAccessManager subclass.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
1366
f2e7957924cb Fixed a security issue using QLabel for showing SSL certificate infos without setting the label's text format to Qt.PlainText.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1314
diff changeset
12 from PyQt4.QtCore import pyqtSignal, QByteArray, Qt
541
00e1a5d060c5 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 539
diff changeset
13 from PyQt4.QtGui import QDialog
491
ac476c22d392 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
14 from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 try:
721
9dd401431fcc Change the SSL error handling of the network access handler.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 666
diff changeset
16 from PyQt4.QtNetwork import QSslCertificate, QSslConfiguration, QSslSocket, \
1219
c051673f8aaf Added code to support any SSL protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
17 QSslError, QSsl
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 SSL_AVAILABLE = True
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 except ImportError:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 SSL_AVAILABLE = False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
538
7f1a56e80124 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 501
diff changeset
22 from E5Gui import E5MessageBox
7f1a56e80124 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 501
diff changeset
23
381
64ae9e09d8bc Extended the Ad-Blocker of the web browser and added capability to configure the text encoding of the web browser (needs Qt >= 4.6).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 286
diff changeset
24 from E5Network.E5NetworkProxyFactory import E5NetworkProxyFactory, \
64ae9e09d8bc Extended the Ad-Blocker of the web browser and added capability to configure the text encoding of the web browser (needs Qt >= 4.6).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 286
diff changeset
25 proxyAuthenticationRequired
270
41505c92ac31 Added code to enhance the proxy configuration and removed the usage of QHttp.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
26
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 from UI.AuthenticationDialog import AuthenticationDialog
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 from Helpviewer.HelpLanguagesDialog import HelpLanguagesDialog
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 import Helpviewer.HelpWindow
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
32 from .NetworkProtocolUnknownErrorReply import NetworkProtocolUnknownErrorReply
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
33 from .NetworkDiskCache import NetworkDiskCache
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
35 from .QtHelpAccessHandler import QtHelpAccessHandler
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
36 from .PyrcAccessHandler import PyrcAccessHandler
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
37 from .AboutAccessHandler import AboutAccessHandler
278
c93823b96faa Added a handler for ftp: URLs to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 270
diff changeset
38 from .FtpAccessHandler import FtpAccessHandler
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 from Helpviewer.AdBlock.AdBlockAccessHandler import AdBlockAccessHandler
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 import Preferences
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 import Utilities
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 826
diff changeset
45
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 class NetworkAccessManager(QNetworkAccessManager):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 Class implementing a QNetworkAccessManager subclass.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
501
5c615a85241a Finished porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 491
diff changeset
50 @signal requestCreated(QNetworkAccessManager.Operation, QNetworkRequest, QNetworkReply)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 emitted after the request has been created
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 """
491
ac476c22d392 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
53 requestCreated = pyqtSignal(
ac476c22d392 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
54 QNetworkAccessManager.Operation, QNetworkRequest, QNetworkReply)
ac476c22d392 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
55
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 826
diff changeset
56 def __init__(self, engine, parent=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @param engine reference to the help engine (QHelpEngine)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 @param parent reference to the parent object (QObject)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """
1131
7781e396c903 Changed the code to use super() to access the superclass.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1127
diff changeset
63 super().__init__(parent)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.__adblockNetwork = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 self.__schemeHandlers = {} # dictionary of scheme handlers
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68
270
41505c92ac31 Added code to enhance the proxy configuration and removed the usage of QHttp.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
69 self.__proxyFactory = E5NetworkProxyFactory()
41505c92ac31 Added code to enhance the proxy configuration and removed the usage of QHttp.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
70 self.setProxyFactory(self.__proxyFactory)
41505c92ac31 Added code to enhance the proxy configuration and removed the usage of QHttp.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 140
diff changeset
71
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 self.__setDiskCache()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self.languagesChanged()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 if SSL_AVAILABLE:
762
48190a225699 Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 753
diff changeset
76 caList = self.__getSystemCaCertificates()
748
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
77 certificateDict = Preferences.toDict(
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
78 Preferences.Prefs.settings.value("Help/CaCertificatesDict"))
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
79 for server in certificateDict:
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
80 for cert in QSslCertificate.fromData(certificateDict[server]):
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
81 if cert not in caList:
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
82 caList.append(cert)
762
48190a225699 Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 753
diff changeset
83 sslCfg = QSslConfiguration.defaultConfiguration()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 sslCfg.setCaCertificates(caList)
1219
c051673f8aaf Added code to support any SSL protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
85 sslCfg.setProtocol(QSsl.AnyProtocol)
2068
81f7aecc6599 Added code to work around a security vulnerability discovered in SSL (as recommended by Digia).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
86 try:
81f7aecc6599 Added code to work around a security vulnerability discovered in SSL (as recommended by Digia).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
87 sslCfg.setSslOption(QSsl.SslOptionDisableCompression, True)
81f7aecc6599 Added code to work around a security vulnerability discovered in SSL (as recommended by Digia).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
88 except AttributeError:
81f7aecc6599 Added code to work around a security vulnerability discovered in SSL (as recommended by Digia).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
89 pass
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 QSslConfiguration.setDefaultConfiguration(sslCfg)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91
491
ac476c22d392 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
92 self.sslErrors.connect(self.__sslErrors)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93
491
ac476c22d392 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
94 self.proxyAuthenticationRequired.connect(proxyAuthenticationRequired)
ac476c22d392 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
95 self.authenticationRequired.connect(self.__authenticationRequired)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96
1314
7e7b88c58fda Added the "Do Not Track" feature.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1219
diff changeset
97 self.__doNotTrack = Preferences.getHelp("DoNotTrack")
7e7b88c58fda Added the "Do Not Track" feature.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1219
diff changeset
98
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 # register scheme handlers
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.setSchemeHandler("qthelp", QtHelpAccessHandler(engine, self))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 self.setSchemeHandler("pyrc", PyrcAccessHandler(self))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 self.setSchemeHandler("about", AboutAccessHandler(self))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 self.setSchemeHandler("abp", AdBlockAccessHandler(self))
278
c93823b96faa Added a handler for ftp: URLs to the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 270
diff changeset
104 self.setSchemeHandler("ftp", FtpAccessHandler(self))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 def setSchemeHandler(self, scheme, handler):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 Public method to register a scheme handler.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 @param scheme access scheme (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 @param handler reference to the scheme handler object (SchemeAccessHandler)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 self.__schemeHandlers[scheme] = handler
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 826
diff changeset
115 def createRequest(self, op, request, outgoingData=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 Protected method to create a request.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 @param op the operation to be performed (QNetworkAccessManager.Operation)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 @param request reference to the request object (QNetworkRequest)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 @param outgoingData reference to an IODevice containing data to be sent
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 (QIODevice)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 @return reference to the created reply object (QNetworkReply)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 scheme = request.url().scheme()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 if scheme == "https" and (not SSL_AVAILABLE or not QSslSocket.supportsSsl()):
666
fdd568d3533d Fixed a forgotten parenting of network replies in the network access manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 664
diff changeset
127 return NetworkProtocolUnknownErrorReply(scheme, self)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 if op == QNetworkAccessManager.PostOperation and outgoingData is not None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 outgoingDataByteArray = outgoingData.peek(1024 * 1024)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 Helpviewer.HelpWindow.HelpWindow.passwordManager().post(
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 request, outgoingDataByteArray)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 reply = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 if scheme in self.__schemeHandlers:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 reply = self.__schemeHandlers[scheme]\
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 .createRequest(op, request, outgoingData)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 if reply is not None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 return reply
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140
381
64ae9e09d8bc Extended the Ad-Blocker of the web browser and added capability to configure the text encoding of the web browser (needs Qt >= 4.6).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 286
diff changeset
141 req = QNetworkRequest(request)
64ae9e09d8bc Extended the Ad-Blocker of the web browser and added capability to configure the text encoding of the web browser (needs Qt >= 4.6).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 286
diff changeset
142 if hasattr(QNetworkRequest, 'HttpPipeliningAllowedAttribute'):
826
2e3e2055e715 Fixed a few PEP 8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
143 req.setAttribute(QNetworkRequest.HttpPipeliningAllowedAttribute, True)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 if not self.__acceptLanguage.isEmpty():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 req.setRawHeader("Accept-Language", self.__acceptLanguage)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146
629
c88489b378fb Added configuration options for the web browser cache policy.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 553
diff changeset
147 # set cache policy
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 826
diff changeset
148 req.setAttribute(QNetworkRequest.CacheLoadControlAttribute,
629
c88489b378fb Added configuration options for the web browser cache policy.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 553
diff changeset
149 Preferences.getHelp("CachePolicy"))
c88489b378fb Added configuration options for the web browser cache policy.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 553
diff changeset
150
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 # AdBlock code
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 if op == QNetworkAccessManager.GetOperation:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 if self.__adblockNetwork is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 self.__adblockNetwork = \
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 Helpviewer.HelpWindow.HelpWindow.adblockManager().network()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 reply = self.__adblockNetwork.block(req)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 if reply is not None:
666
fdd568d3533d Fixed a forgotten parenting of network replies in the network access manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 664
diff changeset
158 reply.setParent(self)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 return reply
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160
1314
7e7b88c58fda Added the "Do Not Track" feature.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1219
diff changeset
161 # Do Not Track feature
7e7b88c58fda Added the "Do Not Track" feature.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1219
diff changeset
162 if self.__doNotTrack:
7e7b88c58fda Added the "Do Not Track" feature.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1219
diff changeset
163 req.setRawHeader("DNT", "1")
7e7b88c58fda Added the "Do Not Track" feature.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1219
diff changeset
164
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 reply = QNetworkAccessManager.createRequest(self, op, req, outgoingData)
491
ac476c22d392 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 381
diff changeset
166 self.requestCreated.emit(op, req, reply)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 return reply
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 def __authenticationRequired(self, reply, auth):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 Private slot to handle an authentication request.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 @param reply reference to the reply object (QNetworkReply)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 @param auth reference to the authenticator object (QAuthenticator)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 urlRoot = "{0}://{1}"\
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 .format(reply.url().scheme(), reply.url().authority())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 if not auth.realm():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 info = self.trUtf8("<b>Enter username and password for '{0}'</b>")\
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 .format(urlRoot)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 info = self.trUtf8("<b>Enter username and password for '{0}', "
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 "realm '{1}'</b>").format(urlRoot, auth.realm())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 826
diff changeset
186 dlg = AuthenticationDialog(info, auth.user(),
1127
b1802ebe0066 Added capability to encrypt saved passwords with a master password and rearranged some configuration parameters related to security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1112
diff changeset
187 Preferences.getUser("SavePasswords"),
b1802ebe0066 Added capability to encrypt saved passwords with a master password and rearranged some configuration parameters related to security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1112
diff changeset
188 Preferences.getUser("SavePasswords"))
b1802ebe0066 Added capability to encrypt saved passwords with a master password and rearranged some configuration parameters related to security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1112
diff changeset
189 if Preferences.getUser("SavePasswords"):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 username, password = \
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 Helpviewer.HelpWindow.HelpWindow.passwordManager().getLogin(
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 reply.url(), auth.realm())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 if username:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 dlg.setData(username, password)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 if dlg.exec_() == QDialog.Accepted:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 username, password = dlg.getData()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 auth.setUser(username)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 auth.setPassword(password)
1127
b1802ebe0066 Added capability to encrypt saved passwords with a master password and rearranged some configuration parameters related to security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1112
diff changeset
199 if Preferences.getUser("SavePasswords"):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 Helpviewer.HelpWindow.HelpWindow.passwordManager().setLogin(
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 reply.url(), auth.realm(), username, password)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 def __sslErrors(self, reply, errors):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 Private slot to handle SSL errors.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 @param reply reference to the reply object (QNetworkReply)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 @param errors list of SSL errors (list of QSslError)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 """
748
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
210 caMerge = {}
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
211 certificateDict = Preferences.toDict(
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
212 Preferences.Prefs.settings.value("Help/CaCertificatesDict"))
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
213 for server in certificateDict:
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
214 caMerge[server] = QSslCertificate.fromData(certificateDict[server])
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 caNew = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 errorStrings = []
748
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
218 url = reply.url()
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
219 server = url.host()
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
220 if url.port() != -1:
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
221 server += ":{0:d}".format(url.port())
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 for err in errors:
664
3061f8bd826e Fixed a few issues on Windows systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 629
diff changeset
223 if err.error() == QSslError.NoError:
3061f8bd826e Fixed a few issues on Windows systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 629
diff changeset
224 continue
748
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
225 if server in caMerge and err.certificate() in caMerge[server]:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 continue
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 errorStrings.append(err.errorString())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 if not err.certificate().isNull():
748
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
229 cert = err.certificate()
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
230 if cert not in caNew:
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
231 caNew.append(cert)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 if not errorStrings:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 reply.ignoreSslErrors()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 errorString = '.</li><li>'.join(errorStrings)
541
00e1a5d060c5 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 539
diff changeset
237 ret = E5MessageBox.yesNo(None,
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 self.trUtf8("SSL Errors"),
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 self.trUtf8("""<p>SSL Errors for <br /><b>{0}</b>"""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 """<ul><li>{1}</li></ul></p>"""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 """<p>Do you want to ignore these errors?</p>""")\
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 .format(reply.url().toString(), errorString),
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 826
diff changeset
243 icon=E5MessageBox.Warning)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244
541
00e1a5d060c5 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 539
diff changeset
245 if ret:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 if len(caNew) > 0:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 certinfos = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 for cert in caNew:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 certinfos.append(self.__certToString(cert))
541
00e1a5d060c5 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 539
diff changeset
250 ret = E5MessageBox.yesNo(None,
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 self.trUtf8("Certificates"),
1367
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
252 self.trUtf8("""<p>Certificates:<br/>{0}<br/>"""
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
253 """Do you want to accept all these certificates?</p>""")\
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
254 .format("".join(certinfos)))
541
00e1a5d060c5 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 539
diff changeset
255 if ret:
748
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
256 if server not in caMerge:
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
257 caMerge[server] = []
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 for cert in caNew:
748
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
259 caMerge[server].append(cert)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 sslCfg = QSslConfiguration.defaultConfiguration()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 caList = sslCfg.caCertificates()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 for cert in caNew:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 caList.append(cert)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 sslCfg.setCaCertificates(caList)
1219
c051673f8aaf Added code to support any SSL protocol.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
266 sslCfg.setProtocol(QSsl.AnyProtocol)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 QSslConfiguration.setDefaultConfiguration(sslCfg)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 reply.setSslConfiguration(sslCfg)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269
748
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
270 certificateDict = {}
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
271 for server in caMerge:
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
272 pems = QByteArray()
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
273 for cert in caMerge[server]:
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
274 pems.append(cert.toPem() + '\n')
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
275 certificateDict[server] = pems
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 826
diff changeset
276 Preferences.Prefs.settings.setValue("Help/CaCertificatesDict",
748
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
277 certificateDict)
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
278 else:
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
279 reply.abort()
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
280 return
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 reply.ignoreSslErrors()
748
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
283
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
284 else:
eb7e73107d27 Improved the SSL certificate handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 721
diff changeset
285 reply.abort()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 def __certToString(self, cert):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 Private method to convert a certificate to a formatted string.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 @param cert certificate to convert (QSslCertificate)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 @return formatted string (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 """
1367
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
294 result = "<p>"
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295
721
9dd401431fcc Change the SSL error handling of the network access handler.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 666
diff changeset
296 result += self.trUtf8("Name: {0}")\
1367
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
297 .format(Qt.escape(Utilities.decodeString(
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
298 cert.subjectInfo(QSslCertificate.CommonName))))
721
9dd401431fcc Change the SSL error handling of the network access handler.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 666
diff changeset
299
1367
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
300 result += self.trUtf8("<br/>Organization: {0}")\
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
301 .format(Qt.escape(Utilities.decodeString(
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
302 cert.subjectInfo(QSslCertificate.Organization))))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303
1367
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
304 result += self.trUtf8("<br/>Issuer: {0}")\
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
305 .format(Qt.escape(Utilities.decodeString(
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
306 cert.issuerInfo(QSslCertificate.CommonName))))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307
1367
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
308 result += self.trUtf8("<br/>Not valid before: {0}<br/>Valid Until: {1}")\
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
309 .format(Qt.escape(cert.effectiveDate().toString("yyyy-MM-dd")),
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
310 Qt.escape(cert.expiryDate().toString("yyyy-MM-dd")))
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
311
a652a6794953 The last security fix has been redone to better comply with the old behavior but improving security.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1366
diff changeset
312 result += "</p>"
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 return result
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315
762
48190a225699 Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 753
diff changeset
316 def __getSystemCaCertificates(self):
48190a225699 Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 753
diff changeset
317 """
48190a225699 Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 753
diff changeset
318 Private method to get the list of system certificates.
48190a225699 Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 753
diff changeset
319
48190a225699 Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 753
diff changeset
320 @return list of system certificates (list of QSslCertificate)
48190a225699 Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 753
diff changeset
321 """
48190a225699 Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 753
diff changeset
322 caList = QSslCertificate.fromData(Preferences.toByteArray(
48190a225699 Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 753
diff changeset
323 Preferences.Prefs.settings.value("Help/SystemCertificates")))
48190a225699 Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 753
diff changeset
324 if not caList:
48190a225699 Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 753
diff changeset
325 caList = QSslSocket.systemCaCertificates()
48190a225699 Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 753
diff changeset
326 return caList
48190a225699 Enhanced the certificate manager of the web browser by code to import/export certificates and to delete system certificates.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 753
diff changeset
327
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 def preferencesChanged(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 Public slot to signal a change of preferences.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 self.__setDiskCache()
1314
7e7b88c58fda Added the "Do Not Track" feature.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1219
diff changeset
333
7e7b88c58fda Added the "Do Not Track" feature.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1219
diff changeset
334 self.__doNotTrack = Preferences.getHelp("DoNotTrack")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 def languagesChanged(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 Public slot to (re-)load the list of accepted languages.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 """
8
0ae9bd4d2993 Fixed a few bugs introduced introduced by the change to the QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
340 languages = Preferences.toList(
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 826
diff changeset
341 Preferences.Prefs.settings.value("Help/AcceptLanguages",
8
0ae9bd4d2993 Fixed a few bugs introduced introduced by the change to the QVariant v2 API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
342 HelpLanguagesDialog.defaultAcceptLanguages()))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 self.__acceptLanguage = HelpLanguagesDialog.httpString(languages)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 def __setDiskCache(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 Private method to set the disk cache.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 if NetworkDiskCache is not None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 if Preferences.getHelp("DiskCacheEnabled"):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 diskCache = NetworkDiskCache(self)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 location = os.path.join(Utilities.getConfigDir(), "browser", 'cache')
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 size = Preferences.getHelp("DiskCacheSize") * 1024 * 1024
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 diskCache.setCacheDirectory(location)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 diskCache.setMaximumCacheSize(size)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 diskCache = None
629
c88489b378fb Added configuration options for the web browser cache policy.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 553
diff changeset
358 self.setCache(diskCache)

eric ide

mercurial