Error while decryption: TypeError('string indices must be integers')
Hi,
I'm receiving an error when I try to decrypt OMEMO messages using the example.py
.
- Ubuntu 19.10 eoan
- Linux host 5.3.0-24-generic #26-Ubuntu SMP Thu Nov 14 01:33:18 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
- Python 3.7.5
- slixmpp-1.4.2 (via pip)
- slixmpp_omemo-0.2.0 (via pip)
- example.py c7e54488
Error:
DEBUG RECV: <message id="a00cedf4-2a1e-4344-b326-f30faa40d541" to="test@xxx.org" type="chat" from="jonny@xxx.org/dino.bb00dc6e"><composing xmlns="http://jabber.org/protocol/chatstates" /><no-store xmlns="urn:xmpp:hints" /></message>
DEBUG RECV: <message id="2a47b001-faf0-4484-886a-da6f1b37431f" to="test@xxx.org" type="chat" from="jonny@xxx.org/dino.bb00dc6e"><active xmlns="http://jabber.org/protocol/chatstates" /><no-store xmlns="urn:xmpp:hints" /></message>
DEBUG RECV: <message from="jonny@xxx.org/dino.bb00dc6e" type="chat" to="test@xxx.org" id="53192b7c-f508-4806-bf92-9e8234993a76"><body>[This message is OMEMO encrypted]</body><encrypted xmlns="eu.siacs.conversations.axolotl"><header sid="341353871"><iv>vOyaCAJ29UiD1eqS1W9AsQ==</iv><key rid="1826948132" prekey="true">MwgiEiEF3QpcqnFsqO/epLSyIijT3I+o6fu/EDhJR8gg2+03GCsaIQUMIsZa8zSvyh1lunE2vXrbWjyVGreTX9FtjHJcPg4KGiJiMwohBQ9Ir28+lyUv9XmkAQpZXFa1RXVsWsYEr6G15Ey9sqFvEBwYACIwHRKWjUKvLZ+3+EzfhiXkfSiLUxpLB9Gg7Q9b19iWoxyOmi4B9kdaz75A2AyQ7DXsG2MiAhjGbZsoj8viogEwAQ==</key><key rid="309216034">MwohBaOjGKH/yKNhk3DnInOY3M8WDRY8wY8csnDWRGngcyMeECIYACIwj38Ti+HZnbvQ73U7pVXc+WojV+EKbfo7Z3VN78WpDjc9w58GhJqTzBGzul+ubhmDwRPpJmj8cOE=</key><key rid="2051820258" prekey="true">Mwjo0BMSIQX7xgcZCJAqujc+0Jll4WoV+gwHVhy6RZa0DV9i3a1EDhohBQwixlrzNK/KHWW6cTa9ettaPJUat5Nf0W2Mclw+DgoaImIzCiEFTr/SwHKTXww3XtiuSaEyaZSaUTfmNmZ8fqJVMNjNLD0QdBgAIjCP1PFysrP/Otm6gaYCjLuY2evn68L8m5VnRha8728YPPpyw6+e0iQOKmjWOypsyd4azdEtr0bl7yiPy+KiATDjlgE=</key><key rid="451045906">MwohBfGxxGtNcUwqb23MlaOwoMOwnhq2OxvkznuOaM4tJxlLEB4YACIwDhde8VUNtHCankQ3aLZ2eIzfYymv0o7SQghcKF5n76Ue9t2IXj+4IzCf7UhpotDmXu1XXMEL0l8=</key></header><payload>pjUpYQ==</payload></encrypted><encryption xmlns="urn:xmpp:eme:0" namespace="eu.siacs.conversations.axolotl" name="OMEMO" /><request xmlns="urn:xmpp:receipts" /><active xmlns="http://jabber.org/protocol/chatstates" /><markable xmlns="urn:xmpp:chat-markers:0" /></message>
DEBUG Event triggered: message
DEBUG Event triggered: message_encryption
DEBUG SEND: <message type="chat" to="jonny@xxx.org/dino.bb00dc6e" xml:lang="en"><body>An error occured while attempting decryption.
TypeError('string indices must be integers')</body></message>
ERROR Task exception was never retrieved
future: <Task finished coro=<EchoBot.message() done, defined at echo_client.py:67> exception=TypeError('string indices must be integers')>
Traceback (most recent call last):
File "echo_client.py", line 88, in message
body = self['xep_0384'].decrypt_message(msg, allow_untrusted)
File "/usr/local/lib/python3.7/dist-packages/slixmpp_omemo/__init__.py", line 424, in decrypt_message
payload = b64dec(encrypted['payload']['value'])
TypeError: string indices must be integers
After investigating a bit I noticed that the argument msg
does not contain the values header
or payload
as accessed in slikxmpp_omemo/__init__.py
in lines 423 and 424:
def decrypt_message(
self,
encrypted: Encrypted,
sender: JID,
allow_untrusted: bool = False,
) -> Optional[str]:
header = encrypted['header']
payload = b64dec(encrypted['payload']['value'])
Here the call from the example.py
in line 88:
body = self['xep_0384'].decrypt_message(msg, allow_untrusted)
I inspected the msg object:
Collapse msg object by clicking here
[('Iq', < bound method BaseXMPP.Iq of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('Message', < bound method BaseXMPP.Message of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('Presence', < bound method BaseXMPP.Presence of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_XMLStream__event_handlers', {
'disconnected': [( < bound method XMLStream._remove_schedules of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method BaseXMPP._handle_disconnected of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'session_start': [( < bound method XMLStream._start_keepalive of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method BaseXMPP._handle_session_start of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method EchoBot.start of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method XEP_0384.session_start of < slixmpp_omemo.XEP_0384 object at 0x7f9e900d1dd0 >> , False)],
'presence_available': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_dnd': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_xa': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_chat': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_away': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_unavailable': [( < bound method BaseXMPP._handle_unavailable of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_subscribe': [( < bound method BaseXMPP._handle_subscribe of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_subscribed': [( < bound method BaseXMPP._handle_subscribed of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_unsubscribe': [( < bound method BaseXMPP._handle_unsubscribe of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_unsubscribed': [( < bound method BaseXMPP._handle_unsubscribed of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'roster_subscription_request': [( < bound method BaseXMPP._handle_new_subscription of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'connected': [( < bound method ClientXMPP._reset_connection_state of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'session_bind': [( < bound method ClientXMPP._handle_session_bind of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_starttls.starttls.FeatureSTARTTLS object at 0x7f9e902f6c90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_bind.bind.FeatureBind object at 0x7f9e902f6d90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_session.session.FeatureSession object at 0x7f9e9030b5d0 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_rosterver.rosterver.FeatureRosterVer object at 0x7f9e9030b990 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_preapproval.preapproval.FeaturePreApproval object at 0x7f9e9030bfd0 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_mechanisms.mechanisms.FeatureMechanisms object at 0x7f9e90315a90 >> , False), ( < bound method XEP_0030.session_bind of < slixmpp.plugins.xep_0030.disco.XEP_0030 object at 0x7f9e9031bdd0 >> , False), ( < bound method XEP_0199.session_bind of < slixmpp.plugins.xep_0199.ping.XEP_0199 object at 0x7f9e902d6ad0 >> , False), ( < bound method XEP_0380.session_bind of < slixmpp.plugins.xep_0380.eme.XEP_0380 object at 0x7f9e902d6c90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0082.XEP_0082 object at 0x7f9e900d7490 >> , False), ( < bound method XEP_0004.session_bind of < slixmpp.plugins.xep_0004.dataforms.XEP_0004 object at 0x7f9e900d77d0 >> , False), ( < bound method XEP_0131.session_bind of < slixmpp.plugins.xep_0131.headers.XEP_0131 object at 0x7f9e900d7bd0 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0060.pubsub.XEP_0060 object at 0x7f9e900d7310 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0128.extended_disco.XEP_0128 object at 0x7f9e900e0cd0 >> , False), ( < bound method XEP_0115.session_bind of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0163.XEP_0163 object at 0x7f9e900d7210 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp_omemo.XEP_0384 object at 0x7f9e900d1dd0 >> , False)],
'roster_update': [( < bound method ClientXMPP._handle_roster of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'message': [( < bound method EchoBot.message_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'entity_caps': [( < bound method XEP_0115._process_caps of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> , False)],
'omemo_device_list_publish': [( < bound method XEP_0384._receive_device_list of < slixmpp_omemo.XEP_0384 object at 0x7f9e900d1dd0 >> , False)]
}), ('_XMLStream__filters', {
'in': [],
'out': [ < bound method Roster._save_last_status of {
'test@xxx.org': {
'test@xxx.org': {
'name': '',
'groups': [],
'from': False,
'to': False,
'pending_in': False,
'pending_out': False,
'whitelisted': False,
'subscription': 'none'
},
'bot@xxx.org': {
'name': '',
'groups': [],
'from': False,
'to': False,
'pending_in': False,
'pending_out': True,
'whitelisted': False,
'subscription': 'none'
}
},
'bot@xxx.org': {}
} > , < bound method XEP_0115._filter_add_caps of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> ],
'out_sync': []
}), ('_XMLStream__handlers', [ < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6610 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6710 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6810 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f67d0 > , < slixmpp.xmlstream.handler.coroutine_callback.CoroutineCallback object at 0x7f9e902f6a90 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6b50 > , < slixmpp.xmlstream.handler.coroutine_callback.CoroutineCallback object at 0x7f9e902f6cd0 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6210 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902ede50 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902edf50 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e91662810 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902c54d0 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902d6b10 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900d1950 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900d7890 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900d7d90 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0750 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0910 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0a50 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0b90 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900ef410 > ]), ('_XMLStream__root_stanza', [ < class 'slixmpp.stanza.message.Message' > , < class 'slixmpp.stanza.iq.Iq' > , < class 'slixmpp.stanza.presence.Presence' > , < class 'slixmpp.stanza.stream_error.StreamError' > , < class 'slixmpp.stanza.stream_features.StreamFeatures' > , < class 'slixmpp.features.feature_starttls.stanza.Proceed' > , < class 'slixmpp.features.feature_starttls.stanza.Failure' > , < class 'slixmpp.features.feature_mechanisms.stanza.success.Success' > , < class 'slixmpp.features.feature_mechanisms.stanza.failure.Failure' > , < class 'slixmpp.features.feature_mechanisms.stanza.auth.Auth' > , < class 'slixmpp.features.feature_mechanisms.stanza.challenge.Challenge' > , < class 'slixmpp.features.feature_mechanisms.stanza.response.Response' > , < class 'slixmpp.features.feature_mechanisms.stanza.abort.Abort' > ]), ('__class__', < class '__main__.EchoBot' > ), ('__delattr__', < method - wrapper '__delattr__'
of EchoBot object at 0x7f9e902f6490 > ), ('__dict__', {
'transport': < asyncio.sslproto._SSLProtocolTransport object at 0x7f9e900fbc10 > ,
'socket': < ssl.SSLObject object at 0x7f9e900fba10 > ,
'connect_loop_wait': 0,
'parser': < xml.etree.ElementTree.XMLPullParser object at 0x7f9e900fbfd0 > ,
'xml_depth': 1,
'xml_root': < Element '{http://etherx.jabber.org/streams}stream'
at 0x7f9e9010bb30 > ,
'force_starttls': True,
'disable_starttls': False,
'scheduled_events': {
'Whitespace Keepalive': < TimerHandle when = 197769.102328958 XMLStream._execute_and_reschedule('Whitespace Keepalive', functools.par...2 f6490 >> , ' '),
300) >
}, 'ssl_context': < ssl.SSLContext object at 0x7f9e902e19f0 > , 'event_when_connected': 'tls_success', 'ciphers': None, 'ca_certs': None, 'certfile': None, 'keyfile': None, '_der_cert': None, '_loop': < _UnixSelectorEventLoop running = True closed = False debug = False > , 'default_port': 5222, 'default_domain': 'xxx.org', '_expected_server_name': 'xxx.org', '_service_name': 'xxx.org', 'address': ('87.106.127.220', 5222), 'use_ssl': False, 'use_proxy': False, 'use_ipv6': True, 'use_aiodns': True, 'use_cdata': False, 'proxy_config': {}, 'default_ns': 'jabber:client', 'default_lang': 'en', 'peer_default_lang': 'en', 'stream_ns': 'http://etherx.jabber.org/streams', 'stream_header': "<stream:stream to='xxx.org' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en' version='1.0'>", 'stream_footer': '</stream:stream>', 'whitespace_keepalive': True, 'whitespace_keepalive_interval': 300, 'end_session_on_disconnect': True, 'namespace_map': {
'http://www.w3.org/XML/1998/namespace': 'xml',
'http://etherx.jabber.org/streams': 'stream'
}, '_XMLStream__root_stanza': [ < class 'slixmpp.stanza.message.Message' > , < class 'slixmpp.stanza.iq.Iq' > , < class 'slixmpp.stanza.presence.Presence' > , < class 'slixmpp.stanza.stream_error.StreamError' > , < class 'slixmpp.stanza.stream_features.StreamFeatures' > , < class 'slixmpp.features.feature_starttls.stanza.Proceed' > , < class 'slixmpp.features.feature_starttls.stanza.Failure' > , < class 'slixmpp.features.feature_mechanisms.stanza.success.Success' > , < class 'slixmpp.features.feature_mechanisms.stanza.failure.Failure' > , < class 'slixmpp.features.feature_mechanisms.stanza.auth.Auth' > , < class 'slixmpp.features.feature_mechanisms.stanza.challenge.Challenge' > , < class 'slixmpp.features.feature_mechanisms.stanza.response.Response' > , < class 'slixmpp.features.feature_mechanisms.stanza.abort.Abort' > ], '_XMLStream__handlers': [ < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6610 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6710 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6810 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f67d0 > , < slixmpp.xmlstream.handler.coroutine_callback.CoroutineCallback object at 0x7f9e902f6a90 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6b50 > , < slixmpp.xmlstream.handler.coroutine_callback.CoroutineCallback object at 0x7f9e902f6cd0 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902f6210 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902ede50 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902edf50 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e91662810 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902c54d0 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e902d6b10 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900d1950 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900d7890 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900d7d90 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0750 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0910 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0a50 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900e0b90 > , < slixmpp.xmlstream.handler.callback.Callback object at 0x7f9e900ef410 > ], '_XMLStream__event_handlers': {
'disconnected': [( < bound method XMLStream._remove_schedules of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method BaseXMPP._handle_disconnected of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'session_start': [( < bound method XMLStream._start_keepalive of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method BaseXMPP._handle_session_start of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method EchoBot.start of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method XEP_0384.session_start of < slixmpp_omemo.XEP_0384 object at 0x7f9e900d1dd0 >> , False)],
'presence_available': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_dnd': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_xa': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_chat': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_away': [( < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_unavailable': [( < bound method BaseXMPP._handle_unavailable of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_subscribe': [( < bound method BaseXMPP._handle_subscribe of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_subscribed': [( < bound method BaseXMPP._handle_subscribed of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_unsubscribe': [( < bound method BaseXMPP._handle_unsubscribe of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'presence_unsubscribed': [( < bound method BaseXMPP._handle_unsubscribed of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'roster_subscription_request': [( < bound method BaseXMPP._handle_new_subscription of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'connected': [( < bound method ClientXMPP._reset_connection_state of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'session_bind': [( < bound method ClientXMPP._handle_session_bind of < __main__.EchoBot object at 0x7f9e902f6490 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_starttls.starttls.FeatureSTARTTLS object at 0x7f9e902f6c90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_bind.bind.FeatureBind object at 0x7f9e902f6d90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_session.session.FeatureSession object at 0x7f9e9030b5d0 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_rosterver.rosterver.FeatureRosterVer object at 0x7f9e9030b990 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_preapproval.preapproval.FeaturePreApproval object at 0x7f9e9030bfd0 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.features.feature_mechanisms.mechanisms.FeatureMechanisms object at 0x7f9e90315a90 >> , False), ( < bound method XEP_0030.session_bind of < slixmpp.plugins.xep_0030.disco.XEP_0030 object at 0x7f9e9031bdd0 >> , False), ( < bound method XEP_0199.session_bind of < slixmpp.plugins.xep_0199.ping.XEP_0199 object at 0x7f9e902d6ad0 >> , False), ( < bound method XEP_0380.session_bind of < slixmpp.plugins.xep_0380.eme.XEP_0380 object at 0x7f9e902d6c90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0082.XEP_0082 object at 0x7f9e900d7490 >> , False), ( < bound method XEP_0004.session_bind of < slixmpp.plugins.xep_0004.dataforms.XEP_0004 object at 0x7f9e900d77d0 >> , False), ( < bound method XEP_0131.session_bind of < slixmpp.plugins.xep_0131.headers.XEP_0131 object at 0x7f9e900d7bd0 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0060.pubsub.XEP_0060 object at 0x7f9e900d7310 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0128.extended_disco.XEP_0128 object at 0x7f9e900e0cd0 >> , False), ( < bound method XEP_0115.session_bind of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp.plugins.xep_0163.XEP_0163 object at 0x7f9e900d7210 >> , False), ( < bound method BasePlugin.session_bind of < slixmpp_omemo.XEP_0384 object at 0x7f9e900d1dd0 >> , False)],
'roster_update': [( < bound method ClientXMPP._handle_roster of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'message': [( < bound method EchoBot.message_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> , False)],
'entity_caps': [( < bound method XEP_0115._process_caps of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> , False)],
'omemo_device_list_publish': [( < bound method XEP_0384._receive_device_list of < slixmpp_omemo.XEP_0384 object at 0x7f9e900d1dd0 >> , False)]
}, '_XMLStream__filters': {
'in': [],
'out': [ < bound method Roster._save_last_status of {
'test@xxx.org': {
'test@xxx.org': {
'name': '',
'groups': [],
'from': False,
'to': False,
'pending_in': False,
'pending_out': False,
'whitelisted': False,
'subscription': 'none'
},
'bot@xxx.org': {
'name': '',
'groups': [],
'from': False,
'to': False,
'pending_in': False,
'pending_out': True,
'whitelisted': False,
'subscription': 'none'
}
},
'bot@xxx.org': {}
} > , < bound method XEP_0115._filter_add_caps of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> ],
'out_sync': []
}, '_id': 8, '_id_prefix': '0f40a631-69e3-494b-97ec-e1a74cc89c67-', '_current_connection_attempt': < Task finished coro = < XMLStream._connect_routine() done, defined at / usr / local / lib / python3.7 / dist - packages / slixmpp / xmlstream / xmlstream.py: 293 > result = None > , 'dns_answers': None, 'dns_service': 'xmpp-client', 'disconnected': < Future pending > , 'stream_id': '837d80d8-dd2f-4b32-a601-c8e8458580ef', 'requested_jid': test@ xxx.org, 'boundjid': test@ xxx.org / FyV3fPn8, '_redirect_attempts': 0, 'max_redirects': 5, 'session_bind_event': < asyncio.locks.Event object at 0x7f9e902f6950[set] > , 'plugin': < slixmpp.plugins.base.PluginManager object at 0x7f9e902f6650 > , 'plugin_config': {}, 'plugin_whitelist': [], 'roster': {
'test@xxx.org': {
'test@xxx.org': {
'name': '',
'groups': [],
'from': False,
'to': False,
'pending_in': False,
'pending_out': False,
'whitelisted': False,
'subscription': 'none'
},
'bot@xxx.org': {
'name': '',
'groups': [],
'from': False,
'to': False,
'pending_in': False,
'pending_out': True,
'whitelisted': False,
'subscription': 'none'
}
},
'bot@xxx.org': {}
}, 'client_roster': {
'test@xxx.org': {
'name': '',
'groups': [],
'from': False,
'to': False,
'pending_in': False,
'pending_out': False,
'whitelisted': False,
'subscription': 'none'
},
'bot@xxx.org': {
'name': '',
'groups': [],
'from': False,
'to': False,
'pending_in': False,
'pending_out': True,
'whitelisted': False,
'subscription': 'none'
}
}, 'is_component': False, 'use_message_ids': False, 'use_presence_ids': False, 'api': < slixmpp.api.APIRegistry object at 0x7f9e908b7490 > , 'sentpresence': True, 'stanza': < module 'slixmpp.stanza'
from '/usr/local/lib/python3.7/dist-packages/slixmpp/stanza/__init__.py' > , 'escape_quotes': True, 'credentials': {
'password': 'test'
}, 'features': {
'starttls', 'bind', 'caps', 'rosterver', 'mechanisms'
}, '_stream_feature_handlers': {
'starttls': ( < bound method FeatureSTARTTLS._handle_starttls of < slixmpp.features.feature_starttls.starttls.FeatureSTARTTLS object at 0x7f9e902f6c90 >> , True),
'bind': ( < bound method FeatureBind._handle_bind_resource of < slixmpp.features.feature_bind.bind.FeatureBind object at 0x7f9e902f6d90 >> , False),
'session': ( < bound method FeatureSession._handle_start_session of < slixmpp.features.feature_session.session.FeatureSession object at 0x7f9e9030b5d0 >> , False),
'rosterver': ( < bound method FeatureRosterVer._handle_rosterver of < slixmpp.features.feature_rosterver.rosterver.FeatureRosterVer object at 0x7f9e9030b990 >> , False),
'preapproval': ( < bound method FeaturePreApproval._handle_preapproval of < slixmpp.features.feature_preapproval.preapproval.FeaturePreApproval object at 0x7f9e9030bfd0 >> , False),
'mechanisms': ( < bound method FeatureMechanisms._handle_sasl_auth of < slixmpp.features.feature_mechanisms.mechanisms.FeatureMechanisms object at 0x7f9e90315a90 >> , True),
'caps': ( < bound method XEP_0115._handle_caps_feature of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> , False)
}, '_stream_feature_order': [(0, 'starttls'), (100, 'mechanisms'), (9000, 'rosterver'), (9001, 'preapproval'), (10000, 'bind'), (10001, 'session'), (10010, 'caps')], 'authenticated': True, 'sessionstarted': True, 'bound': True, 'bindfail': False, 'stream_version': '1.0'
}), ('__dir__', < built - in method __dir__ of EchoBot object at 0x7f9e902f6490 > ), ('__doc__', '\n A simple Slixmpp bot that will echo encrypted messages it receives, along\n with a short thank you message.\n\n For details on how to build a client with slixmpp, look at examples in the\n slixmpp repository.\n '), ('__eq__', < method - wrapper '__eq__'
of EchoBot object at 0x7f9e902f6490 > ), ('__format__', < built - in method __format__ of EchoBot object at 0x7f9e902f6490 > ), ('__ge__', < method - wrapper '__ge__'
of EchoBot object at 0x7f9e902f6490 > ), ('__getattribute__', < method - wrapper '__getattribute__'
of EchoBot object at 0x7f9e902f6490 > ), ('__getitem__', < bound method BaseXMPP.__getitem__ of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('__gt__', < method - wrapper '__gt__'
of EchoBot object at 0x7f9e902f6490 > ), ('__hash__', < method - wrapper '__hash__'
of EchoBot object at 0x7f9e902f6490 > ), ('__init__', < bound method EchoBot.__init__ of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('__init_subclass__', < built - in method __init_subclass__ of type object at 0x1f014e0 > ), ('__le__', < method - wrapper '__le__'
of EchoBot object at 0x7f9e902f6490 > ), ('__lt__', < method - wrapper '__lt__'
of EchoBot object at 0x7f9e902f6490 > ), ('__module__', '__main__'), ('__ne__', < method - wrapper '__ne__'
of EchoBot object at 0x7f9e902f6490 > ), ('__new__', < built - in method __new__ of type object at 0x8583a0 > ), ('__reduce__', < built - in method __reduce__ of EchoBot object at 0x7f9e902f6490 > ), ('__reduce_ex__', < built - in method __reduce_ex__ of EchoBot object at 0x7f9e902f6490 > ), ('__repr__', < method - wrapper '__repr__'
of EchoBot object at 0x7f9e902f6490 > ), ('__setattr__', < method - wrapper '__setattr__'
of EchoBot object at 0x7f9e902f6490 > ), ('__sizeof__', < built - in method __sizeof__ of EchoBot object at 0x7f9e902f6490 > ), ('__str__', < method - wrapper '__str__'
of EchoBot object at 0x7f9e902f6490 > ), ('__subclasshook__', < built - in method __subclasshook__ of type object at 0x1f014e0 > ), ('__weakref__', < weakref at 0x7f9e902f5590; to 'EchoBot'
at 0x7f9e902f6490 > ), ('_build_stanza', < bound method XMLStream._build_stanza of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_connect_routine', < bound method XMLStream._connect_routine of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_current_connection_attempt', < Task finished coro = < XMLStream._connect_routine() done, defined at / usr / local / lib / python3.7 / dist - packages / slixmpp / xmlstream / xmlstream.py: 293 > result = None > ), ('_der_cert', None), ('_execute_and_reschedule', < bound method XMLStream._execute_and_reschedule of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_execute_and_unschedule', < bound method XMLStream._execute_and_unschedule of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_expected_server_name', 'xxx.org'), ('_handle_available', < bound method BaseXMPP._handle_available of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_disconnected', < bound method BaseXMPP._handle_disconnected of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_message', < bound method BaseXMPP._handle_message of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_message_error', < bound method BaseXMPP._handle_message_error of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_new_subscription', < bound method BaseXMPP._handle_new_subscription of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_presence', < bound method BaseXMPP._handle_presence of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_removed_subscription', < bound method BaseXMPP._handle_removed_subscription of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_roster', < bound method ClientXMPP._handle_roster of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_session_bind', < bound method ClientXMPP._handle_session_bind of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_session_start', < bound method BaseXMPP._handle_session_start of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_stream_error', < bound method BaseXMPP._handle_stream_error of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_stream_features', < bound method ClientXMPP._handle_stream_features of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_subscribe', < bound method BaseXMPP._handle_subscribe of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_subscribed', < bound method BaseXMPP._handle_subscribed of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_unavailable', < bound method BaseXMPP._handle_unavailable of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_unsubscribe', < bound method BaseXMPP._handle_unsubscribe of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_handle_unsubscribed', < bound method BaseXMPP._handle_unsubscribed of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_id', 8), ('_id_prefix', '0f40a631-69e3-494b-97ec-e1a74cc89c67-'), ('_loop', < _UnixSelectorEventLoop running = True closed = False debug = False > ), ('_redirect_attempts', 0), ('_remove_schedules', < bound method XMLStream._remove_schedules of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_reset_connection_state', < bound method ClientXMPP._reset_connection_state of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_safe_cb_run', < bound method XMLStream._safe_cb_run of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_service_name', 'xxx.org'), ('_spawn_event', < bound method XMLStream._spawn_event of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_start_keepalive', < bound method XMLStream._start_keepalive of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('_stream_feature_handlers', {
'starttls': ( < bound method FeatureSTARTTLS._handle_starttls of < slixmpp.features.feature_starttls.starttls.FeatureSTARTTLS object at 0x7f9e902f6c90 >> , True),
'bind': ( < bound method FeatureBind._handle_bind_resource of < slixmpp.features.feature_bind.bind.FeatureBind object at 0x7f9e902f6d90 >> , False),
'session': ( < bound method FeatureSession._handle_start_session of < slixmpp.features.feature_session.session.FeatureSession object at 0x7f9e9030b5d0 >> , False),
'rosterver': ( < bound method FeatureRosterVer._handle_rosterver of < slixmpp.features.feature_rosterver.rosterver.FeatureRosterVer object at 0x7f9e9030b990 >> , False),
'preapproval': ( < bound method FeaturePreApproval._handle_preapproval of < slixmpp.features.feature_preapproval.preapproval.FeaturePreApproval object at 0x7f9e9030bfd0 >> , False),
'mechanisms': ( < bound method FeatureMechanisms._handle_sasl_auth of < slixmpp.features.feature_mechanisms.mechanisms.FeatureMechanisms object at 0x7f9e90315a90 >> , True),
'caps': ( < bound method XEP_0115._handle_caps_feature of < slixmpp.plugins.xep_0115.caps.XEP_0115 object at 0x7f9e900e0c90 >> , False)
}), ('_stream_feature_order', [(0, 'starttls'), (100, 'mechanisms'), (9000, 'rosterver'), (9001, 'preapproval'), (10000, 'bind'), (10001, 'session'), (10010, 'caps')]), ('abort', < bound method XMLStream.abort of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('add_event_handler', < bound method XMLStream.add_event_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('add_filter', < bound method XMLStream.add_filter of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('address', ('87.106.127.220', 5222)), ('api', < slixmpp.api.APIRegistry object at 0x7f9e908b7490 > ), ('authenticated', True), ('auto_authorize', True), ('auto_subscribe', True), ('bindfail', False), ('bound', True), ('boundjid', test@ xxx.org / FyV3fPn8), ('ca_certs', None), ('cancel_connection_attempt', < bound method XMLStream.cancel_connection_attempt of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('cancel_schedule', < bound method XMLStream.cancel_schedule of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('certfile', None), ('ciphers', None), ('client_roster', {
'test@xxx.org': {
'name': '',
'groups': [],
'from': False,
'to': False,
'pending_in': False,
'pending_out': False,
'whitelisted': False,
'subscription': 'none'
},
'bot@xxx.org': {
'name': '',
'groups': [],
'from': False,
'to': False,
'pending_in': False,
'pending_out': True,
'whitelisted': False,
'subscription': 'none'
}
}), ('configure_dns', < bound method XMLStream.configure_dns of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('configure_socket', < bound method XMLStream.configure_socket of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('connect', < bound method ClientXMPP.connect of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('connect_loop_wait', 0), ('connection_lost', < bound method XMLStream.connection_lost of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('connection_made', < bound method XMLStream.connection_made of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('credentials', {
'password': 'test'
}), ('data_received', < bound method XMLStream.data_received of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('default_domain', 'xxx.org'), ('default_lang', 'en'), ('default_ns', 'jabber:client'), ('default_port', 5222), ('del_event_handler', < bound method XMLStream.del_event_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('del_filter', < bound method XMLStream.del_filter of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('del_roster_item', < bound method ClientXMPP.del_roster_item of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('disable_starttls', False), ('disconnect', < bound method XMLStream.disconnect of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('disconnected', < Future pending > ), ('dns_answers', None), ('dns_service', 'xmpp-client'), ('eme_ns', 'eu.siacs.conversations.axolotl'), ('encrypted_reply', < bound method EchoBot.encrypted_reply of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('end_session_on_disconnect', True), ('eof_received', < bound method XMLStream.eof_received of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('escape_quotes', True), ('event', < bound method XMLStream.event of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('event_handled', < bound method XMLStream.event_handled of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('event_when_connected', 'tls_success'), ('exception', < bound method BaseXMPP.exception of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('features', {
'starttls', 'bind', 'caps', 'rosterver', 'mechanisms'
}), ('force_starttls', True), ('fulljid', 'test@xxx.org/FyV3fPn8'), ('get', < bound method BaseXMPP.get of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('get_dns_records', < bound method XMLStream.get_dns_records of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('get_id', < bound method XMLStream.get_id of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('get_roster', < bound method ClientXMPP.get_roster of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('get_ssl_context', < bound method XMLStream.get_ssl_context of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('getjidbare', < bound method BaseXMPP.getjidbare of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('getjidresource', < bound method BaseXMPP.getjidresource of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('incoming_filter', < bound method XMLStream.incoming_filter of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('init_parser', < bound method XMLStream.init_parser of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('init_plugins', < bound method BaseXMPP.init_plugins of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('is_component', False), ('is_connected', < bound method XMLStream.is_connected of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('jid', 'test@xxx.org'), ('keyfile', None), ('loop', < _UnixSelectorEventLoop running = True closed = False debug = False > ), ('make_iq', < bound method BaseXMPP.make_iq of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_iq_error', < bound method BaseXMPP.make_iq_error of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_iq_get', < bound method BaseXMPP.make_iq_get of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_iq_query', < bound method BaseXMPP.make_iq_query of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_iq_result', < bound method BaseXMPP.make_iq_result of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_iq_set', < bound method BaseXMPP.make_iq_set of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_message', < bound method BaseXMPP.make_message of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_presence', < bound method BaseXMPP.make_presence of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('make_query_roster', < bound method BaseXMPP.make_query_roster of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('max_redirects', 5), ('message', < bound method EchoBot.message of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('message_handler', < bound method EchoBot.message_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('namespace_map', {
'http://www.w3.org/XML/1998/namespace': 'xml',
'http://etherx.jabber.org/streams': 'stream'
}), ('new_id', < bound method XMLStream.new_id of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('parser', < xml.etree.ElementTree.XMLPullParser object at 0x7f9e900fbfd0 > ), ('password', 'test'), ('pause_writing', < bound method BaseProtocol.pause_writing of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('peer_default_lang', 'en'), ('pick_dns_answer', < bound method XMLStream.pick_dns_answer of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('plain_reply', < bound method EchoBot.plain_reply of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('plugin', < slixmpp.plugins.base.PluginManager object at 0x7f9e902f6650 > ), ('plugin_config', {}), ('plugin_whitelist', []), ('process', < bound method BaseXMPP.process of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('proxy_config', {}), ('reconnect', < bound method XMLStream.reconnect of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('register_feature', < bound method ClientXMPP.register_feature of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('register_handler', < bound method XMLStream.register_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('register_plugin', < bound method BaseXMPP.register_plugin of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('register_plugins', < bound method BaseXMPP.register_plugins of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('register_stanza', < bound method XMLStream.register_stanza of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('remove_handler', < bound method XMLStream.remove_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('remove_stanza', < bound method XMLStream.remove_stanza of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('requested_jid', test@ xxx.org), ('resource', 'FyV3fPn8'), ('resume_writing', < bound method BaseProtocol.resume_writing of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('roster', {
'test@xxx.org': {
'test@xxx.org': {
'name': '',
'groups': [],
'from': False,
'to': False,
'pending_in': False,
'pending_out': False,
'whitelisted': False,
'subscription': 'none'
},
'bot@xxx.org': {
'name': '',
'groups': [],
'from': False,
'to': False,
'pending_in': False,
'pending_out': True,
'whitelisted': False,
'subscription': 'none'
}
},
'bot@xxx.org': {}
}), ('schedule', < bound method XMLStream.schedule of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('scheduled_events', {
'Whitespace Keepalive': < TimerHandle when = 197769.102328958 XMLStream._execute_and_reschedule('Whitespace Keepalive', functools.par...2 f6490 >> , ' '),
300) >
}), ('send', < bound method XMLStream.send of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('send_message', < bound method BaseXMPP.send_message of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('send_presence', < bound method BaseXMPP.send_presence of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('send_presence_subscription', < bound method BaseXMPP.send_presence_subscription of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('send_raw', < bound method XMLStream.send_raw of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('send_xml', < bound method XMLStream.send_xml of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('sentpresence', True), ('server', 'xxx.org'), ('session_bind_event', < asyncio.locks.Event object at 0x7f9e902f6950[set] > ), ('sessionstarted', True), ('set_jid', < bound method BaseXMPP.set_jid of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('socket', < ssl.SSLObject object at 0x7f9e900fba10 > ), ('ssl_context', < ssl.SSLContext object at 0x7f9e902e19f0 > ), ('stanza', < module 'slixmpp.stanza'
from '/usr/local/lib/python3.7/dist-packages/slixmpp/stanza/__init__.py' > ), ('start', < bound method EchoBot.start of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('start_stream_handler', < bound method BaseXMPP.start_stream_handler of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('start_tls', < bound method XMLStream.start_tls of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('stream_footer', '</stream:stream>'), ('stream_
', "<stream:stream to='xxx.org' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en' version='1.0'>"), ('stream_id', '837d80d8-dd2f-4b32-a601-c8e8458580ef'), ('stream_ns', 'http://etherx.jabber.org/streams'), ('stream_version', '1.0'), ('transport', < asyncio.sslproto._SSLProtocolTransport object at 0x7f9e900fbc10 > ), ('unregister_feature', < bound method ClientXMPP.unregister_feature of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('update_roster', < bound method ClientXMPP.update_roster of < __main__.EchoBot object at 0x7f9e902f6490 >> ), ('use_aiodns', True), ('use_cdata', False), ('use_ipv6', True), ('use_message_ids', False), ('use_presence_ids', False), ('use_proxy', False), ('use_ssl', False), ('username', 'test'), ('whitespace_keepalive', True), ('whitespace_keepalive_interval', 300), ('xml_depth', 1), ('xml_root', < Element '{http://etherx.jabber.org/streams}stream'
at 0x7f9e9010bb30 > )]
Is this a bug or might this be a version conflict between the example in this repo and the pip modules ?
To upload designs, you'll need to enable LFS and have admin enable hashed storage. More information