mirror of
https://github.com/openwrt/luci.git
synced 2025-12-21 19:14:34 +04:00
luci-proto-wireguard: fixed bug with incorrect peer name detection
Fixed bug with incorrect peer name detection on `Status -> WireGuard` page when more than one peer with the same public key exist: 1. Peers are now tested not only by public key, but also by enabled/disabled status, peer host (both IP and FQDN are supported) and port. 2. Added required `resolveip` dependency. Closes #7342 Signed-off-by: @this-username-has-been-taken Signed-off-by: Paul Donald <newtwen+github@gmail.com>
This commit is contained in:
committed by
Paul Donald
parent
13007611a3
commit
7acea81873
@@ -7,7 +7,7 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
LUCI_TITLE:=Support for WireGuard VPN
|
LUCI_TITLE:=Support for WireGuard VPN
|
||||||
LUCI_DEPENDS:=+wireguard-tools +ucode +luci-lib-uqr
|
LUCI_DEPENDS:=+wireguard-tools +ucode +luci-lib-uqr +resolveip
|
||||||
LUCI_PKGARCH:=all
|
LUCI_PKGARCH:=all
|
||||||
|
|
||||||
PKG_LICENSE:=Apache-2.0
|
PKG_LICENSE:=Apache-2.0
|
||||||
|
|||||||
@@ -15,6 +15,19 @@ function command(cmd) {
|
|||||||
return trim(popen(cmd)?.read?.('all'));
|
return trim(popen(cmd)?.read?.('all'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function checkPeerHost(configHost, configPort, wgHost) {
|
||||||
|
const ips = popen(`resolveip ${configHost} 2>/dev/null`);
|
||||||
|
if (ips) {
|
||||||
|
for (let line = ips.read('line'); length(line); line = ips.read('line')) {
|
||||||
|
const ip = rtrim(line, '\n');
|
||||||
|
if (ip + ":" + configPort == wgHost) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const methods = {
|
const methods = {
|
||||||
generatePsk: {
|
generatePsk: {
|
||||||
@@ -76,7 +89,7 @@ const methods = {
|
|||||||
let peer_name;
|
let peer_name;
|
||||||
|
|
||||||
uci.foreach('network', `wireguard_${last_device}`, (s) => {
|
uci.foreach('network', `wireguard_${last_device}`, (s) => {
|
||||||
if (s.public_key == record[1])
|
if (!s.disabled && s.public_key == record[1] && checkPeerHost(s.endpoint_host, s.endpoint_port, record[3]))
|
||||||
peer_name = s.description;
|
peer_name = s.description;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user