use NEC to handle gpg paswword things

This commit is contained in:
Yann Leboulanger 2010-11-17 23:52:14 +01:00
parent d94a85f5a2
commit 10b735636d
4 changed files with 28 additions and 17 deletions

View File

@ -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,

View File

@ -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

View File

@ -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

View File

@ -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],