From 895ddd36bec88174edd9fa63d18529c980b199df Mon Sep 17 00:00:00 2001 From: Goffi Date: Mon, 5 Dec 2022 11:54:47 +0100 Subject: [PATCH] plugin XEP-0470: create a default configuration if node config can't be accessed --- sat/plugins/plugin_xep_0060.py | 13 +++++++++---- sat/plugins/plugin_xep_0470.py | 2 ++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/sat/plugins/plugin_xep_0060.py b/sat/plugins/plugin_xep_0060.py index 9d55b087..c6991053 100644 --- a/sat/plugins/plugin_xep_0060.py +++ b/sat/plugins/plugin_xep_0060.py @@ -961,6 +961,14 @@ class XEP_0060(object): d.addCallback(cb) return d + def make_configuration_form(self, options: dict) -> data_form.Form: + """Build a configuration form""" + form = data_form.Form( + formType="submit", formNamespace=pubsub.NS_PUBSUB_NODE_CONFIG + ) + form.makeFields(options) + return form + def _setNodeConfiguration(self, service_s, nodeIdentifier, options, profile_key): client = self.host.getClient(profile_key) d = self.setConfiguration( @@ -973,10 +981,7 @@ class XEP_0060(object): request.recipient = service request.nodeIdentifier = nodeIdentifier - form = data_form.Form( - formType="submit", formNamespace=pubsub.NS_PUBSUB_NODE_CONFIG - ) - form.makeFields(options) + form = self.make_configuration_form(options) request.options = form d = request.send(client.xmlstream) diff --git a/sat/plugins/plugin_xep_0470.py b/sat/plugins/plugin_xep_0470.py index 33361547..ee2717af 100644 --- a/sat/plugins/plugin_xep_0470.py +++ b/sat/plugins/plugin_xep_0470.py @@ -194,6 +194,8 @@ class PubsubAttachments: client, service, node ) node_config = await self._p.getConfiguration(client, service, node) + elif e.condition == "forbidden": + node_config = self._p.make_configuration_form({}) else: raise e try: