Software / code / prosody
Annotate
plugins/mod_csi.lua @ 13511:453979e16f2d
mod_csi: Rename unused loop variables to '_' [luacheck]
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 17 Aug 2024 23:15:14 +0200 |
| parent | 13510:393e265aafba |
| child | 13512:0b742bbbb819 |
| rev | line source |
|---|---|
|
13510
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
1 local statsmanager = require "prosody.core.statsmanager"; |
|
12977
74b9e05af71e
plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
10429
diff
changeset
|
2 local st = require "prosody.util.stanza"; |
|
9073
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 local xmlns_csi = "urn:xmpp:csi:0"; |
|
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 local csi_feature = st.stanza("csi", { xmlns = xmlns_csi }); |
|
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 |
|
13025
b7d0c1d75a37
mod_csi: Add metrics, covering changes and totals
Kim Alvefur <zash@zash.se>
parents:
12977
diff
changeset
|
6 local change = module:metric("counter", "changes", "events", "CSI state changes", {"csi_state"}); |
|
13510
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
7 local count = module:metric("gauge", "state", "sessions", "", { "state" }); |
|
13025
b7d0c1d75a37
mod_csi: Add metrics, covering changes and totals
Kim Alvefur <zash@zash.se>
parents:
12977
diff
changeset
|
8 |
|
9073
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 module:hook("stream-features", function (event) |
|
13075
82980f6890cd
mod_csi: Always advertise feature
Kim Alvefur <zash@zash.se>
parents:
13070
diff
changeset
|
10 if event.origin.username then |
|
9073
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 event.features:add_child(csi_feature); |
|
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 end |
|
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 end); |
|
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 |
|
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 function refire_event(name) |
|
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 return function (event) |
|
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 if event.origin.username then |
|
9653
91856829f18b
mod_csi: Fix copypaste mistake [luacheck]
Kim Alvefur <zash@zash.se>
parents:
9651
diff
changeset
|
18 event.origin.state = event.stanza.name; |
|
13025
b7d0c1d75a37
mod_csi: Add metrics, covering changes and totals
Kim Alvefur <zash@zash.se>
parents:
12977
diff
changeset
|
19 change:with_labels(event.stanza.name):add(1); |
|
9073
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 module:fire_event(name, event); |
|
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 return true; |
|
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 end |
|
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 end; |
|
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 end |
|
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 |
|
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 module:hook("stanza/"..xmlns_csi..":active", refire_event("csi-client-active")); |
|
a5daf3f6d588
mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 module:hook("stanza/"..xmlns_csi..":inactive", refire_event("csi-client-inactive")); |
|
13510
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
28 |
|
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
29 module:hook_global("stats-update", function() |
|
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
30 local sessions = prosody.hosts[module.host].sessions; |
|
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
31 if not sessions then return end |
|
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
32 statsmanager.cork(); |
|
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
33 -- Can't do :clear() on host-scoped measures? |
|
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
34 count:with_labels("active"):set(0); |
|
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
35 count:with_labels("inactive"):set(0); |
|
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
36 count:with_labels("flushing"):set(0); |
|
13511
453979e16f2d
mod_csi: Rename unused loop variables to '_' [luacheck]
Kim Alvefur <zash@zash.se>
parents:
13510
diff
changeset
|
37 for _, user_session in pairs(sessions) do |
|
453979e16f2d
mod_csi: Rename unused loop variables to '_' [luacheck]
Kim Alvefur <zash@zash.se>
parents:
13510
diff
changeset
|
38 for _, session in pairs(user_session.sessions) do |
|
13510
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
39 if session.state == "inactive" or session.state == "active" or session.state == "flushing" then |
|
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
40 count:with_labels(session.state):add(1); |
|
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
41 end |
|
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
42 end |
|
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
43 end |
|
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
44 statsmanager.uncork(); |
|
393e265aafba
mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents:
13075
diff
changeset
|
45 end); |