Mercurial > prosody-modules
comparison mod_http_muc_log/mod_http_muc_log.lua @ 4992:ed5abb8b8fa8
mod_http_muc_log: Use XEP-0421 ID over nickname for XEP-0308
This prevents someone else from joining with the same nickname as
someone who left, and "correcting" their messages.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 16 Aug 2022 01:41:45 +0200 |
parents | b17d63ef5bdf |
children | f36d15107c15 |
comparison
equal
deleted
inserted
replaced
4991:b17d63ef5bdf | 4992:ed5abb8b8fa8 |
---|---|
324 verb = item.attr.type == "unavailable" and "has left" or "has joined"; | 324 verb = item.attr.type == "unavailable" and "has left" or "has joined"; |
325 lang = "en"; | 325 lang = "en"; |
326 end | 326 end |
327 | 327 |
328 local nick = select(3, jid_split(item.attr.from)); | 328 local nick = select(3, jid_split(item.attr.from)); |
329 local occupant_id = item:find("{urn:xmpp:occupant-id:0}occupant-id@id") or nick; | |
329 | 330 |
330 -- XEP-0066: Out of Band Data | 331 -- XEP-0066: Out of Band Data |
331 local oob = use_oob and item:get_child("x", "jabber:x:oob"); | 332 local oob = use_oob and item:get_child("x", "jabber:x:oob"); |
332 | 333 |
333 -- XEP-0425: Message Moderation | 334 -- XEP-0425: Message Moderation |
349 -- XEP-0308: Last Message Correction | 350 -- XEP-0308: Last Message Correction |
350 local edit = item:find("{urn:xmpp:message-correct:0}replace/@id"); | 351 local edit = item:find("{urn:xmpp:message-correct:0}replace/@id"); |
351 if edit then | 352 if edit then |
352 local found = false; | 353 local found = false; |
353 for n = i-1, 1, -1 do | 354 for n = i-1, 1, -1 do |
354 if logs[n].message_id == edit and nick == logs[n].nick then | 355 if logs[n].message_id == edit and occupant_id == logs[n].occupant_id then |
355 found = true; | 356 found = true; |
356 logs[n].edited = archive_id; | 357 logs[n].edited = archive_id; |
357 edit = logs[n].archive_id; | 358 edit = logs[n].archive_id; |
358 break; | 359 break; |
359 end | 360 end |
392 | 393 |
393 if body or verb or oob then | 394 if body or verb or oob then |
394 local line = { | 395 local line = { |
395 message_id = message_id; | 396 message_id = message_id; |
396 archive_id = archive_id; | 397 archive_id = archive_id; |
398 occupant_id = occupant_id; | |
397 datetime = datetime.datetime(when); | 399 datetime = datetime.datetime(when); |
398 time = datetime.time(when); | 400 time = datetime.time(when); |
399 verb = verb; | 401 verb = verb; |
400 body = body; | 402 body = body; |
401 lang = lang; | 403 lang = lang; |