Comparison

plugins/mod_s2s_bidi.lua @ 13507:4fb6a3eb9c29

mod_s2s_bidi: Collect some metrics
author Kim Alvefur <zash@zash.se>
date Sun, 11 Aug 2024 17:25:47 +0200
parent 12977:74b9e05af71e
child 13509:f14066ee3239
comparison
equal deleted inserted replaced
13506:1b81a7b7c9b8 13507:4fb6a3eb9c29
10 local xmlns_bidi_feature = "urn:xmpp:features:bidi" 10 local xmlns_bidi_feature = "urn:xmpp:features:bidi"
11 local xmlns_bidi = "urn:xmpp:bidi"; 11 local xmlns_bidi = "urn:xmpp:bidi";
12 12
13 local require_encryption = module:get_option_boolean("s2s_require_encryption", true); 13 local require_encryption = module:get_option_boolean("s2s_require_encryption", true);
14 14
15 local offers_sent = module:metric("counter", "offers_sent", "", "Bidirectional connection offers sent");
16 local offers_recv = module:metric("counter", "offers_recv", "", "Bidirectional connection offers received");
17 local offers_taken = module:metric("counter", "offers_taken", "", "Bidirectional connection offers taken");
18
15 module:hook("s2s-stream-features", function(event) 19 module:hook("s2s-stream-features", function(event)
16 local origin, features = event.origin, event.features; 20 local origin, features = event.origin, event.features;
17 if origin.type == "s2sin_unauthed" and (not require_encryption or origin.secure) then 21 if origin.type == "s2sin_unauthed" and (not require_encryption or origin.secure) then
18 features:tag("bidi", { xmlns = xmlns_bidi_feature }):up(); 22 features:tag("bidi", { xmlns = xmlns_bidi_feature }):up();
23 offers_sent:with_labels():add(1);
19 end 24 end
20 end); 25 end);
21 26
22 module:hook_tag("http://etherx.jabber.org/streams", "features", function (session, stanza) 27 module:hook_tag("http://etherx.jabber.org/streams", "features", function (session, stanza)
23 if session.type == "s2sout_unauthed" and (not require_encryption or session.secure) then 28 if session.type == "s2sout_unauthed" and (not require_encryption or session.secure) then
26 session.incoming = true; 31 session.incoming = true;
27 session.log("debug", "Requesting bidirectional stream"); 32 session.log("debug", "Requesting bidirectional stream");
28 local request_bidi = st.stanza("bidi", { xmlns = xmlns_bidi }); 33 local request_bidi = st.stanza("bidi", { xmlns = xmlns_bidi });
29 module:fire_event("s2sout-stream-features", { origin = session, features = request_bidi }); 34 module:fire_event("s2sout-stream-features", { origin = session, features = request_bidi });
30 session.sends2s(request_bidi); 35 session.sends2s(request_bidi);
36 offers_taken:with_labels():add(1);
31 end 37 end
32 end 38 end
33 end, 200); 39 end, 200);
34 40
35 module:hook_tag("urn:xmpp:bidi", "bidi", function(session) 41 module:hook_tag("urn:xmpp:bidi", "bidi", function(session)
36 if session.type == "s2sin_unauthed" and (not require_encryption or session.secure) then 42 if session.type == "s2sin_unauthed" and (not require_encryption or session.secure) then
37 session.log("debug", "Requested bidirectional stream"); 43 session.log("debug", "Requested bidirectional stream");
38 session.outgoing = true; 44 session.outgoing = true;
45 offers_recv:with_labels():add(1);
39 return true; 46 return true;
40 end 47 end
41 end); 48 end);
42 49