luci-proto-unet: initial support
authorHannu Nyman <hannu.nyman@iki.fi>
Tue, 6 Sep 2022 20:46:14 +0000 (23:46 +0300)
committerHannu Nyman <hannu.nyman@iki.fi>
Tue, 6 Sep 2022 20:48:56 +0000 (23:48 +0300)
Initial support for the new unetd VPN daemon.

Currently this just enables seeing the VPN interface
in the LuCI network overview, plus the keys used.
No relevant config change possibilities, yet.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
protocols/luci-proto-unet/Makefile [new file with mode: 0644]
protocols/luci-proto-unet/htdocs/luci-static/resources/protocol/unet.js [new file with mode: 0644]

diff --git a/protocols/luci-proto-unet/Makefile b/protocols/luci-proto-unet/Makefile
new file mode 100644 (file)
index 0000000..8cf94b3
--- /dev/null
@@ -0,0 +1,15 @@
+#
+# Copyright (C) 2022 Hannu Nyman <hannu.nyman@iki.fi>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for unetd VPN
+LUCI_DEPENDS:=+unetd +unet-cli
+LUCI_PKGARCH:=all
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/protocols/luci-proto-unet/htdocs/luci-static/resources/protocol/unet.js b/protocols/luci-proto-unet/htdocs/luci-static/resources/protocol/unet.js
new file mode 100644 (file)
index 0000000..ea9d9c5
--- /dev/null
@@ -0,0 +1,48 @@
+'use strict';
+'require form';
+'require network';
+'require tools.widgets as widgets';
+
+return network.registerProtocol('unet', {
+       getI18n: function() {
+               return _('Unet');
+       },
+
+       getIfname: function() {
+               return this._ubus('l3_device') || this.sid;
+       },
+
+       getOpkgPackage: function() {
+               return 'unetd';
+       },
+
+       isFloating: function() {
+               return true;
+       },
+
+       isVirtual: function() {
+               return true;
+       },
+
+       getDevices: function() {
+               return null;
+       },
+
+       containsDevice: function(ifname) {
+               return (network.getIfnameOf(ifname) == this.getIfname());
+       },
+
+       renderFormOptions: function(s) {
+               var o;
+
+               o = s.taboption('general', form.DummyValue, 'device', _('Name of the tunnel device'));
+               o.optional = false;
+
+               o = s.taboption('general', form.DummyValue, 'key', _('Local wireguard key'));
+               o.optional = false;
+
+               o = s.taboption('general', form.DummyValue, 'auth_key', _('Key used to sign network config'));
+               o.optional = false;
+
+       }
+});