Add ssl-strict setting

This commit is contained in:
Florian Bruhin 2014-05-12 11:22:32 +02:00
parent df3528e454
commit 57e465bb2d
2 changed files with 22 additions and 0 deletions

View File

@ -227,6 +227,10 @@ DATA = OrderedDict([
('proxy', ('proxy',
SettingValue(types.Proxy(), 'system'), SettingValue(types.Proxy(), 'system'),
"The proxy to use."), "The proxy to use."),
('ssl-strict',
SettingValue(types.Bool(), 'true'),
"Whether to validate SSL handshakes."),
)), )),
('completion', sect.KeyValue( ('completion', sect.KeyValue(

View File

@ -17,9 +17,11 @@
"""Our own QNetworkAccessManager.""" """Our own QNetworkAccessManager."""
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtNetwork import QNetworkAccessManager from PyQt5.QtNetwork import QNetworkAccessManager
import qutebrowser.config.config as config import qutebrowser.config.config as config
import qutebrowser.utils.message as message
from qutebrowser.network.qutescheme import QuteSchemeHandler from qutebrowser.network.qutescheme import QuteSchemeHandler
@ -41,12 +43,28 @@ class NetworkManager(QNetworkAccessManager):
} }
if cookiejar is not None: if cookiejar is not None:
self.setCookieJar(cookiejar) self.setCookieJar(cookiejar)
self.sslErrors.connect(self.on_ssl_errors)
def abort_requests(self): def abort_requests(self):
"""Abort all running requests.""" """Abort all running requests."""
for request in self._requests.values(): for request in self._requests.values():
request.abort() request.abort()
@pyqtSlot('QNetworkReply', 'QList<QSslError>')
def on_ssl_errors(self, reply, errors):
"""This slot is called on SSL/TLS errors.
Args:
reply: The QNetworkReply that is encountering the errors.
errors: A list of errors.
"""
if config.get('network', 'ssl-strict'):
return
for err in errors:
message.error('SSL error: {}'.format(err.errorString()))
reply.ignoreSslErrors()
def createRequest(self, op, req, outgoing_data): def createRequest(self, op, req, outgoing_data):
"""Return a new QNetworkReply object. """Return a new QNetworkReply object.