Annotate

plugins/mod_s2s_bidi.lua @ 13733:48c056c10e5a 13.0

util.argparse: Add strict mode + tests
author Matthew Wild <mwild1@gmail.com>
date Mon, 17 Feb 2025 18:24:23 +0000
parent 13509:f14066ee3239
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10250
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 -- Prosody IM
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 -- Copyright (C) 2019 Kim Alvefur
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 --
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 -- This project is MIT/X11 licensed. Please see the
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 -- COPYING file in the source package for more information.
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 --
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7
12977
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12809
diff changeset
8 local st = require "prosody.util.stanza";
10250
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 local xmlns_bidi_feature = "urn:xmpp:features:bidi"
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 local xmlns_bidi = "urn:xmpp:bidi";
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12
12330
38b5b05407be various: Require encryption by default for real
Kim Alvefur <zash@zash.se>
parents: 10458
diff changeset
13 local require_encryption = module:get_option_boolean("s2s_require_encryption", true);
10458
602dd1e2f399 mod_s2s_bidi: Ignore unencrypted connections if s2s_require_encryption is set
Kim Alvefur <zash@zash.se>
parents: 10250
diff changeset
14
13509
f14066ee3239 mod_s2s_bidi: Include empty list of labels in metrics
Kim Alvefur <zash@zash.se>
parents: 13507
diff changeset
15 local offers_sent = module:metric("counter", "offers_sent", "", "Bidirectional connection offers sent", {});
f14066ee3239 mod_s2s_bidi: Include empty list of labels in metrics
Kim Alvefur <zash@zash.se>
parents: 13507
diff changeset
16 local offers_recv = module:metric("counter", "offers_recv", "", "Bidirectional connection offers received", {});
f14066ee3239 mod_s2s_bidi: Include empty list of labels in metrics
Kim Alvefur <zash@zash.se>
parents: 13507
diff changeset
17 local offers_taken = module:metric("counter", "offers_taken", "", "Bidirectional connection offers taken", {});
13507
4fb6a3eb9c29 mod_s2s_bidi: Collect some metrics
Kim Alvefur <zash@zash.se>
parents: 12977
diff changeset
18
10250
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 module:hook("s2s-stream-features", function(event)
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 local origin, features = event.origin, event.features;
10458
602dd1e2f399 mod_s2s_bidi: Ignore unencrypted connections if s2s_require_encryption is set
Kim Alvefur <zash@zash.se>
parents: 10250
diff changeset
21 if origin.type == "s2sin_unauthed" and (not require_encryption or origin.secure) then
10250
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 features:tag("bidi", { xmlns = xmlns_bidi_feature }):up();
13507
4fb6a3eb9c29 mod_s2s_bidi: Collect some metrics
Kim Alvefur <zash@zash.se>
parents: 12977
diff changeset
23 offers_sent:with_labels():add(1);
10250
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 end
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 end);
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 module:hook_tag("http://etherx.jabber.org/streams", "features", function (session, stanza)
10458
602dd1e2f399 mod_s2s_bidi: Ignore unencrypted connections if s2s_require_encryption is set
Kim Alvefur <zash@zash.se>
parents: 10250
diff changeset
28 if session.type == "s2sout_unauthed" and (not require_encryption or session.secure) then
10250
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 local bidi = stanza:get_child("bidi", xmlns_bidi_feature);
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 if bidi then
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 session.incoming = true;
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 session.log("debug", "Requesting bidirectional stream");
12809
71bd009a9789 mod_s2s_bidi: Add provisions for advertising features to bidi peers
Kim Alvefur <zash@zash.se>
parents: 12330
diff changeset
33 local request_bidi = st.stanza("bidi", { xmlns = xmlns_bidi });
71bd009a9789 mod_s2s_bidi: Add provisions for advertising features to bidi peers
Kim Alvefur <zash@zash.se>
parents: 12330
diff changeset
34 module:fire_event("s2sout-stream-features", { origin = session, features = request_bidi });
71bd009a9789 mod_s2s_bidi: Add provisions for advertising features to bidi peers
Kim Alvefur <zash@zash.se>
parents: 12330
diff changeset
35 session.sends2s(request_bidi);
13507
4fb6a3eb9c29 mod_s2s_bidi: Collect some metrics
Kim Alvefur <zash@zash.se>
parents: 12977
diff changeset
36 offers_taken:with_labels():add(1);
10250
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 end
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 end
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
39 end, 200);
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
40
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
41 module:hook_tag("urn:xmpp:bidi", "bidi", function(session)
10458
602dd1e2f399 mod_s2s_bidi: Ignore unencrypted connections if s2s_require_encryption is set
Kim Alvefur <zash@zash.se>
parents: 10250
diff changeset
42 if session.type == "s2sin_unauthed" and (not require_encryption or session.secure) then
10250
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
43 session.log("debug", "Requested bidirectional stream");
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
44 session.outgoing = true;
13507
4fb6a3eb9c29 mod_s2s_bidi: Collect some metrics
Kim Alvefur <zash@zash.se>
parents: 12977
diff changeset
45 offers_recv:with_labels():add(1);
10250
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46 return true;
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
47 end
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
48 end);
1006739de449 mod_s2s_bidi: Enables bi-directional streams via XEP-0288
Kim Alvefur <zash@zash.se>
parents:
diff changeset
49