Mercurial > libervia-backend
changeset 4021:412b99c29d83
core (xmpp), component file sharing, plugin XEP-0363: `enabled_features` + HTTP Upload:
add a mechanism to explicitely enable some features in components, and use it to enable
HTTP Upload only if it's explicitely enabled.
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 23 Mar 2023 15:38:07 +0100 |
parents | d8a1219e913f |
children | cdb7de398c85 |
files | sat/core/xmpp.py sat/plugins/plugin_comp_file_sharing.py sat/plugins/plugin_xep_0363.py |
diffstat | 3 files changed, 13 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/sat/core/xmpp.py Thu Mar 23 15:32:10 2023 +0100 +++ b/sat/core/xmpp.py Thu Mar 23 15:38:07 2023 +0100 @@ -1067,6 +1067,7 @@ ) ) + self.enabled_features = set() self.identities = [disco.DiscoIdentity("component", "generic", C.APP_NAME)] # jid is set automatically on bind by Twisted for Client, but not for Component self.jid = component_jid
--- a/sat/plugins/plugin_comp_file_sharing.py Thu Mar 23 15:32:10 2023 +0100 +++ b/sat/plugins/plugin_comp_file_sharing.py Thu Mar 23 15:38:07 2023 +0100 @@ -355,7 +355,7 @@ self._h = self.host.plugins["XEP-0300"] self._t = self.host.plugins["XEP-0264"] self._hu = self.host.plugins["XEP-0363"] - self._hu.registerHandler(self._onHTTPUpload) + self._hu.registerHandler(self._on_http_upload) self.host.trigger.add("FILE_getDestDir", self._getDestDirTrigger) self.host.trigger.add( "XEP-0234_fileSendingRequest", self._fileSendingRequestTrigger, priority=1000 @@ -393,6 +393,9 @@ return Comments_handler(self) def profileConnecting(self, client): + # we activate HTTP upload + client.enabled_features.add("XEP-0363") + self.init() public_base_url = self.host.memory.getConfig( 'component file-sharing', 'http_upload_public_facing_url') @@ -632,7 +635,7 @@ except KeyError: log.error(f"trying to purge an inexisting upload slot ({upload_id})") - async def _onHTTPUpload(self, client, request): + async def _on_http_upload(self, client, request): # filename should be already cleaned, but it's better to double check assert '/' not in request.filename # client._file_sharing_allowed_hosts is set in plugin XEP-0329
--- a/sat/plugins/plugin_xep_0363.py Thu Mar 23 15:32:10 2023 +0100 +++ b/sat/plugins/plugin_xep_0363.py Thu Mar 23 15:38:07 2023 +0100 @@ -433,14 +433,19 @@ self.plugin_parent = plugin_parent def connectionInitialized(self): - if self.parent.is_component: + if ((self.parent.is_component + and PLUGIN_INFO[C.PI_IMPORT_NAME] in self.parent.enabled_features)): self.xmlstream.addObserver( IQ_HTTP_UPLOAD_REQUEST, self.plugin_parent.onComponentRequest, client=self.parent ) def getDiscoInfo(self, requestor, target, nodeIdentifier=""): - return [disco.DiscoFeature(NS_HTTP_UPLOAD)] + if ((self.parent.is_component + and not PLUGIN_INFO[C.PI_IMPORT_NAME] in self.parent.enabled_features)): + return [] + else: + return [disco.DiscoFeature(NS_HTTP_UPLOAD)] def getDiscoItems(self, requestor, target, nodeIdentifier=""): return []