annotate mod_muc_notifications/mod_muc_notifications.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 ef752c5115f7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3498
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
1 -- mod_muc_notifications
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
2 --
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
3 -- Copyright (C) 2019 Marcos de Vera Piquero <marcos.devera@quobis.com>
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
4 --
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
5 -- This file is MIT/X11 licensed.
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
6 --
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
7 -- A module to notify non-present members of messages in a group chat
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
8 --
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
9
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
10 local id = require"util.id"
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
11 local st = require"util.stanza"
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
12
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
13 local use_invite = module:get_option_boolean("muc_notification_invite", false)
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
14
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
15 -- Given a stanza, compute if it qualifies as important (notifiable)
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
16 -- return true for message stanzas with non-empty body
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
17 -- Should probably use something similar to muc-message-is-historic event
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
18 local function is_important(stanza)
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
19 local body = stanza:find("body#")
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
20 return body and #body
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
21 end
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
22
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
23 local function handle_muc_message(event)
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
24 -- event.room and event.stanza are available
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
25 local room = event.room
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
26 local stanza = event.stanza
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
27 for jid, aff in pairs(room._affiliations) do
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
28 if aff ~= "outcast" then
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
29 local is_occupant = false
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
30 for _, occupant in pairs(room._occupants) do
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
31 if occupant.bare_jid == jid then
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
32 is_occupant = true
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
33 break
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
34 end
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
35 end
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
36 if not is_occupant and is_important(stanza) then
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
37 -- send notification to jid
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
38 local attrs = {
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
39 to = jid,
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
40 id = id.short(),
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
41 from = room.jid,
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
42 }
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
43 local not_attrs = {
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
44 xmlns = "http://quobis.com/xmpp/muc#push",
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
45 jid = room.jid,
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
46 }
4089
ef752c5115f7 mod_muc_notifications: adapt to MUC get_name() API changes
marc0s <marcos@tenak.net>
parents: 3498
diff changeset
47 local reason = "You have messages in group chat "..(room:get_name() or room.jid)
3498
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
48 local notification = st.message(attrs)
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
49 :body(reason):up()
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
50 :tag("notification", not_attrs):up()
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
51 :tag("no-store", {xmlns = "urn:xmpp:hints"})
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
52 local invite = st.message(attrs):tag("x", {xmlns = "http://jabber.org/protocol/muc#user"})
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
53 :tag("invite", {from = stanza.attr.from})
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
54 :tag("reason"):text(reason):up():up():up()
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
55 :tag("notification", not_attrs):up()
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
56 :tag("no-store", {xmlns = "urn:xmpp:hints"})
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
57 module:log("debug", "notifying with %s", tostring(use_invite and invite or notification))
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
58 module:send(use_invite and invite or notification)
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
59 module:log("debug", "sent notification of MUC message %s", use_invite and invite or notification)
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
60 end
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
61 end
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
62 end
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
63 end
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
64
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
65 module:hook("muc-broadcast-message", handle_muc_message)
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
66
69219097aa85 muc_notifications: notify non-present members of new messages
marc0s <marcos.devera@quobis.com>
parents:
diff changeset
67 module:log("debug", "Module loaded")