Fix OpenWrt Wi-Fi client discovery
This commit is contained in:
@@ -124,6 +124,16 @@ def _extract_ifnames(wireless: dict[str, Any]) -> list[str]:
|
|||||||
return ifnames
|
return ifnames
|
||||||
|
|
||||||
|
|
||||||
|
def _extract_hostapd_ifnames(raw: str) -> list[str]:
|
||||||
|
ifnames: list[str] = []
|
||||||
|
for line in raw.splitlines():
|
||||||
|
name = line.strip()
|
||||||
|
if not name or name == "hostapd":
|
||||||
|
continue
|
||||||
|
ifnames.append(name)
|
||||||
|
return ifnames
|
||||||
|
|
||||||
|
|
||||||
def _safe_json_load(raw: str) -> Any | None:
|
def _safe_json_load(raw: str) -> Any | None:
|
||||||
if not raw:
|
if not raw:
|
||||||
return None
|
return None
|
||||||
@@ -263,6 +273,13 @@ async def get_openwrt_status(cfg: dict[str, Any]) -> str:
|
|||||||
|
|
||||||
wifi_clients = _extract_wifi_clients(wireless)
|
wifi_clients = _extract_wifi_clients(wireless)
|
||||||
ifnames = _extract_ifnames(wireless)
|
ifnames = _extract_ifnames(wireless)
|
||||||
|
rc_l, out_l = await run_cmd_full(
|
||||||
|
ssh_cmd + ["sh", "-c", "ubus -S list | awk -F. '/^hostapd\\.phy/{print $2}'"],
|
||||||
|
timeout=timeout_sec + 15,
|
||||||
|
)
|
||||||
|
if rc_l == 0 and out_l.strip():
|
||||||
|
ifnames.extend(_extract_hostapd_ifnames(out_l))
|
||||||
|
ifnames = sorted({name for name in ifnames if name})
|
||||||
if ifnames:
|
if ifnames:
|
||||||
for ifname in ifnames:
|
for ifname in ifnames:
|
||||||
cmd_clients = ssh_cmd + [
|
cmd_clients = ssh_cmd + [
|
||||||
|
|||||||
Reference in New Issue
Block a user