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>
(cherry picked from commit
7acea818735a9c5e8577d6b57f359996956f15e4)
luci-proto-wireguard: follow-up fix for status overview
follow-up to
7acea818735a9c5e8577d6b57f359996956f15e4
Closes #7347
Signed-off-by: Paul Donald <newtwen+github@gmail.com>
(cherry picked from commit
760ac165fa76952161e82bd825d9c757a10e0436)
include $(TOPDIR)/rules.mk
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
PKG_PROVIDES:=luci-app-wireguard
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 = {
generatePsk: {
let peer_name;
uci.foreach('network', `wireguard_${last_device}`, (s) => {
- if (s.public_key == record[1])
+ if (!s.disabled && s.public_key == record[1] && (!s.endpoint_host || checkPeerHost(s.endpoint_host, s.endpoint_port, record[3])))
peer_name = s.description;
});