Software /
code /
prosody
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 |