From 8a9dbe39d5b5f3227f46868b3b15f7cc72a50651 Mon Sep 17 00:00:00 2001 From: Paul Dee Date: Thu, 11 Nov 2021 01:31:43 +0100 Subject: luci-proto-wireguard: display interface public key Signed-off-by: Paul Dee --- .../luci-static/resources/protocol/wireguard.js | 29 +++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'protocols/luci-proto-wireguard/htdocs/luci-static') diff --git a/protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js b/protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js index 5795eaebec..78b3207d9e 100644 --- a/protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js +++ b/protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js @@ -11,6 +11,13 @@ var generateKey = rpc.declare({ expect: { keys: {} } }); +var getPublicAndPrivateKeyFromPrivate = rpc.declare({ + object: 'luci.wireguard', + method: 'getPublicAndPrivateKeyFromPrivate', + params: ['privkey'], + expect: { keys: {} } +}); + var generateQrCode = rpc.declare({ object: 'luci.wireguard', method: 'generateQrCode', @@ -88,14 +95,34 @@ return network.registerProtocol('wireguard', { o.validate = validateBase64; o.rmempty = false; + var sections = uci.sections('network'); + var serverName = this.getIfname(); + var server = findSection(sections, serverName); + + o = s.taboption('general', form.Value, 'public_key', _('Public Key'), _('Base64-encoded public key of this interface for sharing.')); + o.rmempty = false; + o.write = function() {/* write nothing */}; + + o.load = function(s) { + return getPublicAndPrivateKeyFromPrivate(server.private_key).then( + function(keypair) { + return keypair.pub || ''; + }, + function(error){ + return _('Error getting PublicKey'); + }, this) + }; + o = s.taboption('general', form.Button, 'generate_key', _('Generate Key')); o.inputstyle = 'apply'; o.onclick = ui.createHandlerFn(this, function(section_id, ev) { return generateKey().then(function(keypair) { var keyInput = document.getElementById('widget.cbid.network.%s.private_key'.format(section_id)), - changeEvent = new Event('change'); + changeEvent = new Event('change'), + pubKeyInput = document.getElementById('widget.cbid.network.%s.public_key'.format(section_id)); keyInput.value = keypair.priv || ''; + pubKeyInput.value = keypair.pub || ''; keyInput.dispatchEvent(changeEvent); }); }, s.section); -- cgit v1.2.3