annotate mod_statistics_statsman/mod_statistics_statsman.lua @ 6261:1c62edeb9147

mod_pastebin: Update Readme diff --git a/mod_pastebin/README.md b/mod_pastebin/README.md --- a/mod_pastebin/README.md +++ b/mod_pastebin/README.md @@ -37,12 +37,14 @@ For example: Pastes will be available by default at `http://<your-prosody>:5280/pastebin/` by default. -In Prosody 0.9 and later this can be changed with [HTTP -settings](https://prosody.im/doc/http). +Ports and path can be changed with [HTTP +settings](https://prosody.im/doc/http), for example like: -In 0.8 and older this can be changed with `pastebin_ports` (see below), -or you can forward another external URL from your web server to Prosody, -use `pastebin_url` to set that URL. +``` {.lua} + http_paths = { + pastebin = "/$host-paste"; + } +``` # Discovery @@ -82,27 +84,16 @@ The line and character tresholds are adv pastebin_line_threshold The maximum number of lines a message may have before it is sent to the pastebin. (default 4 lines) pastebin_trigger A string of characters (e.g. "!paste ") which if detected at the start of a message, always sends the message to the pastebin, regardless of length. (default: not set) pastebin_expire_after Number of hours after which to expire (remove) a paste, defaults to 24. Set to 0 to store pastes permanently on disk. - pastebin_ports List of ports to run the HTTP server on, same format as mod_httpserver's http_ports[^1] - pastebin_url Base URL to display for pastebin links, must end with / and redirect to Prosody's built-in HTTP server[^2] # Compatibility - ------ ------- - trunk Works + ------ --------------------- + trunk Works as of 25-06-13 + 13 Works 0.12 Works - 0.11 Works - 0.10 Works - 0.9 Works - 0.8 Works - ------ ------- + ------ --------------------- # Todo - Maximum paste length - Web interface to submit pastes? - -[^1]: As of Prosody 0.9, `pastebin_ports` is replaced by `http_ports`, - see [Prosody HTTP server documentation](https://prosody.im/doc/http) - -[^2]: See also - [http_external_url](https://prosody.im/doc/http#external_url)
author Menel <menel@snikket.de>
date Fri, 13 Jun 2025 11:39:58 +0200
parents bac3dae031ee
children 47d88f6e8400
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3158
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 module:set_global();
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 local statsman = require "core.statsmanager";
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 local time_now = require "util.time".now;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 local filters = require "util.filters";
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 local serialize = require "util.serialization".serialize;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7
4595
bac3dae031ee Add note of incompatibility with trunk since 5f15ab7c6ae5
Kim Alvefur <zash@zash.se>
parents: 3610
diff changeset
8 assert(statsman.get_stats, "not compatible with trunk based on openmetrics");
bac3dae031ee Add note of incompatibility with trunk since 5f15ab7c6ae5
Kim Alvefur <zash@zash.se>
parents: 3610
diff changeset
9
3158
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 local statistics_interval = module:context("*"):get_option_number("statistics_interval", 60);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 if module:context("*"):get_option("statistics", "internal") ~= "internal" then
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 module:log("error", "Not using internal statistics, can't do anyting");
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 return;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 local sessions = {};
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 local name_map = {
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 ["start_time"] = "up_since";
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 ["cpu.percent:amount"] = "cpu";
3610
78885053cd80 mod_statistics_statsman: Fix syntax error
Kim Alvefur <zash@zash.se>
parents: 3609
diff changeset
21 ["cpu.clock:amount"] = "cpu_total";
3607
3a06b0b6ba67 mod_statistics_statsman: Update for change stats type change in mod_measure_memory
Kim Alvefur <zash@zash.se>
parents: 3170
diff changeset
22 ["memory.allocated_mmap:amount"] = "memory_allocated_mmap";
3a06b0b6ba67 mod_statistics_statsman: Update for change stats type change in mod_measure_memory
Kim Alvefur <zash@zash.se>
parents: 3170
diff changeset
23 ["memory.allocated:amount"] = "memory_allocated";
3a06b0b6ba67 mod_statistics_statsman: Update for change stats type change in mod_measure_memory
Kim Alvefur <zash@zash.se>
parents: 3170
diff changeset
24 ["memory.lua:amount"] = "memory_lua";
3a06b0b6ba67 mod_statistics_statsman: Update for change stats type change in mod_measure_memory
Kim Alvefur <zash@zash.se>
parents: 3170
diff changeset
25 ["memory.returnable:amount"] = "memory_returnable";
3a06b0b6ba67 mod_statistics_statsman: Update for change stats type change in mod_measure_memory
Kim Alvefur <zash@zash.se>
parents: 3170
diff changeset
26 ["memory.rss:amount"] = "memory_rss";
3a06b0b6ba67 mod_statistics_statsman: Update for change stats type change in mod_measure_memory
Kim Alvefur <zash@zash.se>
parents: 3170
diff changeset
27 ["memory.total:amount"] = "memory_total";
3a06b0b6ba67 mod_statistics_statsman: Update for change stats type change in mod_measure_memory
Kim Alvefur <zash@zash.se>
parents: 3170
diff changeset
28 ["memory.unused:amount"] = "memory_unused";
3a06b0b6ba67 mod_statistics_statsman: Update for change stats type change in mod_measure_memory
Kim Alvefur <zash@zash.se>
parents: 3170
diff changeset
29 ["memory.used:amount"] = "memory_used";
3158
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 ["/*/mod_c2s/connections:amount"] = "total_c2s";
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 ["/*/mod_s2s/connections:amount"] = "total_s2s";
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 };
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 local function push_stat(conn, name, value)
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 local value_str = serialize(value);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
36 name = name_map[name] or name;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 return conn:write((("STAT %q (%s)\n"):format(name, value_str):gsub("\\\n", "\\n")));
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
39
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
40 local function push_stat_to_all(name, value)
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
41 for conn in pairs(sessions) do
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
42 push_stat(conn, name, value);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
43 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
44 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
45
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46 local session_stats_tpl = ([[{
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
47 message_in = %d, message_out = %d;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
48 presence_in = %d, presence_out = %d;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
49 iq_in = %d, iq_out = %d;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
50 bytes_in = %d, bytes_out = %d;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
51 }]]):gsub("%s", "");
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
52
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
53
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
54 local jid_fields = {
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
55 c2s = "full_jid";
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
56 s2sin = "from_host";
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
57 s2sout = "to_host";
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
58 component = "host";
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
59 };
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
60
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
61 local function push_session_to_all(session, stats)
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
62 local id = tostring(session):match("[a-f0-9]+$"); -- FIXME: Better id? :/
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
63 local stanzas_in, stanzas_out = stats.stanzas_in, stats.stanzas_out;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
64 local s = (session_stats_tpl):format(
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
65 stanzas_in.message, stanzas_out.message,
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
66 stanzas_in.presence, stanzas_out.presence,
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
67 stanzas_in.iq, stanzas_out.iq,
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
68 stats.bytes_in, stats.bytes_out);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
69 local jid = session[jid_fields[session.type]] or "";
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
70 for conn in pairs(sessions) do
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
71 conn:write(("SESS %q %q %s\n"):format(id, jid, s));
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
72 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
73 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
74
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
75 local active_sessions = {};
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
76
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
77 -- Network listener
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
78 local listener = {};
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
79
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
80 function listener.onconnect(conn)
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
81 sessions[conn] = true;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
82 push_stat(conn, "version", prosody.version);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
83 push_stat(conn, "start_time", prosody.start_time);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
84 push_stat(conn, "statistics_interval", statistics_interval);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
85 push_stat(conn, "time", time_now());
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
86 local stats = statsman.get_stats();
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
87 for name, value in pairs(stats) do
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
88 push_stat(conn, name, value);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
89 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
90 conn:write("\n"); -- Signal end of first batch (for non-streaming clients)
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
91 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
92
3169
5d58bdbfe024 mod_statistics_statsman: Ignore that we discard incoming data [luacheck]
Kim Alvefur <zash@zash.se>
parents: 3158
diff changeset
93 function listener.onincoming(conn, data) -- luacheck: ignore 212
5d58bdbfe024 mod_statistics_statsman: Ignore that we discard incoming data [luacheck]
Kim Alvefur <zash@zash.se>
parents: 3158
diff changeset
94 -- Discarded
3158
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
95 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
96
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
97 function listener.ondisconnect(conn)
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
98 sessions[conn] = nil;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
99 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
100
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
101 function listener.onreadtimeout()
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
102 return true;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
103 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
104
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
105 local add_statistics_filter; -- forward decl
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
106 if prosody and prosody.arg then -- ensures we aren't in prosodyctl
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
107 setmetatable(active_sessions, {
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
108 __index = function ( t, k )
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
109 local v = {
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
110 bytes_in = 0, bytes_out = 0;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
111 stanzas_in = {
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
112 message = 0, presence = 0, iq = 0;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
113 };
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
114 stanzas_out = {
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
115 message = 0, presence = 0, iq = 0;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
116 };
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
117 }
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
118 rawset(t, k, v);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
119 return v;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
120 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
121 });
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
122 local function handle_stanza_in(stanza, session)
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
123 local s = active_sessions[session].stanzas_in;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
124 local n = s[stanza.name];
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
125 if n then
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
126 s[stanza.name] = n + 1;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
127 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
128 return stanza;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
129 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
130 local function handle_stanza_out(stanza, session)
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
131 local s = active_sessions[session].stanzas_out;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
132 local n = s[stanza.name];
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
133 if n then
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
134 s[stanza.name] = n + 1;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
135 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
136 return stanza;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
137 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
138 local function handle_bytes_in(bytes, session)
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
139 local s = active_sessions[session];
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
140 s.bytes_in = s.bytes_in + #bytes;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
141 return bytes;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
142 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
143 local function handle_bytes_out(bytes, session)
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
144 local s = active_sessions[session];
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
145 s.bytes_out = s.bytes_out + #bytes;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
146 return bytes;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
147 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
148 function add_statistics_filter(session)
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
149 filters.add_filter(session, "stanzas/in", handle_stanza_in);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
150 filters.add_filter(session, "stanzas/out", handle_stanza_out);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
151 filters.add_filter(session, "bytes/in", handle_bytes_in);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
152 filters.add_filter(session, "bytes/out", handle_bytes_out);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
153 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
154 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
155
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
156
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
157 function module.load()
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
158 if not(prosody and prosody.arg) then
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
159 return;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
160 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
161 filters.add_filter_hook(add_statistics_filter);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
162
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
163 module:add_timer(1, function ()
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
164 for session, session_stats in pairs(active_sessions) do
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
165 active_sessions[session] = nil;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
166 push_session_to_all(session, session_stats);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
167 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
168 return 1;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
169 end);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
170
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
171 module:hook("stats-updated", function (event)
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
172 local stats = event.changed_stats;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
173 push_stat_to_all("time", time_now());
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
174 for name, value in pairs(stats) do
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
175 push_stat_to_all(name, value);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
176 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
177 end);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
178
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
179 module:hook("server-stopping", function ()
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
180 push_stat_to_all("stop_time", time_now());
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
181 end);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
182 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
183 function module.unload()
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
184 filters.remove_filter_hook(add_statistics_filter);
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
185 end
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
186
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
187 if prosody and prosody.arg then
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
188 module:provides("net", {
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
189 default_port = 5782;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
190 listener = listener;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
191 private = true;
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
192 });
2558ece20e58 mod_statistics_statsman: Streaming access to statsmanager
Kim Alvefur <zash@zash.se>
parents:
diff changeset
193 end