annotate mod_muc_activity/mod_muc_activity.lua @ 6224:86989059de5b

:multibe Readme.md: correct prosody 0.13 to 13 diff --git a/mod_muc_anonymize_moderation_actions/README.md b/mod_muc_anonymize_moderation_actions/README.md --- a/mod_muc_anonymize_moderation_actions/README.md +++ b/mod_muc_anonymize_moderation_actions/README.md @@ -34,7 +34,7 @@ Component "muc.example.com" "muc" ------ ---------------------- trunk Works as of 25-05-12 - 0.13 Works + 13 Works 0.12 Works ------ ---------------------- diff --git a/mod_sasl2/README.md b/mod_sasl2/README.md --- a/mod_sasl2/README.md +++ b/mod_sasl2/README.md @@ -32,6 +32,6 @@ This module requires Prosody **trunk** a Prosody Version Status ----------------------- ---------------- trunk as of 2025-05-25 Works - 0.13 Works + 13 Works 0.12 Does not work ----------------------- ---------------- diff --git a/mod_sasl2_bind2/README.md b/mod_sasl2_bind2/README.md --- a/mod_sasl2_bind2/README.md +++ b/mod_sasl2_bind2/README.md @@ -17,5 +17,5 @@ This module depends on [mod_sasl2]. It e Prosody-Version Status --------------- ---------------------- trunk Works as of 2025-05-25 - 0.13 Works + 13 Works 0.12 Does not work diff --git a/mod_sasl2_fast/README.md b/mod_sasl2_fast/README.md --- a/mod_sasl2_fast/README.md +++ b/mod_sasl2_fast/README.md @@ -34,5 +34,5 @@ clients being logged out unexpectedly. Prosody-Version Status --------------- ---------------------- trunk Works as of 2025-05-25 - 0.13 Work + 13 Work 0.12 Does not work diff --git a/mod_sasl2_sm/README.md b/mod_sasl2_sm/README.md --- a/mod_sasl2_sm/README.md +++ b/mod_sasl2_sm/README.md @@ -18,5 +18,5 @@ configuration options. Prosody-Version Status --------------- ---------------------- trunk Works as of 2025-05-25 - 0.13 Work + 13 Work 0.12 Does not work diff --git a/mod_sasl_ssdp/README.md b/mod_sasl_ssdp/README.md --- a/mod_sasl_ssdp/README.md +++ b/mod_sasl_ssdp/README.md @@ -21,5 +21,5 @@ There are no configuration options for t Prosody-Version Status --------------- ---------------------- trunk Works as of 2025-05-25 - 0.13 Works + 13 Works 0.12 Does not work diff --git a/mod_vcard_muc/README.md b/mod_vcard_muc/README.md --- a/mod_vcard_muc/README.md +++ b/mod_vcard_muc/README.md @@ -23,7 +23,7 @@ modules_enabled = { # Compatibility ------------------------- ---------------------------------------- - 0.13 Room avatar feature included in Prosody + 13 Room avatar feature included in Prosody 0.12 Works ------------------------- ---------------------------------------- diff --git a/mod_warn_legacy_tls/README.md b/mod_warn_legacy_tls/README.md --- a/mod_warn_legacy_tls/README.md +++ b/mod_warn_legacy_tls/README.md @@ -44,5 +44,5 @@ legacy_tls_versions = { "TLSv1", "TLSv1. Prosody-Version Status --------------- --------------------- trunk Works as of 25-05-25 -0.13 Works +13 Works 0.12 Works
author Menel <menel@snikket.de>
date Wed, 14 May 2025 23:32:04 +0200
parents a0429c322454
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6105
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
1 local os_time = os.time;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
2 local math_floor = math.floor;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
3 local store = module:open_store("muc_activity", "keyval");
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
4
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
5 local accumulator = {};
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
6
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
7 local field_var = "{urn:xmpp:muc-activity}message-activity";
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
8
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
9 module:hook("muc-room-destroyed", function (event)
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
10 local jid = event.room.jid;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
11 module:log("debug", "deleting activity data for destroyed muc %s", jid);
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
12 store:set_keys(jid, {});
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
13 accumulator[jid] = nil;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
14 end)
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
15
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
16 module:hook("muc-occupant-groupchat", function (event)
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
17 local jid = event.room.jid;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
18 if not event.room:get_persistent() then
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
19 -- we do not count stanzas in non-persistent rooms
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
20 if accumulator[jid] then
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
21 -- if we have state for the room, drop it.
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
22 store:set_keys(jid, {});
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
23 accumulator[jid] = nil;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
24 end
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
25
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
26 return
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
27 end
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
28
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
29 if event.stanza:get_child("body") == nil then
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
30 -- we do not count stanzas without body.
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
31 return
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
32 end
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
33
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
34 module:log("debug", "counting stanza for MUC activity in %s", jid);
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
35 accumulator[jid] = (accumulator[jid] or 0) + 1;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
36 end)
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
37
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
38 local function shift(data)
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
39 for i = 1, 23 do
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
40 data[i] = data[i+1]
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
41 end
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
42 end
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
43
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
44 local function accumulate(data)
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
45 if data == nil then
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
46 return 0;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
47 end
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
48 local accum = 0;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
49 for i = 1, 24 do
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
50 local v = data[i];
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
51 if v ~= nil then
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
52 accum = accum + v
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
53 end
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
54 end
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
55 return accum;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
56 end
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
57
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
58 module:hourly("muc-activity-shift", function ()
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
59 module:log("info", "shifting MUC activity store forward by one hour");
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
60 for jid in store:users() do
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
61 local data = store:get(jid);
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
62 local new = accumulator[jid] or 0;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
63 shift(data);
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
64 data[24] = new;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
65 accumulator[jid] = nil;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
66 store:set(jid, data);
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
67 end
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
68
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
69 -- All remaining entries in the accumulator are non-existent in the store,
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
70 -- otherwise they would have been removed earlier.
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
71 for jid, count in pairs(accumulator) do
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
72 store:set(jid, { [24] = count });
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
73 end
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
74 accumulator = {};
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
75 end)
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
76
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
77 module:hook("muc-disco#info", function(event)
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
78 local room = event.room;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
79 local jid = room.jid;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
80 if not room:get_persistent() or not room:get_public() or room:get_members_only() or room:get_password() ~= nil then
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
81 module:log("debug", "%s is not persistent or not public, not injecting message activity", jid);
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
82 return;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
83 end
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
84 local count = accumulate(store:get(jid)) / 24.0;
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
85 table.insert(event.form, { name = field_var, label = "Message activity" });
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
86 event.formdata[field_var] = tostring(count);
a0429c322454 mod_muc_activity: create module
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
87 end);