Add debug logging, lots
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
parent
2a9bade333
commit
02b6afe10d
1 changed files with 19 additions and 0 deletions
|
@ -381,7 +381,9 @@ class XEP_0384(BasePlugin):
|
|||
return iq
|
||||
|
||||
async def _publish_bundle(self) -> None:
|
||||
log.debug('Publishing our own bundle. Do we need to?')
|
||||
if self._omemo().republish_bundle:
|
||||
log.debug('Publishing.')
|
||||
iq = await self._generate_bundle_iq()
|
||||
try:
|
||||
await iq.send()
|
||||
|
@ -404,8 +406,11 @@ class XEP_0384(BasePlugin):
|
|||
raise
|
||||
iq = await self._generate_bundle_iq(publish_options=False)
|
||||
await iq.send()
|
||||
else:
|
||||
log.debug('Not publishing.')
|
||||
|
||||
async def _fetch_bundle(self, jid: str, device_id: int) -> Optional[ExtendedPublicBundle]:
|
||||
log.debug('Fetching bundle for JID: %r, device: %r', jid, device_id)
|
||||
node = '%s:%d' % (OMEMO_BUNDLES_NS, device_id)
|
||||
try:
|
||||
iq = await self.xmpp['xep_0060'].get_items(jid, node)
|
||||
|
@ -417,6 +422,7 @@ class XEP_0384(BasePlugin):
|
|||
|
||||
async def _fetch_device_list(self, jid: JID) -> None:
|
||||
"""Manually query PEP OMEMO_DEVICES_NS nodes"""
|
||||
log.debug('Fetching device list for JID: %r', jid)
|
||||
iq = await self.xmpp['xep_0060'].get_items(jid.full, OMEMO_DEVICES_NS)
|
||||
return await self._read_device_list(jid, iq['pubsub']['items'])
|
||||
|
||||
|
@ -492,6 +498,7 @@ class XEP_0384(BasePlugin):
|
|||
})
|
||||
|
||||
try:
|
||||
log.debug('Setting own device list to %r', device_ids)
|
||||
await self.xmpp['xep_0060'].publish(
|
||||
own_jid.bare, OMEMO_DEVICES_NS, payload=payload, options=options,
|
||||
)
|
||||
|
@ -675,6 +682,7 @@ class XEP_0384(BasePlugin):
|
|||
# XXX: 'cipher' is part of KeyTransportMessages and is used when no payload
|
||||
# is passed. We do not implement this yet.
|
||||
try:
|
||||
log.debug('Decryption: Attempt to decrypt message from JID: %r', sender)
|
||||
if payload is None:
|
||||
await self._omemo().decryptRatchetFowardingMessage(
|
||||
jid,
|
||||
|
@ -703,8 +711,10 @@ class XEP_0384(BasePlugin):
|
|||
raise NoAvailableSession(jid, sid)
|
||||
except (omemo.exceptions.TrustException,) as exn:
|
||||
if exn.problem == 'undecided':
|
||||
log.debug('Decryption: trust state for JID: %r, device: %r, is undecided', exn.bare_jid, exn.device)
|
||||
raise UndecidedException(exn.bare_jid, exn.device, exn.ik)
|
||||
if exn.problem == 'untrusted':
|
||||
log.debug('Decryption: trust state for JID: %r, device: %r, set to untrusted', exn.bare_jid, exn.device)
|
||||
raise UntrustedException(exn.bare_jid, exn.device, exn.ik)
|
||||
raise
|
||||
finally:
|
||||
|
@ -712,6 +722,7 @@ class XEP_0384(BasePlugin):
|
|||
|
||||
should_heartbeat = await self._should_heartbeat(sender, isPrekeyMessage)
|
||||
if self.auto_heartbeat and should_heartbeat:
|
||||
log.debug('Decryption: Sending hearbeat to JID: %r', jid)
|
||||
async def send_heartbeat():
|
||||
log.debug('Sending a heartbeat message')
|
||||
msg = await self.make_heartbeat(JID(jid))
|
||||
|
@ -757,6 +768,7 @@ class XEP_0384(BasePlugin):
|
|||
expect_problems = {jid.bare: did for (jid, did) in expect_problems.items()}
|
||||
|
||||
try:
|
||||
log.debug('Encryption: attempt to encrypt for JIDs: %r', recipients)
|
||||
if plaintext is not None:
|
||||
encrypted = await self._omemo().encryptMessage(
|
||||
recipients,
|
||||
|
@ -781,18 +793,24 @@ class XEP_0384(BasePlugin):
|
|||
errors = exception.problems
|
||||
|
||||
if errors == old_errors:
|
||||
log.debug('Encryption: Still not possible after another iteration.')
|
||||
raise EncryptionPrepareException(errors)
|
||||
|
||||
old_errors = errors
|
||||
|
||||
for exn in errors:
|
||||
if isinstance(exn, omemo.exceptions.NoDevicesException):
|
||||
log.debug('Encryption: Missing device list for JID: %r', exn.bare_jid)
|
||||
await self._fetch_device_list(JID(exn.bare_jid))
|
||||
elif isinstance(exn, omemo.exceptions.MissingBundleException):
|
||||
log.debug('Encryption: Missing bundle for JID: %r, device: %r', exn.bare_jid, exn.device)
|
||||
bundle = await self._fetch_bundle(exn.bare_jid, exn.device)
|
||||
if bundle is not None:
|
||||
log.debug('Encryption: Bundle %r found!', exn.device)
|
||||
devices = self.bundles.setdefault(exn.bare_jid, {})
|
||||
devices[exn.device] = bundle
|
||||
else:
|
||||
log.debug('Encryption: Bundle %r not found.', exn.device)
|
||||
elif isinstance(exn, omemo.exceptions.TrustException):
|
||||
# On TrustException, there are two possibilities.
|
||||
# Either trust has not been explicitely set yet, and is
|
||||
|
@ -801,6 +819,7 @@ class XEP_0384(BasePlugin):
|
|||
# a choice. If untrusted, then we can safely tell the
|
||||
# OMEMO lib to not encrypt to this device
|
||||
if exn.problem == 'undecided':
|
||||
log.debug('Encryption: Trust state not set for JID: %r, device: %r', exn.bare_jid, exn.device)
|
||||
raise UndecidedException(exn.bare_jid, exn.device, exn.ik)
|
||||
distrusted_jid = JID(exn.bare_jid)
|
||||
expect_problems.setdefault(distrusted_jid, []).append(exn.device)
|
||||
|
|
Loading…
Reference in a new issue