Remove the while loop; add dummy encrypted_reply

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
Maxime “pep” Buquet 2019-02-23 12:10:30 +00:00
parent 368bbd9005
commit b71a367bcb

View file

@ -58,7 +58,7 @@ class EchoBot(ClientXMPP):
self.send_presence() self.send_presence()
self.get_roster() self.get_roster()
def message(self, msg: Message) -> None: def message(self, msg: Message, allow_untrusted: bool = False) -> None:
""" """
Process incoming message stanzas. Be aware that this also Process incoming message stanzas. Be aware that this also
includes MUC messages and error messages. It is usually includes MUC messages and error messages. It is usually
@ -77,15 +77,9 @@ class EchoBot(ClientXMPP):
self.plain_reply(msg, 'This message was not encrypted.\n%(body)s' % msg) self.plain_reply(msg, 'This message was not encrypted.\n%(body)s' % msg)
return None return None
allow_untrusted = False
while True:
try: try:
body = self['xep_0384'].decrypt_message( body = self['xep_0384'].decrypt_message(msg, allow_untrusted)
msg,
allow_untrusted=allow_untrusted,
)
self.encrypted_reply(msg, 'Thanks for sending\n%s' % body.decode("utf8")) self.encrypted_reply(msg, 'Thanks for sending\n%s' % body.decode("utf8"))
break
except (MissingOwnKey,): except (MissingOwnKey,):
# The message is missing our own key, it was not encrypted for # The message is missing our own key, it was not encrypted for
# us, and we can't decrypt it. # us, and we can't decrypt it.
@ -93,7 +87,6 @@ class EchoBot(ClientXMPP):
msg, msg,
'I can\'t decrypt this message as it is not encrypted for me.', 'I can\'t decrypt this message as it is not encrypted for me.',
) )
break
except (NoAvailableSession,) as exn: except (NoAvailableSession,) as exn:
# We received a message from that contained a session that we # We received a message from that contained a session that we
# don't know about (deleted session storage, etc.). We can't # don't know about (deleted session storage, etc.). We can't
@ -106,7 +99,6 @@ class EchoBot(ClientXMPP):
'I can\'t decrypt this message as it uses an encrypted ' 'I can\'t decrypt this message as it uses an encrypted '
'session I don\'t know about.', 'session I don\'t know about.',
) )
break
except (UndecidedException, UntrustedException) as exn: except (UndecidedException, UntrustedException) as exn:
# We received a message from an untrusted device. We can # We received a message from an untrusted device. We can
# choose to decrypt the message nonetheless, with the # choose to decrypt the message nonetheless, with the
@ -116,19 +108,17 @@ class EchoBot(ClientXMPP):
# or not. Clients _should_ indicate that the message was not # or not. Clients _should_ indicate that the message was not
# trusted, or in undecided state, if they decide to decrypt it # trusted, or in undecided state, if they decide to decrypt it
# anyway. # anyway.
allow_untrusted = True
self.plain_reply( self.plain_reply(
msg, msg,
"Your device '%(device)s' is not in my trusted devices." % exn, "Your device '%s' is not in my trusted devices." % exn.device,
) )
# Now we let the loop go on for decrypt_message to run again. # We resend, setting the `allow_untrusted` parameter to True.
self.message(msg, allow_untrusted=True)
except (EncryptionPrepareException,): except (EncryptionPrepareException,):
# Slixmpp tried its best, but there were errors it couldn't # Slixmpp tried its best, but there were errors it couldn't
# resolve. At this point you should have seen other exceptions # resolve. At this point you should have seen other exceptions
# and given a chance to resolve them already. # and given a chance to resolve them already.
self.plain_reply(msg, 'I was not able to decrypt the message.') self.plain_reply(msg, 'I was not able to decrypt the message.')
break
return None return None
@ -143,8 +133,11 @@ class EchoBot(ClientXMPP):
msg['body'] = body msg['body'] = body
msg.send() msg.send()
def encrypted_reply(self, msg, body) -> None: def encrypted_reply(self, original_msg, body) -> None:
pass """Helper to reply with encrypted messages"""
# TODO: Send the message encrypted.
self.plain_reply(msg, body)
if __name__ == '__main__': if __name__ == '__main__':