annotate mod_statistics_mem/mod_statistics_mem.lua @ 5461:06640647d193

mod_http_oauth2: Fix use of arbitrary ports in loopback redirect URIs Per draft-ietf-oauth-v2-1-08#section-8.4.2 > The authorization server MUST allow any port to be specified at the > time of the request for loopback IP redirect URIs, to accommodate > clients that obtain an available ephemeral port from the operating > system at the time of the request. Uncertain if it should normalize the host part, but it also seems harmless to treat IPv6 and IPv4 the same here. One thing is that "localhost" is NOT RECOMMENDED because it can sometimes be pointed to non-loopback interfaces via DNS or hosts file.
author Kim Alvefur <zash@zash.se>
date Wed, 17 May 2023 13:51:30 +0200
parents 403d5cd924eb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 });