Mercurial > prosody-modules
annotate mod_muc_batched_probe/mod_muc_batched_probe.lua @ 5406:b86d80e21c60
mod_http_oauth2: Validate consistency of response and grant types
Ensure that these correlated fields make sense per RFC 7591 ยง 2.1, even
though we currently only check the response type during authorization.
This could probably all be deleted if (when!) we remove the implicit
grant, since then these things don't make any sense anymore.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 02 May 2023 16:34:31 +0200 |
parents | e06258fc6cf1 |
children |
rev | line source |
---|---|
4000 | 1 -- This module allows you to probe the MUC presences for multiple occupants. |
2 -- Copyright (C) 2020 JC Brand | |
3 | |
4 local st = require "util.stanza"; | |
5 local mod_muc = module:depends"muc"; | |
6 local get_room_from_jid = rawget(mod_muc, "get_room_from_jid") or | |
7 function (jid) | |
8 local rooms = rawget(mod_muc, "rooms"); | |
9 return rooms[jid]; | |
10 end | |
11 | |
12 module:log("debug", "Module loaded"); | |
13 | |
14 local function respondToBatchedProbe(event) | |
15 local stanza = event.stanza; | |
16 if stanza.attr.type ~= "get" then | |
17 return; | |
18 end | |
19 local query = stanza:get_child("query", "http://jabber.org/protocol/muc#user"); | |
20 if not query then | |
21 return; | |
22 end; | |
23 | |
4188
4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
JC Brand <jc@opkode.com>
parents:
4007
diff
changeset
|
24 local origin = event.origin; |
4000 | 25 local room = get_room_from_jid(stanza.attr.to); |
4188
4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
JC Brand <jc@opkode.com>
parents:
4007
diff
changeset
|
26 local probing_occupant = room:get_occupant_by_real_jid(stanza.attr.from); |
4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
JC Brand <jc@opkode.com>
parents:
4007
diff
changeset
|
27 if probing_occupant == nil then |
4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
JC Brand <jc@opkode.com>
parents:
4007
diff
changeset
|
28 origin.send(st.error_reply(stanza, "cancel", "not-acceptable", "You are not currently connected to this chat", room.jid)); |
4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
JC Brand <jc@opkode.com>
parents:
4007
diff
changeset
|
29 return true; |
4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
JC Brand <jc@opkode.com>
parents:
4007
diff
changeset
|
30 end |
4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
JC Brand <jc@opkode.com>
parents:
4007
diff
changeset
|
31 |
4007
845d13ab0dc0
mod_muc_batched_probe: Call instance method
JC Brand <jc@opkode.com>
parents:
4000
diff
changeset
|
32 for item in query:children() do |
4000 | 33 local probed_jid = item.attr.jid; |
4188
4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
JC Brand <jc@opkode.com>
parents:
4007
diff
changeset
|
34 local probed_occupant = room:get_occupant_by_nick(probed_jid); |
4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
JC Brand <jc@opkode.com>
parents:
4007
diff
changeset
|
35 if probed_occupant == nil then |
4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
JC Brand <jc@opkode.com>
parents:
4007
diff
changeset
|
36 local pr = room:build_unavailable_presence(probed_jid, stanza.attr.from); |
4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
JC Brand <jc@opkode.com>
parents:
4007
diff
changeset
|
37 if pr then |
4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
JC Brand <jc@opkode.com>
parents:
4007
diff
changeset
|
38 room:route_stanza(pr); |
4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
JC Brand <jc@opkode.com>
parents:
4007
diff
changeset
|
39 end |
4190
e06258fc6cf1
muc_batched_probe: don't return too quickly
JC Brand <jc@opkode.com>
parents:
4188
diff
changeset
|
40 else |
e06258fc6cf1
muc_batched_probe: don't return too quickly
JC Brand <jc@opkode.com>
parents:
4188
diff
changeset
|
41 local x = st.stanza("x", {xmlns = "http://jabber.org/protocol/muc#user"}); |
e06258fc6cf1
muc_batched_probe: don't return too quickly
JC Brand <jc@opkode.com>
parents:
4188
diff
changeset
|
42 room:publicise_occupant_status(probed_occupant, x, nil, nil, nil, nil, false, probing_occupant); |
4188
4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
JC Brand <jc@opkode.com>
parents:
4007
diff
changeset
|
43 end |
4000 | 44 end |
4188
4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
JC Brand <jc@opkode.com>
parents:
4007
diff
changeset
|
45 origin.send(st.reply(stanza)); |
4000 | 46 return true; |
47 end | |
48 | |
49 | |
50 module:hook("iq/bare", respondToBatchedProbe, 1); |