luci-proto-wireguard: add generate psk button 5729/head
authorLukas Voegl <lvoegl@tdt.de>
Fri, 18 Mar 2022 13:47:44 +0000 (14:47 +0100)
committerLukas Voegl <lvoegl@tdt.de>
Fri, 18 Mar 2022 13:47:44 +0000 (14:47 +0100)
Signed-off-by: Lukas Voegl <lvoegl@tdt.de>
protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js
protocols/luci-proto-wireguard/root/usr/libexec/rpcd/luci.wireguard
protocols/luci-proto-wireguard/root/usr/share/rpcd/acl.d/luci-wireguard.json

index 50080ca9b65da5d0f9757b312fe4e38fdefe3c14..677edb8bec5acf833daec2e9368381b5362c367f 100644 (file)
@@ -25,6 +25,12 @@ var generateQrCode = rpc.declare({
        expect: { qr_code: '' }
 });
 
+var generatePsk = rpc.declare({
+       object: 'luci.wireguard',
+       method: 'generatePsk',
+       expect: { psk: '' }
+});
+
 function validateBase64(section_id, value) {
        if (value.length == 0)
                return true;
@@ -273,6 +279,18 @@ return network.registerProtocol('wireguard', {
                o.validate = validateBase64;
                o.optional = true;
 
+               o = ss.option(form.Button, 'generate_key', _('Generate Key'));
+               o.inputstyle = 'apply';
+               o.onclick = ui.createHandlerFn(this, function (section_id, ev, peer_id) {
+                       return generatePsk().then(function (psk) {
+                               var keyInput = document.getElementById('widget.cbid.network.%s.preshared_key'.format(peer_id)),
+                                       changeEvent = new Event('change');
+
+                               keyInput.value = psk;
+                               keyInput.dispatchEvent(changeEvent);
+                       });
+               }, s.section);
+
                o = ss.option(form.DynamicList, 'allowed_ips', _('Allowed IPs'), _("Optional. IP addresses and prefixes that this peer is allowed to use inside the tunnel. Usually the peer's tunnel IP addresses and the networks the peer routes through the tunnel."));
                o.datatype = 'ipaddr';
                o.optional = true;
index bbe91cdd6a8d7629eb1a6f8df53e329b937de4a6..f1f8f16d0053dc9f96232605a2f606febfc61d61 100755 (executable)
@@ -8,6 +8,13 @@ local uci = require "uci"
 local fs = require "nixio.fs"
 
 local methods = {
+       generatePsk = {
+               call = function()
+                       local psk = sys.exec("wg genpsk"):sub(1, -2)
+
+                       return {psk = psk}
+               end
+       },
        generateKeyPair = {
                call = function()
                        local prv = sys.exec("wg genkey 2>/dev/null"):sub(1, -2)
index aa949b9d1486de07275fefcba3f1f71cd74dc876..9d0a5614118c0ed9934cbb52cef89500c102aa07 100644 (file)
@@ -6,7 +6,8 @@
                                "luci.wireguard": [
                                        "generateKeyPair",
                                        "getPublicAndPrivateKeyFromPrivate",
-                                       "generateQrCode"
+                                       "generateQrCode",
+                                       "generatePsk"
                                ]
                        }
                }