luci-proto-wireguard: Add generate key button
Signed-off-by: Wojciech Jowsa <wojciech.jowsa@gmail.com> [minor indentation fix, use bound section_id value, remove empty translation] Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
c4a4e43e2e
commit
60ce87a197
3 changed files with 56 additions and 0 deletions
|
@ -1,8 +1,16 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
'require ui';
|
||||||
'require uci';
|
'require uci';
|
||||||
|
'require rpc';
|
||||||
'require form';
|
'require form';
|
||||||
'require network';
|
'require network';
|
||||||
|
|
||||||
|
var generateKey = rpc.declare({
|
||||||
|
object: 'luci.wireguard',
|
||||||
|
method: 'generateKeyPair',
|
||||||
|
expect: { keys: {} }
|
||||||
|
});
|
||||||
|
|
||||||
function validateBase64(section_id, value) {
|
function validateBase64(section_id, value) {
|
||||||
if (value.length == 0)
|
if (value.length == 0)
|
||||||
return true;
|
return true;
|
||||||
|
@ -55,6 +63,18 @@ return network.registerProtocol('wireguard', {
|
||||||
o.validate = validateBase64;
|
o.validate = validateBase64;
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
|
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');
|
||||||
|
|
||||||
|
keyInput.value = keypair.priv || '';
|
||||||
|
keyInput.dispatchEvent(changeEvent);
|
||||||
|
});
|
||||||
|
}, s.section);
|
||||||
|
|
||||||
o = s.taboption('general', form.Value, 'listen_port', _('Listen Port'), _('Optional. UDP port used for outgoing and incoming packets.'));
|
o = s.taboption('general', form.Value, 'listen_port', _('Listen Port'), _('Optional. UDP port used for outgoing and incoming packets.'));
|
||||||
o.datatype = 'port';
|
o.datatype = 'port';
|
||||||
o.placeholder = _('random');
|
o.placeholder = _('random');
|
||||||
|
|
26
protocols/luci-proto-wireguard/root/usr/libexec/rpcd/luci.wireguard
Executable file
26
protocols/luci-proto-wireguard/root/usr/libexec/rpcd/luci.wireguard
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. /usr/share/libubox/jshn.sh
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
list)
|
||||||
|
json_init
|
||||||
|
json_add_object "generateKeyPair"
|
||||||
|
json_close_object
|
||||||
|
json_dump
|
||||||
|
;;
|
||||||
|
call)
|
||||||
|
case "$2" in
|
||||||
|
generateKeyPair)
|
||||||
|
prv=$(wg genkey)
|
||||||
|
pub=$(echo $prv | wg pubkey)
|
||||||
|
json_init
|
||||||
|
json_add_object "keys"
|
||||||
|
json_add_string "priv" "$prv"
|
||||||
|
json_add_string "pub" "$pub"
|
||||||
|
json_close_object
|
||||||
|
json_dump
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"luci-proto-wireguard": {
|
||||||
|
"description": "Grant access to LuCI Wireguard procedures",
|
||||||
|
"write": {
|
||||||
|
"ubus": {
|
||||||
|
"luci.wireguard": [ "generateKeyPair" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue