05-sep: [bugfix] aiMesh no respondia (case en comando) + /seguridad estado real + nombres de alias en /limite
This commit is contained in:
@@ -501,7 +501,7 @@ def procesar(texto, chat_id):
|
||||
except Exception as e:
|
||||
log(f"parental error: {e}")
|
||||
enviar(f"❌ Error en control parental: {e}", chat_id)
|
||||
elif comando == "aiMesh":
|
||||
elif comando in ("aimesh", "aiMesh", "mesh"):
|
||||
partes_mesh = argumento.split()
|
||||
accion_mesh = partes_mesh[0].lower() if partes_mesh else "estado"
|
||||
try:
|
||||
|
||||
@@ -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,20 +335,50 @@ 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(
|
||||
"palabras filtradas: "
|
||||
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(
|
||||
"AiProtection Trend Micro: no activado "
|
||||
"(requiere activacion desde la web del router)"
|
||||
)
|
||||
return f"<pre>{html.escape(chr(10).join(lineas))}</pre>"
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user