Mercurial > prosody-modules
annotate mod_streamstats/mod_streamstats.lua @ 5213:dc0f502c12f1
mod_http_oauth2: Fix authorization code logic
I have no idea what it did before or if it even worked.
RFC 6749 section 4.1.2 says:
> A maximum authorization code lifetime of 10 minutes is RECOMMENDED.
So this should prevent use of codes older than 10 minutes and remove
them from the cache some time after they expire.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 06 Mar 2023 16:49:43 +0100 |
parents | a7f7a7e75737 |
children |
rev | line source |
---|---|
741
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
1 module:set_global(); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
2 local stats = module:shared"stats"; |
639
d4f3754c4286
mod_streamstats: Import count and keys from util.iterators
Matthew Wild <mwild1@gmail.com>
parents:
259
diff
changeset
|
3 local iter = require "util.iterators"; |
d4f3754c4286
mod_streamstats: Import count and keys from util.iterators
Matthew Wild <mwild1@gmail.com>
parents:
259
diff
changeset
|
4 local count, keys = iter.count, iter.keys; |
259
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 |
741
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
6 stats.stats = stats.stats or {}; |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
7 stats.conns = stats.conns or {}; |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
8 |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
9 setmetatable(stats, { |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
10 __index = { |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
11 |
259
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 broadcast = function (self, stat) |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 local value = self.stats[stat]; |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 for conn in pairs(self.conns) do |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 conn:write(stat..":"..value.."\n"); |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 end |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 end; |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 adjust = function (self, stat, delta) |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 if delta == 0 then return; end |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 self.stats[stat] = (self.stats[stat] or 0) + delta; |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 self:broadcast(stat); |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 end; |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 set = function (self, stat, value) |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 if value == self.stats[stat] then return; end |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 self.stats[stat] = value; |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 self:broadcast(stat); |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 end; |
741
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
30 |
259
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 add_conn = function (self, conn) |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 self.conns[conn] = true; |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 for stat, value in pairs(self.stats) do |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 conn:write(stat..":"..value.."\n"); |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 end |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 end; |
741
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
37 |
259
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
38 remove_conn = function (self, conn) |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 self.conns[conn] = nil; |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 end; |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
41 }; |
741
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
42 }); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
43 |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
44 local network = {}; |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
45 |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
46 function network.onconnect(conn) |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
47 stats:add_conn(conn); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
48 end |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
49 |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
50 function network.onincoming(conn, data) |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
51 end |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
52 |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
53 function network.ondisconnect(conn, reason) |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
54 stats:remove_conn(conn); |
259
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
55 end |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
56 |
741
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
57 module:add_timer(1, function () |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
58 stats:set("s2s-in", count(keys(prosody.incoming_s2s))); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
59 return math.random(10, 20); |
259
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
60 end); |
741
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
61 module:add_timer(3, function () |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
62 local s2sout_count = 0; |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
63 for _, host in pairs(prosody.hosts) do |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
64 s2sout_count = s2sout_count + count(keys(host.s2sout)); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
65 end |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
66 stats:set("s2s-out", s2sout_count); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
67 return math.random(10, 20); |
259
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
68 end); |
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
69 |
741
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
70 |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
71 function module.add_host(module) |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
72 module:hook("resource-bind", function () |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
73 stats:adjust("c2s", 1); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
74 end); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
75 module:hook("resource-unbind", function () |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
76 stats:adjust("c2s", -1); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
77 end); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
78 |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
79 local c2s_count = 0; |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
80 for username, user in pairs(hosts[module.host].sessions or {}) do |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
81 for resource, session in pairs(user.sessions or {}) do |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
82 c2s_count = c2s_count + 1; |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
83 end |
259
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
84 end |
741
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
85 stats:set("c2s", c2s_count); |
259
d137515e0701
mod_streamstats: New module that streams live stats from Prosody over a TCP stream
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
86 |
741
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
87 module:hook("s2sin-established", function (event) |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
88 stats:adjust("s2s-in", 1); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
89 end); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
90 module:hook("s2sin-destroyed", function (event) |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
91 stats:adjust("s2s-in", -1); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
92 end); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
93 module:hook("s2sout-established", function (event) |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
94 stats:adjust("s2s-out", 1); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
95 end); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
96 module:hook("s2sout-destroyed", function (event) |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
97 stats:adjust("s2s-out", -1); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
98 end); |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
99 end |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
100 |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
101 module:provides("net", { |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
102 default_port = 5444; |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
103 listener = network; |
a7f7a7e75737
mod_streamstats: Switch to portmanager and other 0.9 goodness
Kim Alvefur <zash@zash.se>
parents:
639
diff
changeset
|
104 }); |