Mercurial > prosody-modules
annotate mod_statistics_mem/mod_statistics_mem.lua @ 5418:f2c7bb3af600
mod_http_oauth2: Add role selector to consent page
List includes all roles available to the user, if more than one.
Defaults to either the first role in the scope string or the users
primary role.
Earlier draft listed all roles, but having options that can't be
selected is bad UX and the entire list of all roles on the server could
be long, and perhaps even sensitive.
Allows e.g. picking a role with fewer permissions than what might
otherwise have been selected.
UX wise, doing this with more checkboxes or possibly radio buttons would
have been confusion and/or looked messier.
Fixes the previous situation where unselecting a role would default to
the primary role, which could be more permissions than requested.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 05 May 2023 01:23:13 +0200 |
| parents | 403d5cd924eb |
| children |
| rev | line source |
|---|---|
|
1379
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 -- Probably Linux-specific memory statistics |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 module:set_global(); |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 local human; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 do |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 local tostring = tostring; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 local s_format = string.format; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 local m_floor = math.floor; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 local m_max = math.max; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 local prefixes = "kMGTPEZY"; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 local multiplier = 1024; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 function human(num) |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 num = tonumber(num) or 0; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 local m = 0; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 while num >= multiplier and m < #prefixes do |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 num = num / multiplier; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 m = m + 1; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 end |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 return s_format("%0."..m_max(0,3-#tostring(m_floor(num))).."f%sB", |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 num, m > 0 and (prefixes:sub(m,m) .. "i") or ""); |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 end |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 end |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 local pagesize = 4096; -- according to getpagesize() |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 module:provides("statistics", { |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 statistics = { |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 memory_total = { -- virtual memory |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 get = function () |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 local statm, err = io.open"/proc/self/statm"; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 if statm then |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 local total = statm:read"*n"; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 statm:close(); |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 return total * pagesize; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 else |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 module:log("debug", err); |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
40 end |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
41 end; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
42 tostring = human; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
43 }; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
44 memory_rss = { -- actual in-memory data size |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
45 get = function () |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
46 local statm, err = io.open"/proc/self/statm"; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
47 if statm then |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
48 statm:read"*n"; -- Total size, ignore |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
49 local rss = statm:read"*n"; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
50 statm:close(); |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
51 return rss * pagesize; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
52 else |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
53 module:log("debug", err); |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
54 end |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
55 end; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
56 tostring = human; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
57 }; |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
58 } |
|
403d5cd924eb
mod_statistics_mem: Module that collects memory usage stats from /proc
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
59 }); |
