Mercurial > prosody-hg
annotate plugins/muc/util.lib.lua @ 14024:f65302ea37b0 13.0 13.0.3
mod_limits: Allow configuration of general 's2s' limit, and have s2sout inherit from s2sin
Most people don't currently have a limit set for s2sout, as usually such
sessions don't have significant incoming traffic. However, having limits in
place is still sensible, especially with the rising use of bidi.
The goal here is to switch people to a general 's2s' limit, which s2sin and
s2sout both inherit from. Due to the widespread existence of 's2sin' in
existing configurations, s2sout will inherit from that unless explicitly set.
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Mon, 05 Jan 2026 11:35:32 +0000 |
| parents | 38159b9adf9f |
| children |
| rev | line source |
|---|---|
|
6218
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
1 -- Prosody IM |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
2 -- Copyright (C) 2008-2010 Matthew Wild |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
3 -- Copyright (C) 2008-2010 Waqas Hussain |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
4 -- Copyright (C) 2014 Daurnimator |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
5 -- |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
6 -- This project is MIT/X11 licensed. Please see the |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
7 -- COPYING file in the source package for more information. |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
8 -- |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
9 |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
10 local _M = {}; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
11 |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
12 _M.valid_affiliations = { |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
13 outcast = -1; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
14 none = 0; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
15 member = 1; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
16 admin = 2; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
17 owner = 3; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
18 }; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
19 |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
20 _M.valid_roles = { |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
21 none = 0; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
22 visitor = 1; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
23 participant = 2; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
24 moderator = 3; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
25 }; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
26 |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
27 local kickable_error_conditions = { |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
28 ["gone"] = true; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
29 ["internal-server-error"] = true; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
30 ["item-not-found"] = true; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
31 ["jid-malformed"] = true; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
32 ["recipient-unavailable"] = true; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
33 ["redirect"] = true; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
34 ["remote-server-not-found"] = true; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
35 ["remote-server-timeout"] = true; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
36 ["service-unavailable"] = true; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
37 ["malformed error"] = true; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
38 }; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
39 function _M.is_kickable_error(stanza) |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
40 local cond = select(2, stanza:get_error()) or "malformed error"; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
41 return kickable_error_conditions[cond]; |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
42 end |
|
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
43 |
|
10713
38159b9adf9f
MUC: Add API for adding 'filtered namespaces' to be stripped from inbound presence
Matthew Wild <mwild1@gmail.com>
parents:
9603
diff
changeset
|
44 local filtered_namespaces = module:shared("filtered-namespaces"); |
|
38159b9adf9f
MUC: Add API for adding 'filtered namespaces' to be stripped from inbound presence
Matthew Wild <mwild1@gmail.com>
parents:
9603
diff
changeset
|
45 filtered_namespaces["http://jabber.org/protocol/muc"] = true; |
|
38159b9adf9f
MUC: Add API for adding 'filtered namespaces' to be stripped from inbound presence
Matthew Wild <mwild1@gmail.com>
parents:
9603
diff
changeset
|
46 filtered_namespaces["http://jabber.org/protocol/muc#user"] = true; |
|
38159b9adf9f
MUC: Add API for adding 'filtered namespaces' to be stripped from inbound presence
Matthew Wild <mwild1@gmail.com>
parents:
9603
diff
changeset
|
47 |
|
38159b9adf9f
MUC: Add API for adding 'filtered namespaces' to be stripped from inbound presence
Matthew Wild <mwild1@gmail.com>
parents:
9603
diff
changeset
|
48 local function muc_ns_filter(tag) |
|
38159b9adf9f
MUC: Add API for adding 'filtered namespaces' to be stripped from inbound presence
Matthew Wild <mwild1@gmail.com>
parents:
9603
diff
changeset
|
49 if filtered_namespaces[tag.attr.xmlns] then |
|
6271
006b0e0f0de2
plugins/muc: Move 'x' filtering from occupant to util
daurnimator <quae@daurnimator.com>
parents:
6218
diff
changeset
|
50 return nil; |
|
006b0e0f0de2
plugins/muc: Move 'x' filtering from occupant to util
daurnimator <quae@daurnimator.com>
parents:
6218
diff
changeset
|
51 end |
|
006b0e0f0de2
plugins/muc: Move 'x' filtering from occupant to util
daurnimator <quae@daurnimator.com>
parents:
6218
diff
changeset
|
52 return tag; |
|
006b0e0f0de2
plugins/muc: Move 'x' filtering from occupant to util
daurnimator <quae@daurnimator.com>
parents:
6218
diff
changeset
|
53 end |
|
006b0e0f0de2
plugins/muc: Move 'x' filtering from occupant to util
daurnimator <quae@daurnimator.com>
parents:
6218
diff
changeset
|
54 function _M.filter_muc_x(stanza) |
|
10713
38159b9adf9f
MUC: Add API for adding 'filtered namespaces' to be stripped from inbound presence
Matthew Wild <mwild1@gmail.com>
parents:
9603
diff
changeset
|
55 return stanza:maptags(muc_ns_filter); |
|
38159b9adf9f
MUC: Add API for adding 'filtered namespaces' to be stripped from inbound presence
Matthew Wild <mwild1@gmail.com>
parents:
9603
diff
changeset
|
56 end |
|
38159b9adf9f
MUC: Add API for adding 'filtered namespaces' to be stripped from inbound presence
Matthew Wild <mwild1@gmail.com>
parents:
9603
diff
changeset
|
57 |
|
38159b9adf9f
MUC: Add API for adding 'filtered namespaces' to be stripped from inbound presence
Matthew Wild <mwild1@gmail.com>
parents:
9603
diff
changeset
|
58 function _M.add_filtered_namespace(xmlns) |
|
38159b9adf9f
MUC: Add API for adding 'filtered namespaces' to be stripped from inbound presence
Matthew Wild <mwild1@gmail.com>
parents:
9603
diff
changeset
|
59 filtered_namespaces[xmlns] = true; |
|
6271
006b0e0f0de2
plugins/muc: Move 'x' filtering from occupant to util
daurnimator <quae@daurnimator.com>
parents:
6218
diff
changeset
|
60 end |
|
006b0e0f0de2
plugins/muc: Move 'x' filtering from occupant to util
daurnimator <quae@daurnimator.com>
parents:
6218
diff
changeset
|
61 |
|
9599
5a2135964ed3
MUC: Announce affiliation changes for JIDs that are not in the room
Matthew Wild <mwild1@gmail.com>
parents:
6271
diff
changeset
|
62 function _M.only_with_min_role(role) |
|
5a2135964ed3
MUC: Announce affiliation changes for JIDs that are not in the room
Matthew Wild <mwild1@gmail.com>
parents:
6271
diff
changeset
|
63 local min_role_value = _M.valid_roles[role]; |
|
9603
4897bd63f624
MUC: Add luacheck annotation for unused parameter in filter function
Matthew Wild <mwild1@gmail.com>
parents:
9599
diff
changeset
|
64 return function (nick, occupant) --luacheck: ignore 212/nick |
|
9599
5a2135964ed3
MUC: Announce affiliation changes for JIDs that are not in the room
Matthew Wild <mwild1@gmail.com>
parents:
6271
diff
changeset
|
65 if _M.valid_roles[occupant.role or "none"] >= min_role_value then |
|
5a2135964ed3
MUC: Announce affiliation changes for JIDs that are not in the room
Matthew Wild <mwild1@gmail.com>
parents:
6271
diff
changeset
|
66 return true; |
|
5a2135964ed3
MUC: Announce affiliation changes for JIDs that are not in the room
Matthew Wild <mwild1@gmail.com>
parents:
6271
diff
changeset
|
67 end |
|
5a2135964ed3
MUC: Announce affiliation changes for JIDs that are not in the room
Matthew Wild <mwild1@gmail.com>
parents:
6271
diff
changeset
|
68 end; |
|
5a2135964ed3
MUC: Announce affiliation changes for JIDs that are not in the room
Matthew Wild <mwild1@gmail.com>
parents:
6271
diff
changeset
|
69 end |
|
5a2135964ed3
MUC: Announce affiliation changes for JIDs that are not in the room
Matthew Wild <mwild1@gmail.com>
parents:
6271
diff
changeset
|
70 |
|
6218
bf11910bad5a
plugins/muc: Move valid_roles, valid_affiliations and is_kickable_error to new muc/util module
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
71 return _M; |
