From cf50ef2cf38a0366bcba7e45c254dc03e4fe981f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maxime=20=E2=80=9Cpep=E2=80=9D=20Buquet?= Date: Sun, 1 Jul 2018 01:40:52 +0100 Subject: Use identites from server for muc service MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Maxime “pep” Buquet --- poezio/core/core.py | 50 +++++++++++++++++++++++++++++++------------------ poezio/core/handlers.py | 5 +++++ 2 files changed, 37 insertions(+), 18 deletions(-) (limited to 'poezio/core') diff --git a/poezio/core/core.py b/poezio/core/core.py index fc311ea3..edec3b0c 100644 --- a/poezio/core/core.py +++ b/poezio/core/core.py @@ -877,27 +877,41 @@ class Core: contacts to join in. """ - # Use config.default_muc_service as muc component if available, - # otherwise find muc component by disco#items-ing the user domain. If - # not, give up - default_muc = config.get('default_muc_service') - if not default_muc: - self.information( - "Error finding a MUC service to join. If your server does not " - "provide one, set 'default_muc_service' manually to a MUC " - "service that allows room creation.", - 'Error' - ) - return + def callback(results): + muc_from_identity = '' + + for info in results: + for identity in info['disco_info']['identities']: + if identity[0] == 'conference' and identity[1] == 'text': + muc_from_identity = info['from'].bare + + # Use config.default_muc_service as muc component if available, + # otherwise find muc component by disco#items-ing the user domain. + # If not, give up + default_muc = config.get('default_muc_service', muc_from_identity) + if not default_muc: + self.information( + "Error finding a MUC service to join. If your server does not " + "provide one, set 'default_muc_service' manually to a MUC " + "service that allows room creation.", + 'Error' + ) + return + + nick = self.own_nick + room = uuid.uuid4().hex + '@' + default_muc - nick = self.own_nick - room = uuid.uuid4().hex + '@' + default_muc + self.open_new_room(room, nick).join() + self.information('Room %s created' % room, 'Info') - self.open_new_room(room, nick).join() - self.information('Room %s created' % room, 'Info') + for jid in jids: + self.invite(jid, room) - for jid in jids: - self.invite(jid, room) + asyncio.ensure_future( + self.xmpp['xep_0030'].get_info_from_domain( + callback=callback, + ) + ) def get_error_message(self, stanza, deprecated: bool = False): """ diff --git a/poezio/core/handlers.py b/poezio/core/handlers.py index 0e655d68..b87e7307 100644 --- a/poezio/core/handlers.py +++ b/poezio/core/handlers.py @@ -97,6 +97,11 @@ class HandlerCore: self.core.xmpp.plugin['xep_0030'].get_info( jid=self.core.xmpp.boundjid.domain, callback=callback) + def find_identities(self, _): + asyncio.ensure_future( + self.core.xmpp['xep_0030'].get_info_from_domain(), + ) + def on_carbon_received(self, message): """ Carbon received -- cgit v1.2.3