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, composing_xep, label, forward_from, delayed,
session, form_node, user_nick, keyID, session, form_node, user_nick, keyID,
callback) callback)
self.dispatch('GPG_ALWAYS_TRUST', _on_always_trust) gajim.nec.push_incoming_event(GPGTrustKey(None,
conn=self, callback=_on_always_trust))
else: else:
self._message_encrypted_cb(output, type_, msg, msgtxt, self._message_encrypted_cb(output, type_, msg, msgtxt,
original_message, fjid, resource, jid, xhtml, original_message, fjid, resource, jid, xhtml,

View File

@ -1991,8 +1991,8 @@ ConnectionJingle, ConnectionIBBytestream):
signed = self.get_signed_presence(msg, signed = self.get_signed_presence(msg,
self._send_first_presence) self._send_first_presence)
if signed is None: if signed is None:
self.dispatch('GPG_PASSWORD_REQUIRED', gajim.nec.push_incoming_event(GPGPasswordRequired(None,
(self._send_first_presence,)) conn=self, callback=self._send_first_presence))
# _send_first_presence will be called when user enter # _send_first_presence will be called when user enter
# passphrase # passphrase
send_first_presence = False send_first_presence = False

View File

@ -1373,3 +1373,15 @@ class CapsReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
self.resource = self.base_event.resource self.resource = self.base_event.resource
self.client_caps = self.base_event.client_caps self.client_caps = self.base_event.client_caps
return True 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.')) _('You are currently connected without your OpenPGP key.'))
self.forget_gpg_passphrase(obj.keyID) 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,)) #('GPG_PASSWORD_REQUIRED', account, (callback,))
callback = array[0] if obj.keyid in self.gpg_passphrase:
keyid = gajim.config.get_per('accounts', account, 'keyid') request = self.gpg_passphrase[obj.keyid]
if keyid in self.gpg_passphrase:
request = self.gpg_passphrase[keyid]
else: else:
request = PassphraseRequest(keyid) request = PassphraseRequest(obj.keyid)
self.gpg_passphrase[keyid] = request self.gpg_passphrase[obj.keyid] = request
request.add_callback(account, callback) 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) #('GPG_ALWAYS_TRUST', account, callback)
def on_yes(checked): def on_yes(checked):
if checked: if checked:
gajim.connections[account].gpg.always_trust = True obj.conn.gpg.always_trust = True
callback(True) obj.callback(True)
def on_no(): def on_no():
callback(False) obj.callback(False)
dialogs.YesNoDialog(_('GPG key not trusted'), _('The GPG key used to ' dialogs.YesNoDialog(_('GPG key not trusted'), _('The GPG key used to '
'encrypt this chat is not trusted. Do you really want to encrypt ' '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], [self.handle_event_unique_room_id_unsupported],
'UNIQUE_ROOM_ID_SUPPORTED': \ 'UNIQUE_ROOM_ID_SUPPORTED': \
[self.handle_event_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], 'PASSWORD_REQUIRED': [self.handle_event_password_required],
'SSL_ERROR': [self.handle_event_ssl_error], 'SSL_ERROR': [self.handle_event_ssl_error],
'FINGERPRINT_ERROR': [self.handle_event_fingerprint_error], 'FINGERPRINT_ERROR': [self.handle_event_fingerprint_error],
@ -1747,6 +1743,8 @@ class Interface:
'gc-invitation-received': [self.handle_event_gc_invitation], 'gc-invitation-received': [self.handle_event_gc_invitation],
'gc-presence-received': [self.handle_event_gc_presence], 'gc-presence-received': [self.handle_event_gc_presence],
'gmail-notify': [self.handle_event_gmail_notify], '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], 'http-auth-received': [self.handle_event_http_auth],
'iq-error-received': [self.handle_event_iq_error], 'iq-error-received': [self.handle_event_iq_error],
'jingle-connected-received': [self.handle_event_jingle_connected], 'jingle-connected-received': [self.handle_event_jingle_connected],