diff --git a/src/common/connection.py b/src/common/connection.py index be74de6f64c3aa4e7f2f8fc128cfd1015289ac7d..f13cf8ada1a0d323e5a58d1c95779cefc58a01f4 100644 --- a/src/common/connection.py +++ b/src/common/connection.py @@ -1273,7 +1273,8 @@ class Connection(CommonConnection, ConnectionHandlers): gajim.nec.push_incoming_event(SSLErrorEvent(None, conn=self, error_text=text, error_num=errnum, cert=con.Connection.ssl_cert_pem, - fingerprint=con.Connection.ssl_fingerprint_sha1)) + fingerprint=con.Connection.ssl_fingerprint_sha1, + certificate=con.Connection.ssl_certificate)) return True if hasattr(con.Connection, 'ssl_fingerprint_sha1'): saved_fingerprint = gajim.config.get_per('accounts', self.name, 'ssl_fingerprint_sha1') diff --git a/src/dialogs.py b/src/dialogs.py index 982c55c1790134e8e3beca67a6bebff0e39ed2ee..725a36297ef7ed0eaa2880297c2203aefb3b54a4 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -5646,11 +5646,28 @@ class CheckFingerprintDialog(YesNoDialog): self.cert = certificate YesNoDialog.__init__(self, pritext, sectext, checktext, on_response_yes, on_response_no) - b = gtk.Button('View cert...') + b = gtk.Button(_('View cert...')) b.connect('clicked', self.on_cert_clicked) b.show_all() area = self.get_action_area() area.pack_start(b) def on_cert_clicked(self, button): - d = CertificatDialog(self, self.account, self.cert) \ No newline at end of file + d = CertificatDialog(self, self.account, self.cert) + +class SSLErrorDialog(ConfirmationDialogDoubleCheck): + def __init__(self, account, certificate, pritext, sectext, checktext1, + checktext2, on_response_ok=None, on_response_cancel=None): + self.account = account + self.cert = certificate + ConfirmationDialogDoubleCheck.__init__(self, pritext, sectext, + checktext1, checktext2, on_response_ok, on_response_cancel, + is_modal=False) + b = gtk.Button(_('View cert...')) + b.connect('clicked', self.on_cert_clicked) + b.show_all() + area = self.get_action_area() + area.pack_start(b) + + def on_cert_clicked(self, button): + d = CertificatDialog(self, self.account, self.cert) diff --git a/src/gui_interface.py b/src/gui_interface.py index a5c1a5366d4da457fba24662b8c52592a3b168a7..09236cbaf0b32369a2df441c5984cbd1327d7ed3 100644 --- a/src/gui_interface.py +++ b/src/gui_interface.py @@ -1219,8 +1219,9 @@ class Interface: if 'ssl_error' in self.instances[account]['online_dialog']: self.instances[account]['online_dialog']['ssl_error'].destroy() self.instances[account]['online_dialog']['ssl_error'] = \ - dialogs.ConfirmationDialogDoubleCheck(pritext, sectext, checktext1, - checktext2, on_response_ok=on_ok, on_response_cancel=on_cancel) + dialogs.SSLErrorDialog(obj.conn.name, obj.certificate, pritext, + sectext, checktext1, checktext2, on_response_ok=on_ok, + on_response_cancel=on_cancel) def handle_event_fingerprint_error(self, obj): # ('FINGERPRINT_ERROR', account, (new_fingerprint,))