Software /
code /
prosody
Annotate
plugins/mod_s2s_bidi.lua @ 13694:293533fa5667 13.0
prosody.cfg.lua.dist: Updates for 13.0+
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 14 Feb 2025 14:47:11 +0000 |
parent | 13509:f14066ee3239 |
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 |