aboutsummaryrefslogtreecommitdiff
path: root/xmpp-vala/src/module/xep/0368_srv_records_tls.vala
diff options
context:
space:
mode:
authorfiaxh <git@lightrise.org>2020-11-16 15:55:33 +0100
committerfiaxh <git@lightrise.org>2020-11-20 15:21:18 +0100
commit07917f1d841f449157aa3aaa2507b0547dd274e7 (patch)
tree315ef3bc243491565d3d5097968dca38d67a7eab /xmpp-vala/src/module/xep/0368_srv_records_tls.vala
parent881b9eec9dcd8fd8c81b0b9d7bfd2ae714d7722e (diff)
downloaddino-07917f1d841f449157aa3aaa2507b0547dd274e7.tar.gz
dino-07917f1d841f449157aa3aaa2507b0547dd274e7.zip
Refactor XmppStream, TLS and connection method logic
fixes #534
Diffstat (limited to 'xmpp-vala/src/module/xep/0368_srv_records_tls.vala')
-rw-r--r--xmpp-vala/src/module/xep/0368_srv_records_tls.vala56
1 files changed, 0 insertions, 56 deletions
diff --git a/xmpp-vala/src/module/xep/0368_srv_records_tls.vala b/xmpp-vala/src/module/xep/0368_srv_records_tls.vala
deleted file mode 100644
index 5a2a4559..00000000
--- a/xmpp-vala/src/module/xep/0368_srv_records_tls.vala
+++ /dev/null
@@ -1,56 +0,0 @@
-using Gee;
-
-namespace Xmpp.Xep.SrvRecordsTls {
-
-public class Module : XmppStreamNegotiationModule {
- public static ModuleIdentity<Module> IDENTITY = new ModuleIdentity<Module>("", "0363_srv_records_for_xmpp_over_tls");
-
- public override void attach(XmppStream stream) {
- stream.register_connection_provider(new TlsConnectionProvider());
- }
-
- public override void detach(XmppStream stream) { }
-
- public override bool mandatory_outstanding(XmppStream stream) { return false; }
- public override bool negotiation_active(XmppStream stream) { return false; }
- public override string get_ns() { return IDENTITY.ns; }
- public override string get_id() { return IDENTITY.id; }
-}
-
-public class TlsConnectionProvider : ConnectionProvider {
- private SrvTarget? srv_target;
-
- public async override int? get_priority(Jid remote_name) {
- GLib.List<SrvTarget>? xmpp_target = null;
- try {
- GLibFixes.Resolver resolver = GLibFixes.Resolver.get_default();
- xmpp_target = yield resolver.lookup_service_async("xmpps-client", "tcp", remote_name.to_string(), null);
- } catch (Error e) {
- return null;
- }
- xmpp_target.sort((a, b) => { return a.get_priority() - b.get_priority(); });
- srv_target = xmpp_target.nth(0).data;
- return xmpp_target.nth(0).data.get_priority();
- }
-
- public async override IOStream? connect(XmppStream stream) {
- SocketClient client = new SocketClient();
- try {
- debug("Connecting to %s %i (tls)", srv_target.get_hostname(), srv_target.get_port());
- IOStream? io_stream = yield client.connect_to_host_async(srv_target.get_hostname(), srv_target.get_port());
- TlsConnection tls_connection = TlsClientConnection.new(io_stream, new NetworkAddress(stream.remote_name.to_string(), srv_target.get_port()));
-#if ALPN_SUPPORT
- tls_connection.set_advertised_protocols(new string[]{"xmpp-client"});
-#endif
- tls_connection.accept_certificate.connect(stream.get_module(Tls.Module.IDENTITY).on_invalid_certificate);
- stream.add_flag(new Tls.Flag() { finished=true });
- return tls_connection;
- } catch (Error e) {
- return null;
- }
- }
-
- public override string get_id() { return "srv_records"; }
-}
-
-}