05-sep: [bugfix] aiMesh no respondia (case en comando) + /seguridad estado real + nombres de alias en /limite

This commit is contained in:
juanjo
2026-09-05 19:48:17 +02:00
parent 15f19a7900
commit 1c56bbb753
2 changed files with 48 additions and 17 deletions

View File

@@ -163,18 +163,19 @@ def _set_nvram(entradas, servicio=None):
def _nombre_por_mac(mac):
_devices, _by_mac = _inventario()
for ip, m, nombre in _devices:
if m == mac.upper():
return nombre
mac = mac.upper()
try:
from asus_api_control import DEVICE_ALIASES
for _alias, info in DEVICE_ALIASES.items():
if info["mac"].upper() == mac.upper():
if info["mac"].upper() == mac:
return info["name"]
except Exception:
pass
return f"unknown-{mac}"
_devices, _by_mac = _inventario()
for ip, m, nombre in _devices:
if m == mac and nombre != "pendiente-identificar":
return nombre
return "pendiente-identificar"
def _resolver_mac(dispositivo):
@@ -334,19 +335,49 @@ def limite_quitar(dispositivo):
def seguridad_estado():
claves = (
"bwdpi_enable",
"yadns_enable_x",
"yadns_mode",
import json as _json
out = _run(
"printf '%s\\n' "
"'dnsfilter='$(nvram get dnsfilter_enable_x) "
"'keywords='$(nvram get keyword_rulelist)"
)
lineas = []
for clave in claves:
lineas.append(f"{clave}={_run(f'nvram get {clave}')}")
keywords = _run("nvram get keyword_rulelist") or ""
palabras = [p for p in str(keywords).split("<") if p.strip()]
parental = None
try:
from asus_api_control import parental_status
parental = _json.loads(parental_status())
except Exception:
parental = None
if parental is not None:
estado_p = "activo" if parental.get("state") else "inactivo"
nreglas = len(parental.get("rules") or {})
lineas.append(
f"Control parental: {estado_p} · "
f"{nreglas} dispositivos con regla"
)
if parental.get("block_all"):
lineas.append("Bloqueo total de Internet: ACTIVADO")
else:
lineas.append("Control parental: no consultable")
for campo in out.splitlines():
clave, _, valor = campo.partition("=")
if clave == "dnsfilter":
if valor == "1":
lineas.append("Filtro DNS: activado")
elif valor == "0":
lineas.append("Filtro DNS: desactivado")
else:
lineas.append(f"Filtro DNS: estado {valor!r}")
elif clave == "keywords":
palabras = [p for p in str(valor).split("<") if p.strip()]
lineas.append(
"Palabras filtradas: "
+ (", ".join(palabras) if palabras else "(ninguna)")
)
lineas.append(
"palabras filtradas: "
+ (", ".join(palabras) if palabras else "(ninguna)")
"AiProtection Trend Micro: no activado "
"(requiere activacion desde la web del router)"
)
return f"<pre>{html.escape(chr(10).join(lineas))}</pre>"