Software /
code /
prosody
Annotate
plugins/muc/util.lib.lua @ 12179:5e68635cdc2c
mod_http_file_share: Always measure total disk usage for statistics!
Metrics available or not depending on configuration is weird, even tho
it might be expensive to calculate and it's only really needed when
there is a global quota.
Default quota is set to infinity, which is essentially what it was.
Reports NaN if there is an error, which should count as over the
infinite default quota.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 11 Jan 2022 04:15:29 +0100 |
parent | 10713:38159b9adf9f |
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; |