annotate plugins/muc/hats.lib.lua @ 14167:f149652cb5ff 13.0

mod_cloud_notify: Use correct stanza id when clearing table entries (mem leak) The memory leak fix in 041c7ff18f76 was insufficient, as the wrong stanza id was used to clear the table entries.
author Matthew Wild <mwild1@gmail.com>
date Tue, 19 May 2026 19:26:42 +0100
parents 9bcd58e8e9f9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12977
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 11245
diff changeset
1 local st = require "prosody.util.stanza";
10714
9ecad2304297 MUC: Switch hats to new presence APIs
Matthew Wild <mwild1@gmail.com>
parents: 10693
diff changeset
2 local muc_util = module:require "muc/util";
10693
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3
13692
18bc411d61fe MUC: Use new XEP namespace for hats by default
Matthew Wild <mwild1@gmail.com>
parents: 13523
diff changeset
4 local hats_compat = module:get_option_boolean("muc_hats_compat", false); -- COMPAT for pre-XEP namespace
13468
98806cac64c3 MUC: Switch to official XEP-0317 namespace for Hats (including compat) (thanks nicoco)
Kim Alvefur <zash@zash.se>
parents: 12977
diff changeset
5
98806cac64c3 MUC: Switch to official XEP-0317 namespace for Hats (including compat) (thanks nicoco)
Kim Alvefur <zash@zash.se>
parents: 12977
diff changeset
6 local xmlns_hats_legacy = "xmpp:prosody.im/protocol/hats:1";
98806cac64c3 MUC: Switch to official XEP-0317 namespace for Hats (including compat) (thanks nicoco)
Kim Alvefur <zash@zash.se>
parents: 12977
diff changeset
7 local xmlns_hats = "urn:xmpp:hats:0";
10693
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8
10714
9ecad2304297 MUC: Switch hats to new presence APIs
Matthew Wild <mwild1@gmail.com>
parents: 10693
diff changeset
9 -- Strip any hats claimed by the client (to prevent spoofing)
9ecad2304297 MUC: Switch hats to new presence APIs
Matthew Wild <mwild1@gmail.com>
parents: 10693
diff changeset
10 muc_util.add_filtered_namespace(xmlns_hats);
10693
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11
14094
9bcd58e8e9f9 MUC: Advertise hats feature on room JID (thanks Daniel)
Matthew Wild <mwild1@gmail.com>
parents: 13692
diff changeset
12 module:hook("muc-disco#info", function(event)
9bcd58e8e9f9 MUC: Advertise hats feature on room JID (thanks Daniel)
Matthew Wild <mwild1@gmail.com>
parents: 13692
diff changeset
13 event.reply:tag("feature", { var = xmlns_hats }):up();
9bcd58e8e9f9 MUC: Advertise hats feature on room JID (thanks Daniel)
Matthew Wild <mwild1@gmail.com>
parents: 13692
diff changeset
14 end);
11245
43b43e7156b8 MUC: Add support for presence probes (fixes #1535)
JC Brand <jc@opkode.com>
parents: 10714
diff changeset
15
10714
9ecad2304297 MUC: Switch hats to new presence APIs
Matthew Wild <mwild1@gmail.com>
parents: 10693
diff changeset
16 module:hook("muc-build-occupant-presence", function (event)
11245
43b43e7156b8 MUC: Add support for presence probes (fixes #1535)
JC Brand <jc@opkode.com>
parents: 10714
diff changeset
17 local bare_jid = event.occupant and event.occupant.bare_jid or event.bare_jid;
43b43e7156b8 MUC: Add support for presence probes (fixes #1535)
JC Brand <jc@opkode.com>
parents: 10714
diff changeset
18 local aff_data = event.room:get_affiliation_data(bare_jid);
10693
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 local hats = aff_data and aff_data.hats;
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 if not hats then return; end
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 local hats_el;
13469
f9171624fd03 MUC: Fix legacy hats (thanks nicoco)
Kim Alvefur <zash@zash.se>
parents: 13468
diff changeset
22 local legacy_hats_el;
10693
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 for hat_id, hat_data in pairs(hats) do
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 if hat_data.active then
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 if not hats_el then
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 hats_el = st.stanza("hats", { xmlns = xmlns_hats });
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 end
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 hats_el:tag("hat", { uri = hat_id, title = hat_data.title }):up();
13469
f9171624fd03 MUC: Fix legacy hats (thanks nicoco)
Kim Alvefur <zash@zash.se>
parents: 13468
diff changeset
29
13468
98806cac64c3 MUC: Switch to official XEP-0317 namespace for Hats (including compat) (thanks nicoco)
Kim Alvefur <zash@zash.se>
parents: 12977
diff changeset
30 if hats_compat then
13523
365212120b82 MUC: Fix error with nonlegacy hats.
Aidan Epstein <aidan@jmad.org>
parents: 13469
diff changeset
31 if not legacy_hats_el then
13469
f9171624fd03 MUC: Fix legacy hats (thanks nicoco)
Kim Alvefur <zash@zash.se>
parents: 13468
diff changeset
32 legacy_hats_el = st.stanza("hats", { xmlns = xmlns_hats_legacy });
13468
98806cac64c3 MUC: Switch to official XEP-0317 namespace for Hats (including compat) (thanks nicoco)
Kim Alvefur <zash@zash.se>
parents: 12977
diff changeset
33 end
13469
f9171624fd03 MUC: Fix legacy hats (thanks nicoco)
Kim Alvefur <zash@zash.se>
parents: 13468
diff changeset
34 legacy_hats_el:tag("hat", { uri = hat_id, title = hat_data.title }):up();
13468
98806cac64c3 MUC: Switch to official XEP-0317 namespace for Hats (including compat) (thanks nicoco)
Kim Alvefur <zash@zash.se>
parents: 12977
diff changeset
35 end
10693
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 end
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 end
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 if not hats_el then return; end
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39 event.stanza:add_direct_child(hats_el);
13469
f9171624fd03 MUC: Fix legacy hats (thanks nicoco)
Kim Alvefur <zash@zash.se>
parents: 13468
diff changeset
40
f9171624fd03 MUC: Fix legacy hats (thanks nicoco)
Kim Alvefur <zash@zash.se>
parents: 13468
diff changeset
41 if legacy_hats_el then
f9171624fd03 MUC: Fix legacy hats (thanks nicoco)
Kim Alvefur <zash@zash.se>
parents: 13468
diff changeset
42 event.stanza:add_direct_child(legacy_hats_el);
f9171624fd03 MUC: Fix legacy hats (thanks nicoco)
Kim Alvefur <zash@zash.se>
parents: 13468
diff changeset
43 end
10693
76bb806cdd4b MUC: Add initial hats support (broadcast only)
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 end);