Network/IRC/IrcWidget.py

changeset 2354
c63de4af553d
parent 2339
4ee173db22c2
child 2360
b6bf3925e3e1
equal deleted inserted replaced
2352:21971ebfaaef 2354:c63de4af553d
12 12
13 from PyQt4.QtCore import pyqtSlot, pyqtSignal, Qt, QByteArray, QTimer 13 from PyQt4.QtCore import pyqtSlot, pyqtSignal, Qt, QByteArray, QTimer
14 from PyQt4.QtGui import QWidget, QToolButton, QLabel, QTabWidget 14 from PyQt4.QtGui import QWidget, QToolButton, QLabel, QTabWidget
15 from PyQt4.QtNetwork import QTcpSocket, QAbstractSocket 15 from PyQt4.QtNetwork import QTcpSocket, QAbstractSocket
16 try: 16 try:
17 from PyQt4.QtNetwork import QSslSocket, QSslError # __IGNORE_EXCEPTION__ __IGNORE_WARNING__ 17 from PyQt4.QtNetwork import QSslSocket, QSslConfiguration
18 from E5Network.E5SslErrorHandler import E5SslErrorHandler
18 SSL_AVAILABLE = True 19 SSL_AVAILABLE = True
19 except ImportError: 20 except ImportError:
20 SSL_AVAILABLE = False 21 SSL_AVAILABLE = False
21 22
22 from E5Gui import E5MessageBox 23 from E5Gui import E5MessageBox
86 87
87 self.__buffer = "" 88 self.__buffer = ""
88 self.__userPrefix = {} 89 self.__userPrefix = {}
89 90
90 self.__socket = None 91 self.__socket = None
92 if SSL_AVAILABLE:
93 self.__sslErrorHandler = E5SslErrorHandler(self)
94 else:
95 self.__sslErrorHandler = None
91 96
92 self.__patterns = [ 97 self.__patterns = [
93 # :foo_!n=foo@foohost.bar.net PRIVMSG bar_ :some long message 98 # :foo_!n=foo@foohost.bar.net PRIVMSG bar_ :some long message
94 (re.compile(r":([^!]+)!([^ ]+)\sPRIVMSG\s([^ ]+)\s:(.*)"), self.__query), 99 (re.compile(r":([^!]+)!([^ ]+)\sPRIVMSG\s([^ ]+)\s:(.*)"), self.__query),
95 # :foo.bar.net COMMAND some message 100 # :foo.bar.net COMMAND some message
726 """ 731 """
727 Private slot to handle SSL errors. 732 Private slot to handle SSL errors.
728 733
729 @param errors list of SSL errors (list of QSslError) 734 @param errors list of SSL errors (list of QSslError)
730 """ 735 """
731 errorString = "" 736 ignore, defaultChanged = self.__sslErrorHandler.sslErrors(
732 if errors: 737 errors, self.__server.getName(), self.__server.getPort())
733 self.__sslErrorLock = True 738 if ignore:
734 errorStrings = [] 739 if defaultChanged:
735 for err in errors: 740 self.__socket.setSslConfiguration(
736 errorStrings.append(err.errorString()) 741 QSslConfiguration.defaultConfiguration())
737 errorString = '.<br/>'.join(errorStrings)
738 ret = E5MessageBox.yesNo(self,
739 self.trUtf8("SSL Errors"),
740 self.trUtf8("""<p>SSL Errors:</p>"""
741 """<p>{0}</p>"""
742 """<p>Do you want to ignore these errors?</p>""")\
743 .format(errorString),
744 icon=E5MessageBox.Warning)
745 self.__sslErrorLock = False
746 else:
747 ret = True
748 if ret:
749 self.networkWidget.addErrorMessage(self.trUtf8("SSL Error"), 742 self.networkWidget.addErrorMessage(self.trUtf8("SSL Error"),
750 self.trUtf8("""The SSL certificate for the server {0} (port {1})""" 743 self.trUtf8("""The SSL certificate for the server {0} (port {1})"""
751 """ failed the authenticity check.""").format( 744 """ failed the authenticity check.""").format(
752 self.__server.getName(), self.__server.getPort())) 745 self.__server.getName(), self.__server.getPort()))
753 if self.__connectionState == IrcWidget.ServerConnecting: 746 if self.__connectionState == IrcWidget.ServerConnecting:
755 else: 748 else:
756 self.networkWidget.addErrorMessage(self.trUtf8("SSL Error"), 749 self.networkWidget.addErrorMessage(self.trUtf8("SSL Error"),
757 self.trUtf8("""Could not connect to {0} (port {1}) using an SSL""" 750 self.trUtf8("""Could not connect to {0} (port {1}) using an SSL"""
758 """ encrypted connection. Either the server does not""" 751 """ encrypted connection. Either the server does not"""
759 """ support SSL (did you use the correct port?) or""" 752 """ support SSL (did you use the correct port?) or"""
760 """ you rejected the certificate.<br/>{2}""").format( 753 """ you rejected the certificate.""").format(
761 self.__server.getName(), self.__server.getPort(), errorString)) 754 self.__server.getName(), self.__server.getPort()))
762 self.__socket.close() 755 self.__socket.close()
763 756
764 def __setUserPrivilegePrefix(self, prefix1, prefix2): 757 def __setUserPrivilegePrefix(self, prefix1, prefix2):
765 """ 758 """
766 Private method to set the user privilege prefix. 759 Private method to set the user privilege prefix.

eric ide

mercurial