comparison libervia/backend/plugins/plugin_sec_autocrypt.py @ 4379:79d463e3fdeb

core (types): Renamed `libervia.backend.core.core_types.MessageData` to `MessageDataLegacy`: There are 2 concurrent models, this one is an historical legacy. The type to use the one from `libervia.backend.models.core`, and it will progressively be used everywhere and fully based on Pydantic.
author Goffi <goffi@goffi.org>
date Fri, 04 Jul 2025 12:28:00 +0200
parents 6a0a081485b8
children
comparison
equal deleted inserted replaced
4378:930a4ea7ab6f 4379:79d463e3fdeb
25 from twisted.internet import defer 25 from twisted.internet import defer
26 from twisted.words.protocols.jabber import jid 26 from twisted.words.protocols.jabber import jid
27 from twisted.words.xish import domish 27 from twisted.words.xish import domish
28 28
29 from libervia.backend.core.constants import Const as C 29 from libervia.backend.core.constants import Const as C
30 from libervia.backend.core.core_types import MessageData, SatXMPPEntity 30 from libervia.backend.core.core_types import MessageDataLegacy, SatXMPPEntity
31 from libervia.backend.core.i18n import _ 31 from libervia.backend.core.i18n import _
32 from libervia.backend.core.log import getLogger 32 from libervia.backend.core.log import getLogger
33 from libervia.backend.memory import persistent 33 from libervia.backend.memory import persistent
34 from libervia.backend.plugins.plugin_xep_0106 import XEP_0106 34 from libervia.backend.plugins.plugin_xep_0106 import XEP_0106
35 from libervia.backend.plugins.plugin_xep_0131 import XEP_0131 35 from libervia.backend.plugins.plugin_xep_0131 import XEP_0131
157 # Sender already handled. 157 # Sender already handled.
158 client._autocrypt_seen: set[str] = set() 158 client._autocrypt_seen: set[str] = set()
159 client._autocrypt_gpg_provider = get_gpg_provider(self.host, client) 159 client._autocrypt_gpg_provider = get_gpg_provider(self.host, client)
160 160
161 async def handle_autocrypt_data( 161 async def handle_autocrypt_data(
162 self, client: SatXMPPEntity, mess_data: MessageData, autocrypt_data_raw: str 162 self, client: SatXMPPEntity, mess_data: MessageDataLegacy, autocrypt_data_raw: str
163 ) -> None: 163 ) -> None:
164 """Process Autocrypt header from XMPP email gateway 164 """Process Autocrypt header from XMPP email gateway
165 165
166 @param client: Client session. 166 @param client: Client session.
167 @param mess_data: Message data. 167 @param mess_data: Message data.
209 "autocrypt" 209 "autocrypt"
210 ) 210 )
211 client._autocrypt_seen.add(sender_email) 211 client._autocrypt_seen.add(sender_email)
212 212
213 def _check_headers( 213 def _check_headers(
214 self, client: SatXMPPEntity, mess_data: MessageData 214 self, client: SatXMPPEntity, mess_data: MessageDataLegacy
215 ) -> MessageData: 215 ) -> MessageDataLegacy:
216 try: 216 try:
217 autocrypt_data = mess_data["extra"]["headers"]["autocrypt"] 217 autocrypt_data = mess_data["extra"]["headers"]["autocrypt"]
218 except KeyError: 218 except KeyError:
219 pass 219 pass
220 else: 220 else:
230 post_treat: defer.Deferred, 230 post_treat: defer.Deferred,
231 ) -> Literal[True]: 231 ) -> Literal[True]:
232 post_treat.addCallback(partial(self._check_headers, client)) 232 post_treat.addCallback(partial(self._check_headers, client))
233 return True 233 return True
234 234
235 async def add_autocrypt_header(self, client, mess_data: MessageData) -> MessageData: 235 async def add_autocrypt_header(self, client, mess_data: MessageDataLegacy) -> MessageDataLegacy:
236 to_jid = mess_data["to"] 236 to_jid = mess_data["to"]
237 if await self.host.memory.disco.has_identity( 237 if await self.host.memory.disco.has_identity(
238 client, "gateway", "smtp", jid.JID(to_jid.host) 238 client, "gateway", "smtp", jid.JID(to_jid.host)
239 ): 239 ):
240 gpg_provider = client._autocrypt_gpg_provider 240 gpg_provider = client._autocrypt_gpg_provider
263 def send_message_trigger( 263 def send_message_trigger(
264 self, client, mess_data, pre_xml_treatments, post_xml_treatments 264 self, client, mess_data, pre_xml_treatments, post_xml_treatments
265 ) -> Literal[True]: 265 ) -> Literal[True]:
266 """Process the XEP-0131 related data to be sent""" 266 """Process the XEP-0131 related data to be sent"""
267 267
268 def add_headers(mess_data: MessageData) -> MessageData: 268 def add_headers(mess_data: MessageDataLegacy) -> MessageDataLegacy:
269 extra = mess_data["extra"] 269 extra = mess_data["extra"]
270 self.move_keywords_to_headers(extra) 270 self.move_keywords_to_headers(extra)
271 # Now we parse headers, if any. 271 # Now we parse headers, if any.
272 if "headers" in extra: 272 if "headers" in extra:
273 headers_data = HeadersData(**extra["headers"]) 273 headers_data = HeadersData(**extra["headers"])