diff --git a/src/common/connection.py b/src/common/connection.py index 950928944..bf8b25bc5 100644 --- a/src/common/connection.py +++ b/src/common/connection.py @@ -300,7 +300,8 @@ class CommonConnection: composing_xep, label, forward_from, delayed, session, form_node, user_nick, keyID, callback) - self.dispatch('GPG_ALWAYS_TRUST', _on_always_trust) + gajim.nec.push_incoming_event(GPGTrustKey(None, + conn=self, callback=_on_always_trust)) else: self._message_encrypted_cb(output, type_, msg, msgtxt, original_message, fjid, resource, jid, xhtml, diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py index 82d013d3f..eb43a7fb0 100644 --- a/src/common/connection_handlers.py +++ b/src/common/connection_handlers.py @@ -1991,8 +1991,8 @@ ConnectionJingle, ConnectionIBBytestream): signed = self.get_signed_presence(msg, self._send_first_presence) if signed is None: - self.dispatch('GPG_PASSWORD_REQUIRED', - (self._send_first_presence,)) + gajim.nec.push_incoming_event(GPGPasswordRequired(None, + conn=self, callback=self._send_first_presence)) # _send_first_presence will be called when user enter # passphrase send_first_presence = False diff --git a/src/common/connection_handlers_events.py b/src/common/connection_handlers_events.py index 6bbb2f5a0..9f6009d27 100644 --- a/src/common/connection_handlers_events.py +++ b/src/common/connection_handlers_events.py @@ -1373,3 +1373,15 @@ class CapsReceivedEvent(nec.NetworkIncomingEvent, HelperEvent): self.resource = self.base_event.resource self.client_caps = self.base_event.client_caps return True + +class GPGTrustKey(nec.NetworkIncomingEvent): + name = 'gpg-trust-key' + base_network_events = [] + +class GPGPasswordRequired(nec.NetworkIncomingEvent): + name = 'gpg-password-required' + base_network_events = [] + + def generate(self): + self.keyid = gajim.config.get_per('accounts', self.conn.name, 'keyid') + return True \ No newline at end of file diff --git a/src/gui_interface.py b/src/gui_interface.py index 62203d6b7..9c4db040b 100644 --- a/src/gui_interface.py +++ b/src/gui_interface.py @@ -876,26 +876,24 @@ class Interface: _('You are currently connected without your OpenPGP key.')) self.forget_gpg_passphrase(obj.keyID) - def handle_event_gpg_password_required(self, account, array): + def handle_event_gpg_password_required(self, obj): #('GPG_PASSWORD_REQUIRED', account, (callback,)) - callback = array[0] - keyid = gajim.config.get_per('accounts', account, 'keyid') - if keyid in self.gpg_passphrase: - request = self.gpg_passphrase[keyid] + if obj.keyid in self.gpg_passphrase: + request = self.gpg_passphrase[obj.keyid] else: - request = PassphraseRequest(keyid) - self.gpg_passphrase[keyid] = request - request.add_callback(account, callback) + request = PassphraseRequest(obj.keyid) + self.gpg_passphrase[obj.keyid] = request + request.add_callback(obj.conn.name, obj.callback) - def handle_event_gpg_always_trust(self, account, callback): + def handle_event_gpg_trust_key(self, obj): #('GPG_ALWAYS_TRUST', account, callback) def on_yes(checked): if checked: - gajim.connections[account].gpg.always_trust = True - callback(True) + obj.conn.gpg.always_trust = True + obj.callback(True) def on_no(): - callback(False) + obj.callback(False) dialogs.YesNoDialog(_('GPG key not trusted'), _('The GPG key used to ' 'encrypt this chat is not trusted. Do you really want to encrypt ' @@ -1731,8 +1729,6 @@ class Interface: [self.handle_event_unique_room_id_unsupported], 'UNIQUE_ROOM_ID_SUPPORTED': \ [self.handle_event_unique_room_id_supported], - 'GPG_PASSWORD_REQUIRED': [self.handle_event_gpg_password_required], - 'GPG_ALWAYS_TRUST': [self.handle_event_gpg_always_trust], 'PASSWORD_REQUIRED': [self.handle_event_password_required], 'SSL_ERROR': [self.handle_event_ssl_error], 'FINGERPRINT_ERROR': [self.handle_event_fingerprint_error], @@ -1747,6 +1743,8 @@ class Interface: 'gc-invitation-received': [self.handle_event_gc_invitation], 'gc-presence-received': [self.handle_event_gc_presence], 'gmail-notify': [self.handle_event_gmail_notify], + 'gpg_password-required': [self.handle_event_gpg_password_required], + 'gpg-trust-key': [self.handle_event_gpg_trust_key], 'http-auth-received': [self.handle_event_http_auth], 'iq-error-received': [self.handle_event_iq_error], 'jingle-connected-received': [self.handle_event_jingle_connected],