annotate sat/plugins/plugin_xep_0422.py @ 3959:da0e772881c3

cli (pubsub): new `signature` subcommands: A first `check` command can be used to check signature using the signature JSON data. More commands should follow to check or sign items. rel 381
author Goffi <goffi@goffi.org>
date Fri, 28 Oct 2022 18:47:17 +0200
parents 60724ff3f273
children 524856bd7b19
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3799
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/env python3
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
2
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
3 # Copyright (C) 2009-2022 Jérôme Poisson (goffi@goffi.org)
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
4
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
5 # This program is free software: you can redistribute it and/or modify
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
6 # it under the terms of the GNU Affero General Public License as published by
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # the Free Software Foundation, either version 3 of the License, or
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # (at your option) any later version.
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
9
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # This program is distributed in the hope that it will be useful,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # GNU Affero General Public License for more details.
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
14
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # You should have received a copy of the GNU Affero General Public License
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
17
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
18 from typing import Optional, List, Tuple, Union, NamedTuple
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
19 from collections import namedtuple
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
20
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
21 from twisted.words.protocols.jabber import xmlstream
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
22 from twisted.words.xish import domish
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
23 from wokkel import disco
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
24 from zope.interface import implementer
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
25
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
26 from sat.core.constants import Const as C
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
27 from sat.core.i18n import _
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
28 from sat.core.log import getLogger
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
29 from sat.core.core_types import SatXMPPEntity
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
30 from sat.memory.sqla_mapping import History
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
31 from sat.tools.common.async_utils import async_lru
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
32
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
33 log = getLogger(__name__)
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
34
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
35
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
36 PLUGIN_INFO = {
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
37 C.PI_NAME: "Message Fastening",
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
38 C.PI_IMPORT_NAME: "XEP-0422",
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
39 C.PI_TYPE: "XEP",
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
40 C.PI_MODES: C.PLUG_MODE_BOTH,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
41 C.PI_PROTOCOLS: ["XEP-0359", "XEP-0422"],
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
42 C.PI_MAIN: "XEP_0422",
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
43 C.PI_HANDLER: "yes",
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
44 C.PI_DESCRIPTION: _("""Implementation Message Fastening"""),
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
45 }
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
46
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
47 NS_FASTEN = "urn:xmpp:fasten:0"
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
48
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
49
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
50 class FastenMetadata(NamedTuple):
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
51 elements: List[domish.Element]
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
52 id: str
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
53 history: Optional[History]
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
54 clear: bool
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
55 shell: bool
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
56
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
57
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
58 class XEP_0422(object):
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
59
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
60 def __init__(self, host):
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
61 log.info(_("XEP-0422 (Message Fastening) plugin initialization"))
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
62 self.host = host
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
63 host.registerNamespace("fasten", NS_FASTEN)
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
64
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
65 def getHandler(self, __):
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
66 return XEP_0422_handler()
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
67
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
68 def applyToElt(
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
69 self,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
70 message_elt: domish.Element,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
71 origin_id: str,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
72 clear: Optional[bool] = None,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
73 shell: Optional[bool] = None,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
74 children: Optional[List[domish.Element]] = None,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
75 external: Optional[List[Union[str, Tuple[str, str]]]] = None
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
76 ) -> domish.Element:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
77 """Generate, add and return <apply-to> element
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
78
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
79 @param message_elt: wrapping <message> element
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
80 @param origin_id: origin ID of the target message
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
81 @param clear: set to True to remove a fastening
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
82 @param shell: set to True when using e2ee shell
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
83 cf. https://xmpp.org/extensions/xep-0422.html#encryption
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
84 @param children: element to fasten to the target message
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
85 <apply-to> element is returned, thus children can also easily be added
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
86 afterwards
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
87 @param external: <external> element to add
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
88 cf. https://xmpp.org/extensions/xep-0422.html#external-payloads
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
89 the list items can either be a str with only the element name,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
90 or a tuple which must then be (namespace, name)
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
91 @return: <apply-to> element, which is already added to the wrapping message_elt
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
92 """
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
93 apply_to_elt = message_elt.addElement((NS_FASTEN, "apply-to"))
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
94 apply_to_elt["id"] = origin_id
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
95 if clear is not None:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
96 apply_to_elt["clear"] = C.boolConst(clear)
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
97 if shell is not None:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
98 apply_to_elt["shell"] = C.boolConst(shell)
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
99 if children is not None:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
100 for child in children:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
101 apply_to_elt.addChild(child)
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
102 if external is not None:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
103 for ext in external:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
104 external_elt = apply_to_elt.addElement("external")
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
105 if isinstance(ext, str):
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
106 external_elt["name"] = ext
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
107 else:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
108 ns, name = ext
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
109 external_elt["name"] = name
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
110 external_elt["element-namespace"] = ns
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
111 return apply_to_elt
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
112
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
113 @async_lru(maxsize=5)
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
114 async def getFastenedElts(
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
115 self,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
116 client: SatXMPPEntity,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
117 message_elt: domish.Element
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
118 ) -> Optional[FastenMetadata]:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
119 """Get fastened elements
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
120
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
121 if the message contains no <apply-to> element, None is returned
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
122 """
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
123 try:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
124 apply_to_elt = next(message_elt.elements(NS_FASTEN, "apply-to"))
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
125 except StopIteration:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
126 return None
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
127 else:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
128 origin_id = apply_to_elt.getAttribute("id")
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
129 if not origin_id:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
130 log.warning(
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
131 f"Received invalid fastening message: {message_elt.toXml()}"
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
132 )
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
133 return None
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
134 elements = apply_to_elt.children
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
135 if not elements:
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
136 log.warning(f"No element to fasten: {message_elt.toXml()}")
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
137 return None
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
138 history = await self.host.memory.storage.get(
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
139 client,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
140 History,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
141 History.origin_id,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
142 origin_id,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
143 (History.messages, History.subjects, History.thread)
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
144 )
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
145 return FastenMetadata(
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
146 elements,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
147 origin_id,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
148 history,
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
149 C.bool(apply_to_elt.getAttribute("clear", C.BOOL_FALSE)),
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
150 C.bool(apply_to_elt.getAttribute("shell", C.BOOL_FALSE)),
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
151 )
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
152
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
153
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
154 @implementer(disco.IDisco)
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
155 class XEP_0422_handler(xmlstream.XMPPHandler):
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
156
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
157 def getDiscoInfo(self, __, target, nodeIdentifier=""):
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
158 return [disco.DiscoFeature(NS_FASTEN)]
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
159
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
160 def getDiscoItems(self, requestor, target, nodeIdentifier=""):
60724ff3f273 plugin XEP-0422: Message Fastening implementation:
Goffi <goffi@goffi.org>
parents:
diff changeset
161 return []