Mercurial > prosody-modules
annotate mod_muc_moderation/mod_muc_moderation.lua @ 6319:04c3273cb81f
mod_auth_cyrus: Add empty 'profile' table to SASL handler objects
This is for compatibility with Prosody's built-in util.sasl objects.
A SASL profile table usually includes methods supported by the backend, which
can be used by SASL mechanism handlers to perform operations (such as testing
the password). It also optionally contains a 'cb' field with channel binding
method handlers.
The Cyrus backend doesn't support channel binding, and doesn't have the same
concept of auth backend methods (it handles all that internally, and Prosody
has no insight or control over it).
Thus, we create an empty profile which informs Prosody that the SASL handler
does not support any of the auth or channel binding methods. Some features
will not work, but they didn't work anyway. This just makes it explicit.
This fixes a traceback in mod_sasl2_fast, which expected SASL handlers to
always contain a 'profile' field.
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 04 Sep 2025 10:14:46 +0100 |
| parents | a58fb6a05412 |
| children |
| rev | line source |
|---|---|
|
3900
06971a04216f
mod_muc_moderation: Add a copyright header
Kim Alvefur <zash@zash.se>
parents:
3897
diff
changeset
|
1 -- mod_muc_moderation |
|
06971a04216f
mod_muc_moderation: Add a copyright header
Kim Alvefur <zash@zash.se>
parents:
3897
diff
changeset
|
2 -- |
| 4754 | 3 -- Copyright (C) 2015-2021 Kim Alvefur |
|
3900
06971a04216f
mod_muc_moderation: Add a copyright header
Kim Alvefur <zash@zash.se>
parents:
3897
diff
changeset
|
4 -- |
|
06971a04216f
mod_muc_moderation: Add a copyright header
Kim Alvefur <zash@zash.se>
parents:
3897
diff
changeset
|
5 -- This file is MIT licensed. |
|
06971a04216f
mod_muc_moderation: Add a copyright header
Kim Alvefur <zash@zash.se>
parents:
3897
diff
changeset
|
6 -- |
|
06971a04216f
mod_muc_moderation: Add a copyright header
Kim Alvefur <zash@zash.se>
parents:
3897
diff
changeset
|
7 -- Implements: XEP-0425: Message Moderation |
|
06971a04216f
mod_muc_moderation: Add a copyright header
Kim Alvefur <zash@zash.se>
parents:
3897
diff
changeset
|
8 -- |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 -- Imports |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 local dt = require "util.datetime"; |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 local id = require "util.id"; |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 local jid = require "util.jid"; |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 local st = require "util.stanza"; |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 -- Plugin dependencies |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 local mod_muc = module:depends "muc"; |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 local muc_util = module:require "muc/util"; |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 local valid_roles = muc_util.valid_roles; |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 local muc_log_archive = module:open_store("muc_log", "archive"); |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 if not muc_log_archive.set then |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 module:log("warn", "Selected archive storage module does not support message replacement, no tombstones will be saved"); |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 end |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 -- Namespaces |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 local xmlns_fasten = "urn:xmpp:fasten:0"; |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 local xmlns_moderate = "urn:xmpp:message-moderate:0"; |
|
6128
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
30 local xmlns_moderate_1 = "urn:xmpp:message-moderate:1"; |
|
5611
06fad22672e1
mod_muc_moderation: Copy XEP-0421 occupant-id from retracted message
Kim Alvefur <zash@zash.se>
parents:
5170
diff
changeset
|
31 local xmlns_occupant_id = "urn:xmpp:occupant-id:0"; |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 local xmlns_retract = "urn:xmpp:message-retract:0"; |
|
6128
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
33 local xmlns_retract_1 = "urn:xmpp:message-retract:1"; |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 -- Discovering support |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 module:hook("muc-disco#info", function (event) |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 event.reply:tag("feature", { var = xmlns_moderate }):up(); |
|
6128
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
38 event.reply:tag("feature", { var = xmlns_moderate_1 }):up(); |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 end); |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
40 |
|
5169
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
41 -- TODO error registry, requires Prosody 0.12+ |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
42 |
|
5169
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
43 -- moderate : function (string, string, string, boolean, string) : boolean, enum, enum, string |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
44 local function moderate(actor, room_jid, stanza_id, retract, reason) |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
45 local room_node = jid.split(room_jid); |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
46 local room = mod_muc.get_room_from_jid(room_jid); |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
47 |
|
5170
4d6af8950016
mod_muc_moderation: Derive role from reserved nickname if occupant
Kim Alvefur <zash@zash.se>
parents:
5169
diff
changeset
|
48 -- Permissions is based on role, which is a property of a current occupant, |
|
4d6af8950016
mod_muc_moderation: Derive role from reserved nickname if occupant
Kim Alvefur <zash@zash.se>
parents:
5169
diff
changeset
|
49 -- so check if the actor is an occupant, otherwise if they have a reserved |
|
4d6af8950016
mod_muc_moderation: Derive role from reserved nickname if occupant
Kim Alvefur <zash@zash.se>
parents:
5169
diff
changeset
|
50 -- nickname that can be used to retrieve the role. |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
51 local actor_nick = room:get_occupant_jid(actor); |
|
4750
98429b646bd4
mod_muc_moderation: Use reserved nickname as fallback
Kim Alvefur <zash@zash.se>
parents:
4749
diff
changeset
|
52 if not actor_nick then |
|
98429b646bd4
mod_muc_moderation: Use reserved nickname as fallback
Kim Alvefur <zash@zash.se>
parents:
4749
diff
changeset
|
53 local reserved_nickname = room:get_affiliation_data(jid.bare(actor), "reserved_nickname"); |
|
98429b646bd4
mod_muc_moderation: Use reserved nickname as fallback
Kim Alvefur <zash@zash.se>
parents:
4749
diff
changeset
|
54 if reserved_nickname then |
|
4806
80f871bedcdf
mod_muc_moderation: Fix actor JID when moderated from outside (thanks lovetox)
Kim Alvefur <zash@zash.se>
parents:
4754
diff
changeset
|
55 actor_nick = room.jid .. "/" .. reserved_nickname; |
|
4750
98429b646bd4
mod_muc_moderation: Use reserved nickname as fallback
Kim Alvefur <zash@zash.se>
parents:
4749
diff
changeset
|
56 end |
|
98429b646bd4
mod_muc_moderation: Use reserved nickname as fallback
Kim Alvefur <zash@zash.se>
parents:
4749
diff
changeset
|
57 end |
|
98429b646bd4
mod_muc_moderation: Use reserved nickname as fallback
Kim Alvefur <zash@zash.se>
parents:
4749
diff
changeset
|
58 |
|
5170
4d6af8950016
mod_muc_moderation: Derive role from reserved nickname if occupant
Kim Alvefur <zash@zash.se>
parents:
5169
diff
changeset
|
59 -- Retrieve their current role, iff they are in the room, otherwise what they |
|
4d6af8950016
mod_muc_moderation: Derive role from reserved nickname if occupant
Kim Alvefur <zash@zash.se>
parents:
5169
diff
changeset
|
60 -- would have based on affiliation. |
|
4d6af8950016
mod_muc_moderation: Derive role from reserved nickname if occupant
Kim Alvefur <zash@zash.se>
parents:
5169
diff
changeset
|
61 local affiliation = room:get_affiliation(actor); |
|
4d6af8950016
mod_muc_moderation: Derive role from reserved nickname if occupant
Kim Alvefur <zash@zash.se>
parents:
5169
diff
changeset
|
62 local role = room:get_role(actor_nick) or room:get_default_role(affiliation); |
|
4d6af8950016
mod_muc_moderation: Derive role from reserved nickname if occupant
Kim Alvefur <zash@zash.se>
parents:
5169
diff
changeset
|
63 if valid_roles[role or "none"] < valid_roles.moderator then |
|
4d6af8950016
mod_muc_moderation: Derive role from reserved nickname if occupant
Kim Alvefur <zash@zash.se>
parents:
5169
diff
changeset
|
64 return false, "auth", "forbidden", "You need a role of at least 'moderator'"; |
|
4d6af8950016
mod_muc_moderation: Derive role from reserved nickname if occupant
Kim Alvefur <zash@zash.se>
parents:
5169
diff
changeset
|
65 end |
|
4d6af8950016
mod_muc_moderation: Derive role from reserved nickname if occupant
Kim Alvefur <zash@zash.se>
parents:
5169
diff
changeset
|
66 |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
67 -- Original stanza to base tombstone on |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
68 local original, err; |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
69 if muc_log_archive.get then |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
70 original, err = muc_log_archive:get(room_node, stanza_id); |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
71 else |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
72 -- COMPAT missing :get API |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
73 err = "item-not-found"; |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
74 for i, item in muc_log_archive:find(room_node, { key = stanza_id, limit = 1 }) do |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
75 if i == stanza_id then |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
76 original, err = item, nil; |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
77 end |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
78 end |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
79 end |
|
5169
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
80 |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
81 if not original then |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
82 if err == "item-not-found" then |
|
5169
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
83 return false, "modify", "item-not-found"; |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
84 else |
|
5169
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
85 return false, "wait", "internal-server-error"; |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
86 end |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
87 end |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
88 |
|
5942
5ccc03c33158
mod_muc_moderation: Fix a regression. Actor occupant-id was not added under the moderated tag, but at the top level.
John Livingston <git@john-livingston.fr>
parents:
5612
diff
changeset
|
89 local actor_occupant = room:get_occupant_by_real_jid(actor) or room:new_occupant(jid.bare(actor), actor_nick); |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
90 |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
91 local announcement = st.message({ from = room_jid, type = "groupchat", id = id.medium(), }) |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
92 :tag("apply-to", { xmlns = xmlns_fasten, id = stanza_id }) |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
93 :tag("moderated", { xmlns = xmlns_moderate, by = actor_nick }) |
|
4814
5f12c75fd210
mod_muc_moderation: Handle non-retraction moderation
Kim Alvefur <zash@zash.se>
parents:
4806
diff
changeset
|
94 |
|
5942
5ccc03c33158
mod_muc_moderation: Fix a regression. Actor occupant-id was not added under the moderated tag, but at the top level.
John Livingston <git@john-livingston.fr>
parents:
5612
diff
changeset
|
95 if room.get_occupant_id then |
|
5ccc03c33158
mod_muc_moderation: Fix a regression. Actor occupant-id was not added under the moderated tag, but at the top level.
John Livingston <git@john-livingston.fr>
parents:
5612
diff
changeset
|
96 -- This isn't a regular broadcast message going through the events occupant_id.lib hooks so we do this here |
|
5ccc03c33158
mod_muc_moderation: Fix a regression. Actor occupant-id was not added under the moderated tag, but at the top level.
John Livingston <git@john-livingston.fr>
parents:
5612
diff
changeset
|
97 announcement:add_child(st.stanza("occupant-id", { xmlns = xmlns_occupant_id; id = room:get_occupant_id(actor_occupant) })); |
|
5ccc03c33158
mod_muc_moderation: Fix a regression. Actor occupant-id was not added under the moderated tag, but at the top level.
John Livingston <git@john-livingston.fr>
parents:
5612
diff
changeset
|
98 end |
|
5ccc03c33158
mod_muc_moderation: Fix a regression. Actor occupant-id was not added under the moderated tag, but at the top level.
John Livingston <git@john-livingston.fr>
parents:
5612
diff
changeset
|
99 |
|
4814
5f12c75fd210
mod_muc_moderation: Handle non-retraction moderation
Kim Alvefur <zash@zash.se>
parents:
4806
diff
changeset
|
100 if retract then |
|
5f12c75fd210
mod_muc_moderation: Handle non-retraction moderation
Kim Alvefur <zash@zash.se>
parents:
4806
diff
changeset
|
101 announcement:tag("retract", { xmlns = xmlns_retract }):up(); |
|
5f12c75fd210
mod_muc_moderation: Handle non-retraction moderation
Kim Alvefur <zash@zash.se>
parents:
4806
diff
changeset
|
102 end |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
103 |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
104 if reason then |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
105 announcement:text_tag("reason", reason); |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
106 end |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
107 |
|
5611
06fad22672e1
mod_muc_moderation: Copy XEP-0421 occupant-id from retracted message
Kim Alvefur <zash@zash.se>
parents:
5170
diff
changeset
|
108 local moderated_occupant_id = original:get_child("occupant-id", xmlns_occupant_id); |
|
06fad22672e1
mod_muc_moderation: Copy XEP-0421 occupant-id from retracted message
Kim Alvefur <zash@zash.se>
parents:
5170
diff
changeset
|
109 if room.get_occupant_id and moderated_occupant_id then |
|
06fad22672e1
mod_muc_moderation: Copy XEP-0421 occupant-id from retracted message
Kim Alvefur <zash@zash.se>
parents:
5170
diff
changeset
|
110 announcement:add_direct_child(moderated_occupant_id); |
|
06fad22672e1
mod_muc_moderation: Copy XEP-0421 occupant-id from retracted message
Kim Alvefur <zash@zash.se>
parents:
5170
diff
changeset
|
111 end |
|
06fad22672e1
mod_muc_moderation: Copy XEP-0421 occupant-id from retracted message
Kim Alvefur <zash@zash.se>
parents:
5170
diff
changeset
|
112 |
|
6128
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
113 -- XEP 0425 v0.3.0 |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
114 |
|
5943
5076b78c95ef
mod_muc_moderation: Fix occupant-id placement in moderated tombstone.
John Livingston <git@john-livingston.fr>
parents:
5942
diff
changeset
|
115 announcement:reset(); |
|
5076b78c95ef
mod_muc_moderation: Fix occupant-id placement in moderated tombstone.
John Livingston <git@john-livingston.fr>
parents:
5942
diff
changeset
|
116 |
|
6128
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
117 if retract then |
|
6134
a58fb6a05412
mod_muc_moderation: add missing id attribute to retract
nicoco <nicoco@nicoco.fr>
parents:
6128
diff
changeset
|
118 announcement:tag("retract", { xmlns = xmlns_retract_1; id = stanza_id }) |
|
6128
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
119 :tag("moderated", { xmlns = xmlns_moderate_1 }) |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
120 :tag("occupant-id", { xmlns = xmlns_occupant_id; id = room:get_occupant_id(actor_occupant) }); |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
121 if reason then |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
122 announcement:up():up():text_tag("reason", reason); |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
123 end |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
124 end |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
125 |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
126 |
|
5944
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
127 local tombstone = nil; |
|
4814
5f12c75fd210
mod_muc_moderation: Handle non-retraction moderation
Kim Alvefur <zash@zash.se>
parents:
4806
diff
changeset
|
128 if muc_log_archive.set and retract then |
|
5944
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
129 tombstone = st.message({ from = original.attr.from, type = "groupchat", id = original.attr.id }) |
|
4814
5f12c75fd210
mod_muc_moderation: Handle non-retraction moderation
Kim Alvefur <zash@zash.se>
parents:
4806
diff
changeset
|
130 :tag("moderated", { xmlns = xmlns_moderate, by = actor_nick }) |
|
5943
5076b78c95ef
mod_muc_moderation: Fix occupant-id placement in moderated tombstone.
John Livingston <git@john-livingston.fr>
parents:
5942
diff
changeset
|
131 :tag("retracted", { xmlns = xmlns_retract, stamp = dt.datetime() }):up(); |
|
5611
06fad22672e1
mod_muc_moderation: Copy XEP-0421 occupant-id from retracted message
Kim Alvefur <zash@zash.se>
parents:
5170
diff
changeset
|
132 |
|
4814
5f12c75fd210
mod_muc_moderation: Handle non-retraction moderation
Kim Alvefur <zash@zash.se>
parents:
4806
diff
changeset
|
133 if reason then |
|
5f12c75fd210
mod_muc_moderation: Handle non-retraction moderation
Kim Alvefur <zash@zash.se>
parents:
4806
diff
changeset
|
134 tombstone:text_tag("reason", reason); |
|
5f12c75fd210
mod_muc_moderation: Handle non-retraction moderation
Kim Alvefur <zash@zash.se>
parents:
4806
diff
changeset
|
135 end |
|
5943
5076b78c95ef
mod_muc_moderation: Fix occupant-id placement in moderated tombstone.
John Livingston <git@john-livingston.fr>
parents:
5942
diff
changeset
|
136 |
|
5076b78c95ef
mod_muc_moderation: Fix occupant-id placement in moderated tombstone.
John Livingston <git@john-livingston.fr>
parents:
5942
diff
changeset
|
137 if room.get_occupant_id then |
|
5076b78c95ef
mod_muc_moderation: Fix occupant-id placement in moderated tombstone.
John Livingston <git@john-livingston.fr>
parents:
5942
diff
changeset
|
138 if actor_occupant then |
|
5076b78c95ef
mod_muc_moderation: Fix occupant-id placement in moderated tombstone.
John Livingston <git@john-livingston.fr>
parents:
5942
diff
changeset
|
139 tombstone:add_child(st.stanza("occupant-id", { xmlns = xmlns_occupant_id; id = room:get_occupant_id(actor_occupant) })); |
|
5076b78c95ef
mod_muc_moderation: Fix occupant-id placement in moderated tombstone.
John Livingston <git@john-livingston.fr>
parents:
5942
diff
changeset
|
140 end |
|
5076b78c95ef
mod_muc_moderation: Fix occupant-id placement in moderated tombstone.
John Livingston <git@john-livingston.fr>
parents:
5942
diff
changeset
|
141 |
|
5076b78c95ef
mod_muc_moderation: Fix occupant-id placement in moderated tombstone.
John Livingston <git@john-livingston.fr>
parents:
5942
diff
changeset
|
142 if moderated_occupant_id then |
|
5076b78c95ef
mod_muc_moderation: Fix occupant-id placement in moderated tombstone.
John Livingston <git@john-livingston.fr>
parents:
5942
diff
changeset
|
143 -- Copy occupant id from moderated message |
|
5076b78c95ef
mod_muc_moderation: Fix occupant-id placement in moderated tombstone.
John Livingston <git@john-livingston.fr>
parents:
5942
diff
changeset
|
144 tombstone:add_direct_child(moderated_occupant_id); |
|
5076b78c95ef
mod_muc_moderation: Fix occupant-id placement in moderated tombstone.
John Livingston <git@john-livingston.fr>
parents:
5942
diff
changeset
|
145 end |
|
5076b78c95ef
mod_muc_moderation: Fix occupant-id placement in moderated tombstone.
John Livingston <git@john-livingston.fr>
parents:
5942
diff
changeset
|
146 end |
|
5169
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
147 tombstone:reset(); |
|
5944
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
148 end |
|
4814
5f12c75fd210
mod_muc_moderation: Handle non-retraction moderation
Kim Alvefur <zash@zash.se>
parents:
4806
diff
changeset
|
149 |
|
5944
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
150 -- fire an event, that can be used to cancel the moderation, or modify stanzas. |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
151 local event = { |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
152 room = room; |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
153 announcement = announcement; |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
154 tombstone = tombstone; |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
155 stanza_id = stanza_id; |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
156 retract = retract; |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
157 reason = reason; |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
158 actor = actor; |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
159 actor_nick = actor_nick; |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
160 }; |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
161 if module:fire_event("muc-moderate-message", event) then |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
162 -- TODO: allow to change the error message? |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
163 return false, "wait", "internal-server-error"; |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
164 end |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
165 |
|
4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
John Livingston <git@john-livingston.fr>
parents:
5943
diff
changeset
|
166 if tombstone then |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
167 local was_replaced = muc_log_archive:set(room_node, stanza_id, tombstone); |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
168 if not was_replaced then |
|
5169
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
169 return false, "wait", "internal-server-error"; |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
170 end |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
171 end |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
172 |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
173 -- Done, tell people about it |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
174 module:log("info", "Message with id '%s' in room %s moderated by %s, reason: %s", stanza_id, room_jid, actor, reason); |
|
3902
341850e8866f
mod_muc_moderation: Broadcast retraction via method that saves it
Kim Alvefur <zash@zash.se>
parents:
3901
diff
changeset
|
175 room:broadcast_message(announcement); |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
176 |
|
5169
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
177 return true; |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
178 end |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
179 |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
180 -- Main handling |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
181 module:hook("iq-set/bare/" .. xmlns_fasten .. ":apply-to", function (event) |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
182 local stanza, origin = event.stanza, event.origin; |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
183 |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
184 local actor = stanza.attr.from; |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
185 local room_jid = stanza.attr.to; |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
186 |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
187 -- Collect info we need |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
188 local apply_to = stanza.tags[1]; |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
189 local moderate_tag = apply_to:get_child("moderate", xmlns_moderate); |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
190 if not moderate_tag then return end -- some other kind of fastening? |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
191 |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
192 local reason = moderate_tag:get_child_text("reason"); |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
193 local retract = moderate_tag:get_child("retract", xmlns_retract); |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
194 |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
195 local stanza_id = apply_to.attr.id; |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
196 |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
197 local ok, error_type, error_condition, error_text = moderate(actor, room_jid, stanza_id, retract, reason); |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
198 if not ok then |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
199 origin.send(st.error_reply(stanza, error_type, error_condition, error_text)); |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
200 return true; |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
201 end |
|
1071a420ff6f
mod_muc_moderation: Refactor to prepare for new version of XEP-0425
Kim Alvefur <zash@zash.se>
parents:
4814
diff
changeset
|
202 |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
203 origin.send(st.reply(stanza)); |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
204 return true; |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
205 end); |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
206 |
|
6128
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
207 module:hook("iq-set/bare/" .. xmlns_moderate_1 .. ":moderate", function (event) |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
208 local stanza, origin = event.stanza, event.origin; |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
209 |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
210 local actor = stanza.attr.from; |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
211 local room_jid = stanza.attr.to; |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
212 |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
213 local moderate_tag = stanza:get_child("moderate", xmlns_moderate_1) |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
214 local retract_tag = moderate_tag:get_child("retract", xmlns_retract_1) |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
215 |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
216 if not retract_tag then return end -- other kind of moderation? |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
217 |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
218 local reason = moderate_tag:get_child_text("reason"); |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
219 local stanza_id = moderate_tag.attr.id |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
220 |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
221 local ok, error_type, error_condition, error_text = moderate( |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
222 actor, |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
223 room_jid, |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
224 stanza_id, |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
225 retract_tag, |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
226 reason |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
227 ); |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
228 if not ok then |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
229 origin.send(st.error_reply(stanza, error_type, error_condition, error_text)); |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
230 return true; |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
231 end |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
232 |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
233 origin.send(st.reply(stanza)); |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
234 return true; |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
235 end); |
|
bcad6baa4fc3
mod_muc_moderation: partial support for XEP-0425 v0.3.0 (no tombstones)
nicoco <nicoco@nicoco.fr>
parents:
5944
diff
changeset
|
236 |
|
3897
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
237 module:hook("muc-message-is-historic", function (event) |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
238 -- Ensure moderation messages are stored |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
239 if event.stanza.attr.from == event.room.jid then |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
240 return event.stanza:get_child("apply-to", xmlns_fasten); |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
241 end |
|
3a96070f4a14
mod_muc_moderation: Initial commit of XEP-0425: Message Moderation
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
242 end, 1); |
