Mercurial > prosody-modules
annotate mod_muc_batched_probe/mod_muc_batched_probe.lua @ 4877:adc6241e5d16
mod_measure_process: Report the enforced limit
The soft limit is what the kernel actually enforces, while the hard
limit is is how far you can change the soft limit without privileges.
Unless the process dynamically adjusts the soft limit, knowing the hard
limit is not as useful as knowing the soft limit.
Reporting the soft limit and the number of in-use FDs allows placing
alerts on expressions like 'process_open_fds / process_max_fds >= 0.95'
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 18 Jan 2022 18:55:20 +0100 |
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); |