aboutsummaryrefslogtreecommitdiff
path: root/plugins/ice/src
diff options
context:
space:
mode:
authorhrxi <hrrrxi@gmail.com>2019-12-28 03:11:51 +0100
committerfiaxh <git@lightrise.org>2021-03-19 22:06:02 +0100
commit148cf48d2b68354881066e2587e2673c91d2619a (patch)
tree623c2eda8dda8d327084b36bc74120933be061bf /plugins/ice/src
parente70b7c1222506a881b4166c67803c467e1985bbc (diff)
downloaddino-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.vala30
-rw-r--r--plugins/ice/src/register_plugin.vala3
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);
+}