changeset 01e54826a3b4 in /home/hg/repos/gajim

details:http://hg.gajim.org/gajim?cmd=changeset;node=01e54826a3b4
description: use NEC to handle ssl error events

diffstat:

 src/common/connection.py                 |   6 ++++--
 src/common/connection_handlers_events.py |   4 ++++
 src/gui_interface.py                     |  28 +++++++++++++++-------------
 3 files changed, 23 insertions(+), 15 deletions(-)

diffs (107 lines):

diff -r d08b3ea4d147 -r 01e54826a3b4 src/common/connection.py
--- a/src/common/connection.py  Wed Nov 24 16:32:59 2010 +0100
+++ b/src/common/connection.py  Wed Nov 24 16:50:37 2010 +0100
@@ -1250,8 +1250,10 @@
                 text += _('\nSSL Error: <b>%s</b>') % ssl_error[errnum]
             else:
                 text += _('\nUnknown SSL error: %d') % errnum
-            self.dispatch('SSL_ERROR', (text, errnum, 
con.Connection.ssl_cert_pem,
-                    con.Connection.ssl_fingerprint_sha1))
+            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))
             return True
         if hasattr(con.Connection, 'ssl_fingerprint_sha1'):
             saved_fingerprint = gajim.config.get_per('accounts', self.name, 
'ssl_fingerprint_sha1')
diff -r d08b3ea4d147 -r 01e54826a3b4 src/common/connection_handlers_events.py
--- a/src/common/connection_handlers_events.py  Wed Nov 24 16:32:59 2010 +0100
+++ b/src/common/connection_handlers_events.py  Wed Nov 24 16:50:37 2010 +0100
@@ -1443,3 +1443,7 @@
 class InsecureSSLConnectionEvent(nec.NetworkIncomingEvent):
     name = 'insecure-ssl-connection'
     base_network_events = []
+
+class SSLErrorEvent(nec.NetworkIncomingEvent):
+    name = 'ssl-error'
+    base_network_events = []
diff -r d08b3ea4d147 -r 01e54826a3b4 src/gui_interface.py
--- a/src/gui_interface.py      Wed Nov 24 16:32:59 2010 +0100
+++ b/src/gui_interface.py      Wed Nov 24 16:50:37 2010 +0100
@@ -1413,8 +1413,9 @@
         instance = data[1]
         instance.unique_room_id_error(data[0])
 
-    def handle_event_ssl_error(self, account, data):
+    def handle_event_ssl_error(self, obj):
         # ('SSL_ERROR', account, (text, errnum, cert, sha1_fingerprint))
+        account = obj.conn.name
         server = gajim.config.get_per('accounts', account, 'hostname')
 
         def on_ok(is_checked):
@@ -1426,37 +1427,38 @@
                     f = open(gajim.MY_CACERTS)
                     certs = f.read()
                     f.close()
-                if data[2] in certs:
+                if obj.cert in certs:
                     dialogs.ErrorDialog(_('Certificate Already in File'),
                         _('This certificate is already in file %s, so it\'s '
                         'not added again.') % gajim.MY_CACERTS)
                 else:
                     f = open(gajim.MY_CACERTS, 'a')
                     f.write(server + '\n')
-                    f.write(data[2] + '\n\n')
+                    f.write(obj.cert + '\n\n')
                     f.close()
                 gajim.config.set_per('accounts', account,
-                    'ssl_fingerprint_sha1', data[3])
+                    'ssl_fingerprint_sha1', obj.fingerprint)
             if is_checked[1]:
                 ignore_ssl_errors = gajim.config.get_per('accounts', account,
-                        'ignore_ssl_errors').split()
-                ignore_ssl_errors.append(str(data[1]))
+                    'ignore_ssl_errors').split()
+                ignore_ssl_errors.append(str(obj.error_num))
                 gajim.config.set_per('accounts', account, 'ignore_ssl_errors',
-                        ' '.join(ignore_ssl_errors))
-            gajim.connections[account].ssl_certificate_accepted()
+                    ' '.join(ignore_ssl_errors))
+            obj.conn.ssl_certificate_accepted()
 
         def on_cancel():
             del self.instances[account]['online_dialog']['ssl_error']
-            gajim.connections[account].disconnect(on_purpose=True)
+            iobj.conn.disconnect(on_purpose=True)
             self.handle_event_status(account, 'offline')
 
         pritext = _('Error verifying SSL certificate')
         sectext = _('There was an error verifying the SSL certificate of your '
             'jabber server: %(error)s\nDo you still want to connect to this '
-            'server?') % {'error': data[0]}
-        if data[1] in (18, 27):
+            'server?') % {'error': obj.error_text}
+        if obj.error_num in (18, 27):
             checktext1 = _('Add this certificate to the list of trusted '
-            'certificates.\nSHA1 fingerprint of the certificate:\n%s') % 
data[3]
+            'certificates.\nSHA1 fingerprint of the certificate:\n%s') % \
+            obj.fingerprint
         else:
             checktext1 = ''
         checktext2 = _('Ignore this error for this certificate.')
@@ -1640,7 +1642,6 @@
             'UNIQUE_ROOM_ID_SUPPORTED': \
                 [self.handle_event_unique_room_id_supported],
             'PASSWORD_REQUIRED': [self.handle_event_password_required],
-            'SSL_ERROR': [self.handle_event_ssl_error],
             'FINGERPRINT_ERROR': [self.handle_event_fingerprint_error],
             'atom-entry-received': [self.handle_atom_entry],
             'bad-gpg-passphrase': [self.handle_event_bad_gpg_passphrase],
@@ -1672,6 +1673,7 @@
             'roster-info': [self.handle_event_roster_info],
             'roster-item-exchange-received': \
                 [self.handle_event_roster_item_exchange],
+            'ssl-error': [self.handle_event_ssl_error],
             'stream-conflict-received': [self.handle_event_resource_conflict],
             'subscribe-presence-received': [
                 self.handle_event_subscribe_presence],
_______________________________________________
Commits mailing list
[email protected]
http://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to