WebBrowser/Network/NetworkManager.py

Sat, 31 Dec 2016 13:44:13 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 31 Dec 2016 13:44:13 +0100
branch
maintenance
changeset 5391
5e79ebb03b10
parent 5369
69705ef2a0af
parent 5389
9b1c800daff3
child 5730
6422afc7adc4
permissions
-rw-r--r--

Merged with the default branch to prepare the 17.01 release.

4725
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
5389
9b1c800daff3 Updated copyright for 2017.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5366
diff changeset
3 # Copyright (c) 2016 - 2017 Detlev Offenbach <detlev@die-offenbachs.de>
4725
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a network manager class.
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
4726
c26e2a2dc0cb Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4725
diff changeset
10 from __future__ import unicode_literals
c26e2a2dc0cb Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4725
diff changeset
11
4817
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
12 import json
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
13
4858
19dff9c9cf26 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4857
diff changeset
14 from PyQt5.QtCore import pyqtSignal, QByteArray
5365
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
15 from PyQt5.QtWidgets import qApp, QStyle, QDialog
4902
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
16 from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkProxy, \
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
17 QNetworkRequest
5365
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
18 from PyQt5.QtWebEngineWidgets import QWebEnginePage
4725
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 from E5Gui import E5MessageBox
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
4743
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
22 from E5Network.E5NetworkProxyFactory import proxyAuthenticationRequired
4786
b149def67c6e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4766
diff changeset
23 try:
b149def67c6e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4766
diff changeset
24 from E5Network.E5SslErrorHandler import E5SslErrorHandler
b149def67c6e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4766
diff changeset
25 SSL_AVAILABLE = True
b149def67c6e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4766
diff changeset
26 except ImportError:
b149def67c6e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4766
diff changeset
27 SSL_AVAILABLE = False
4743
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
28
4758
c973eef8fef1 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4754
diff changeset
29 from WebBrowser.WebBrowserWindow import WebBrowserWindow
4857
8dba5fb92f12 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4845
diff changeset
30 from .NetworkUrlInterceptor import NetworkUrlInterceptor
5365
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
31 from ..Tools.WebBrowserTools import readAllFileContents, pixmapToDataUrl
4758
c973eef8fef1 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4754
diff changeset
32
4817
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
33 from Utilities.AutoSaver import AutoSaver
4743
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
34 import Preferences
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
35
4725
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 class NetworkManager(QNetworkAccessManager):
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 Class implementing a network manager.
4817
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
40
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
41 @signal changed() emitted to indicate a change
4725
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
4817
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
43 changed = pyqtSignal()
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
44
4875
4ee26909ac0d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
45 def __init__(self, engine, parent=None):
4725
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 """
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 Constructor
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48
4875
4ee26909ac0d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
49 @param engine reference to the help engine (QHelpEngine)
4725
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 @param parent reference to the parent object (QObject)
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 super(NetworkManager, self).__init__(parent)
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53
4827
778ccdf3417e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4825
diff changeset
54 if not WebBrowserWindow._fromEric:
4758
c973eef8fef1 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4754
diff changeset
55 from PyQt5.QtNetwork import QNetworkProxyFactory
c973eef8fef1 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4754
diff changeset
56 from E5Network.E5NetworkProxyFactory import E5NetworkProxyFactory
c973eef8fef1 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4754
diff changeset
57
c973eef8fef1 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4754
diff changeset
58 self.__proxyFactory = E5NetworkProxyFactory()
c973eef8fef1 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4754
diff changeset
59 QNetworkProxyFactory.setApplicationProxyFactory(
c973eef8fef1 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4754
diff changeset
60 self.__proxyFactory)
c973eef8fef1 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4754
diff changeset
61
4754
1ff6d0ecb2fd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4745
diff changeset
62 self.languagesChanged()
1ff6d0ecb2fd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4745
diff changeset
63
4786
b149def67c6e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4766
diff changeset
64 if SSL_AVAILABLE:
b149def67c6e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4766
diff changeset
65 self.__sslErrorHandler = E5SslErrorHandler(self)
b149def67c6e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4766
diff changeset
66 self.sslErrors.connect(self.__sslErrorHandler.sslErrorsReplySlot)
4725
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67
4817
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
68 self.__temporarilyIgnoredSslErrors = {}
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
69 self.__permanentlyIgnoredSslErrors = {}
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
70 # dictionaries of permanently and temporarily ignored SSL errors
4786
b149def67c6e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4766
diff changeset
71
4817
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
72 self.__loaded = False
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
73 self.__saveTimer = AutoSaver(self, self.__save)
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
74
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
75 self.changed.connect(self.__saveTimer.changeOccurred)
4786
b149def67c6e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4766
diff changeset
76 self.proxyAuthenticationRequired.connect(proxyAuthenticationRequired)
4743
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
77 self.authenticationRequired.connect(
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
78 lambda reply, auth: self.authentication(reply.url(), auth))
4825
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
79
4858
19dff9c9cf26 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4857
diff changeset
80 from .EricSchemeHandler import EricSchemeHandler
19dff9c9cf26 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4857
diff changeset
81 self.__ericSchemeHandler = EricSchemeHandler()
19dff9c9cf26 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4857
diff changeset
82 WebBrowserWindow.webProfile().installUrlSchemeHandler(
19dff9c9cf26 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4857
diff changeset
83 QByteArray(b"eric"), self.__ericSchemeHandler)
4825
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
84
4875
4ee26909ac0d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
85 if engine:
4ee26909ac0d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
86 from .QtHelpSchemeHandler import QtHelpSchemeHandler
4ee26909ac0d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
87 self.__qtHelpSchemeHandler = QtHelpSchemeHandler(engine)
4ee26909ac0d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
88 WebBrowserWindow.webProfile().installUrlSchemeHandler(
4ee26909ac0d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
89 QByteArray(b"qthelp"), self.__qtHelpSchemeHandler)
4ee26909ac0d Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4858
diff changeset
90
4857
8dba5fb92f12 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4845
diff changeset
91 self.__interceptor = NetworkUrlInterceptor(self)
8dba5fb92f12 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4845
diff changeset
92 WebBrowserWindow.webProfile().setRequestInterceptor(self.__interceptor)
4825
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
93
4845
2d22ff71c005 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4827
diff changeset
94 WebBrowserWindow.cookieJar()
4725
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95
4817
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
96 def __save(self):
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
97 """
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
98 Private slot to save the permanent SSL error exceptions.
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
99 """
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
100 if not self.__loaded:
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
101 return
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
102
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
103 from WebBrowser.WebBrowserWindow import WebBrowserWindow
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
104 if not WebBrowserWindow.isPrivate():
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
105 dbString = json.dumps(self.__permanentlyIgnoredSslErrors)
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
106 Preferences.setWebBrowser("SslExceptionsDB", dbString)
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
107
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
108 def __load(self):
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
109 """
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
110 Private method to load the permanent SSL error exceptions.
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
111 """
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
112 if self.__loaded:
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
113 return
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
114
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
115 dbString = Preferences.getWebBrowser("SslExceptionsDB")
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
116 if dbString:
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
117 try:
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
118 db = json.loads(dbString)
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
119 self.__permanentlyIgnoredSslErrors = db
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
120 except ValueError:
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
121 # ignore silently
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
122 pass
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
123
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
124 self.__loaded = True
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
125
4820
f38e4fb83ecd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4819
diff changeset
126 def shutdown(self):
f38e4fb83ecd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4819
diff changeset
127 """
f38e4fb83ecd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4819
diff changeset
128 Public method to shut down the network manager.
f38e4fb83ecd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4819
diff changeset
129 """
f38e4fb83ecd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4819
diff changeset
130 self.__saveTimer.saveIfNeccessary()
f38e4fb83ecd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4819
diff changeset
131 self.__loaded = False
f38e4fb83ecd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4819
diff changeset
132 self.__temporarilyIgnoredSslErrors = {}
f38e4fb83ecd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4819
diff changeset
133 self.__permanentlyIgnoredSslErrors = {}
f38e4fb83ecd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4819
diff changeset
134
4817
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
135 def showSslErrorExceptionsDialog(self):
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
136 """
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
137 Public method to show the SSL error exceptions dialog.
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
138 """
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
139 self.__load()
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
140
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
141 from .SslErrorExceptionsDialog import SslErrorExceptionsDialog
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
142 dlg = SslErrorExceptionsDialog(self.__permanentlyIgnoredSslErrors)
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
143 if dlg.exec_() == QDialog.Accepted:
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
144 self.__permanentlyIgnoredSslErrors = dlg.getSslErrorExceptions()
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
145 self.changed.emit()
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
146
4819
cb0672f0fc15 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4817
diff changeset
147 def clearSslExceptions(self):
cb0672f0fc15 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4817
diff changeset
148 """
cb0672f0fc15 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4817
diff changeset
149 Public method to clear the permanent SSL certificate error exceptions.
cb0672f0fc15 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4817
diff changeset
150 """
cb0672f0fc15 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4817
diff changeset
151 self.__load()
cb0672f0fc15 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4817
diff changeset
152
cb0672f0fc15 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4817
diff changeset
153 self.__permanentlyIgnoredSslErrors = {}
cb0672f0fc15 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4817
diff changeset
154 self.changed.emit()
4820
f38e4fb83ecd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4819
diff changeset
155 self.__saveTimer.saveIfNeccessary()
4819
cb0672f0fc15 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4817
diff changeset
156
4725
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 def certificateError(self, error, view):
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 """
4726
c26e2a2dc0cb Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4725
diff changeset
159 Public method to handle SSL certificate errors.
4725
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 @param error object containing the certificate error information
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 @type QWebEngineCertificateError
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 @param view reference to a view to be used as parent for the dialog
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 @type QWidget
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 @return flag indicating to ignore this error
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 @rtype bool
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 """
4817
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
168 self.__load()
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
169
4725
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 host = error.url().host()
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171
4817
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
172 if host in self.__temporarilyIgnoredSslErrors and \
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
173 error.error() in self.__temporarilyIgnoredSslErrors[host]:
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
174 return True
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
175
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
176 if host in self.__permanentlyIgnoredSslErrors and \
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
177 error.error() in self.__permanentlyIgnoredSslErrors[host]:
4725
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 return True
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 title = self.tr("SSL Certificate Error")
4817
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
181 msgBox = E5MessageBox.E5MessageBox(
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
182 E5MessageBox.Warning,
4725
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 title,
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 self.tr("""<b>{0}</b>"""
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 """<p>The page you are trying to access has errors"""
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 """ in the SSL certificate.</p>"""
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 """<ul><li>{1}</li></ul>"""
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 """<p>Would you like to make an exception?</p>""")
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 .format(title, error.errorDescription()),
4817
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
190 modal=True, parent=view)
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
191 permButton = msgBox.addButton(self.tr("&Permanent accept"),
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
192 E5MessageBox.AcceptRole)
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
193 tempButton = msgBox.addButton(self.tr("&Temporary accept"),
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
194 E5MessageBox.AcceptRole)
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
195 msgBox.addButton(self.tr("&Reject"), E5MessageBox.RejectRole)
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
196 msgBox.exec_()
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
197 if msgBox.clickedButton() == permButton:
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
198 if host not in self.__permanentlyIgnoredSslErrors:
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
199 self.__permanentlyIgnoredSslErrors[host] = []
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
200 self.__permanentlyIgnoredSslErrors[host].append(error.error())
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
201 self.changed.emit()
4725
b19ff70ba509 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 return True
4817
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
203 elif msgBox.clickedButton() == tempButton:
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
204 if host not in self.__temporarilyIgnoredSslErrors:
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
205 self.__temporarilyIgnoredSslErrors[host] = []
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
206 self.__temporarilyIgnoredSslErrors[host].append(error.error())
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
207 return True
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
208 else:
0a4e2fb0e93c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4786
diff changeset
209 return False
4743
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
210
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
211 def authentication(self, url, auth):
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
212 """
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
213 Public slot to handle an authentication request.
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
214
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
215 @param url URL requesting authentication (QUrl)
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
216 @param auth reference to the authenticator object (QAuthenticator)
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
217 """
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
218 urlRoot = "{0}://{1}"\
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
219 .format(url.scheme(), url.authority())
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
220 realm = auth.realm()
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
221 if not realm and 'realm' in auth.options():
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
222 realm = auth.option("realm")
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
223 if realm:
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
224 info = self.tr("<b>Enter username and password for '{0}', "
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
225 "realm '{1}'</b>").format(urlRoot, realm)
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
226 else:
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
227 info = self.tr("<b>Enter username and password for '{0}'</b>")\
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
228 .format(urlRoot)
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
229
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
230 from UI.AuthenticationDialog import AuthenticationDialog
4745
285bfd224a1b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4743
diff changeset
231 import WebBrowser.WebBrowserWindow
4743
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
232
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
233 dlg = AuthenticationDialog(info, auth.user(),
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
234 Preferences.getUser("SavePasswords"),
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
235 Preferences.getUser("SavePasswords"))
4745
285bfd224a1b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4743
diff changeset
236 if Preferences.getUser("SavePasswords"):
285bfd224a1b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4743
diff changeset
237 username, password = \
285bfd224a1b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4743
diff changeset
238 WebBrowser.WebBrowserWindow.WebBrowserWindow.passwordManager()\
285bfd224a1b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4743
diff changeset
239 .getLogin(url, realm)
285bfd224a1b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4743
diff changeset
240 if username:
285bfd224a1b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4743
diff changeset
241 dlg.setData(username, password)
4743
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
242 if dlg.exec_() == QDialog.Accepted:
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
243 username, password = dlg.getData()
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
244 auth.setUser(username)
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
245 auth.setPassword(password)
5366
001edc0a0807 Fixed a little issue using the authentication dialog from the old and new web browsers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5365
diff changeset
246 if Preferences.getUser("SavePasswords") and dlg.shallSave():
4745
285bfd224a1b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4743
diff changeset
247 WebBrowser.WebBrowserWindow.WebBrowserWindow.passwordManager()\
4917
682750cc7bd5 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4902
diff changeset
248 .setLogin(url, realm, username, password)
5365
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
249 else:
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
250 page = self.sender()
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
251 if isinstance(page, QWebEnginePage):
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
252 self.__showAuthenticationErrorPage(page, url)
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
253
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
254 def __showAuthenticationErrorPage(self, page, url):
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
255 """
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
256 Private method to show an authentication error page.
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
257
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
258 @param page reference to the page
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
259 @type QWebEnginePage
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
260 @param url reference to the URL requesting authentication
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
261 @type QUrl
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
262 """
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
263 html = readAllFileContents(":/html/authenticationErrorPage.html")
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
264 html = html.replace("@IMAGE@", pixmapToDataUrl(
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
265 qApp.style().standardIcon(QStyle.SP_MessageBoxCritical).pixmap(
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
266 48, 48)).toString())
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
267 html = html.replace("@FAVICON@", pixmapToDataUrl(
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
268 qApp.style() .standardIcon(QStyle.SP_MessageBoxCritical).pixmap(
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
269 16, 16)).toString())
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
270 html = html.replace("@TITLE@", self.tr("Authentication required"))
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
271 html = html.replace("@H1@", self.tr("Authentication required"))
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
272 html = html.replace(
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
273 "@LI-1@",
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
274 self.tr("Authentication is required to access:"))
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
275 html = html.replace(
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
276 "@LI-2@",
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
277 '<a href="{0}">{0}</a>'.format(url.toString()))
f0cb73e99e54 Added an error page to be shown if an authentication request is cancelled.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4917
diff changeset
278 page.setHtml(html, url)
4743
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
279
4786
b149def67c6e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4766
diff changeset
280 def proxyAuthentication(self, requestUrl, auth, proxyHost):
4743
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
281 """
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
282 Public slot to handle a proxy authentication request.
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
283
4786
b149def67c6e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4766
diff changeset
284 @param requestUrl requested URL
b149def67c6e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4766
diff changeset
285 @type QUrl
b149def67c6e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4766
diff changeset
286 @param auth reference to the authenticator object
b149def67c6e Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4766
diff changeset
287 @type QAuthenticator
4917
682750cc7bd5 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4902
diff changeset
288 @param proxyHost name of the proxy host
4743
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
289 @type str
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
290 """
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
291 proxy = QNetworkProxy.applicationProxy()
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
292 if proxy.user() and proxy.password():
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
293 auth.setUser(proxy.user())
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
294 auth.setPassword(proxy.password())
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
295 return
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
296
f9e2e536d130 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4726
diff changeset
297 proxyAuthenticationRequired(proxy, auth)
4754
1ff6d0ecb2fd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4745
diff changeset
298
1ff6d0ecb2fd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4745
diff changeset
299 def languagesChanged(self):
1ff6d0ecb2fd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4745
diff changeset
300 """
1ff6d0ecb2fd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4745
diff changeset
301 Public slot to (re-)load the list of accepted languages.
1ff6d0ecb2fd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4745
diff changeset
302 """
1ff6d0ecb2fd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4745
diff changeset
303 from WebBrowser.WebBrowserLanguagesDialog import \
1ff6d0ecb2fd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4745
diff changeset
304 WebBrowserLanguagesDialog
1ff6d0ecb2fd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4745
diff changeset
305 languages = Preferences.toList(
1ff6d0ecb2fd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4745
diff changeset
306 Preferences.Prefs.settings.value(
1ff6d0ecb2fd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4745
diff changeset
307 "WebBrowser/AcceptLanguages",
1ff6d0ecb2fd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4745
diff changeset
308 WebBrowserLanguagesDialog.defaultAcceptLanguages()))
1ff6d0ecb2fd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4745
diff changeset
309 self.__acceptLanguage = WebBrowserLanguagesDialog.httpString(languages)
1ff6d0ecb2fd Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4745
diff changeset
310
4858
19dff9c9cf26 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4857
diff changeset
311 WebBrowserWindow.webProfile().setHttpAcceptLanguage(
19dff9c9cf26 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4857
diff changeset
312 self.__acceptLanguage)
4766
5f8d08aa2217 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4758
diff changeset
313
5f8d08aa2217 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4758
diff changeset
314 def installUrlInterceptor(self, interceptor):
4825
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
315 """
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
316 Public method to install an URL interceptor.
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
317
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
318 @param interceptor URL interceptor to be installed
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
319 @type UrlInterceptor
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
320 """
4858
19dff9c9cf26 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4857
diff changeset
321 self.__interceptor.installUrlInterceptor(interceptor)
4766
5f8d08aa2217 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4758
diff changeset
322
5f8d08aa2217 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4758
diff changeset
323 def removeUrlInterceptor(self, interceptor):
4825
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
324 """
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
325 Public method to remove an URL interceptor.
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
326
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
327 @param interceptor URL interceptor to be removed
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
328 @type UrlInterceptor
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
329 """
4858
19dff9c9cf26 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4857
diff changeset
330 self.__interceptor.removeUrlInterceptor(interceptor)
4825
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
331
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
332 def preferencesChanged(self):
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
333 """
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
334 Public slot to handle a change of preferences.
b5fb58f3830b Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4820
diff changeset
335 """
4858
19dff9c9cf26 Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4857
diff changeset
336 self.__interceptor.preferencesChanged()
4902
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
337
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
338 def createRequest(self, op, request, data):
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
339 """
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
340 Public method to launch a network action.
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
341
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
342 @param op operation to be performed
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
343 @type QNetworkAccessManager.Operation
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
344 @param request request to be operated on
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
345 @type QNetworkRequest
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
346 @param data reference to the data to be sent
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
347 @type QIODevice
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
348 @return reference to the network reply
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
349 @rtype QNetworkReply
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
350 """
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
351 req = QNetworkRequest(request)
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
352 req.setAttribute(QNetworkRequest.SpdyAllowedAttribute, True)
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
353 req.setAttribute(QNetworkRequest.FollowRedirectsAttribute, True)
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
354
7a49807e493c Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4886
diff changeset
355 return super(NetworkManager, self).createRequest(op, req, data)

eric ide

mercurial