diff options
author | hrxi <hrrrxi@gmail.com> | 2019-12-28 03:11:51 +0100 |
---|---|---|
committer | fiaxh <git@lightrise.org> | 2021-03-19 22:06:02 +0100 |
commit | 148cf48d2b68354881066e2587e2673c91d2619a (patch) | |
tree | 623c2eda8dda8d327084b36bc74120933be061bf /plugins/ice/src | |
parent | e70b7c1222506a881b4166c67803c467e1985bbc (diff) | |
download | dino-148cf48d2b68354881066e2587e2673c91d2619a.tar.gz dino-148cf48d2b68354881066e2587e2673c91d2619a.zip |
Add libnice and listen for direct connections in Jingle SOCKS5 (#608)
Add libnice as a plugin. If it is present, use libnice to enumerate
local IP addresses and listen on them to support direct connections for
Jingle SOCKS5.
Tested with Conversations and Gajim.
Created the nice.vapi file using
```
vapigen --library nice --pkg gio-2.0 --metadatadir metadata /usr/share/gir-1.0/Nice-0.1.gir
```
Diffstat (limited to 'plugins/ice/src')
-rw-r--r-- | plugins/ice/src/plugin.vala | 30 | ||||
-rw-r--r-- | plugins/ice/src/register_plugin.vala | 3 |
2 files changed, 33 insertions, 0 deletions
diff --git a/plugins/ice/src/plugin.vala b/plugins/ice/src/plugin.vala new file mode 100644 index 00000000..f1c41a27 --- /dev/null +++ b/plugins/ice/src/plugin.vala @@ -0,0 +1,30 @@ +using Gee; +using Nice; +using Xmpp; + +namespace Dino.Plugins.Ice { + +public class Plugin : RootInterface, Object { + public Dino.Application app; + + public void registered(Dino.Application app) { + this.app = app; + app.stream_interactor.stream_attached_modules.connect((account, stream) => { + stream.get_module(Xmpp.Xep.Socks5Bytestreams.Module.IDENTITY).set_local_ip_address_handler(get_local_ip_addresses); + }); + } + + private Gee.List<string> get_local_ip_addresses() { + Gee.List<string> result = new ArrayList<string>(); + foreach (string ip_address in Nice.interfaces_get_local_ips(false)) { + result.add(ip_address); + } + return result; + } + + public void shutdown() { + // Nothing to do + } +} + +} diff --git a/plugins/ice/src/register_plugin.vala b/plugins/ice/src/register_plugin.vala new file mode 100644 index 00000000..b2ed56c1 --- /dev/null +++ b/plugins/ice/src/register_plugin.vala @@ -0,0 +1,3 @@ +public Type register_plugin(Module module) { + return typeof (Dino.Plugins.Ice.Plugin); +} |