aboutsummaryrefslogtreecommitdiff
path: root/plugins/ice/src
diff options
context:
space:
mode:
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);
+}