85 lines
2.2 KiB
Python
85 lines
2.2 KiB
Python
"""Журнал событий сети/mDNS в админке (тот же JSONL, component=network)."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
from typing import Any, Dict, Optional
|
|
|
|
from app.services.admin_peripheral_monitor import append_peripheral_event
|
|
|
|
_LOG = logging.getLogger(__name__)
|
|
|
|
|
|
def log_network_event(
|
|
app,
|
|
*,
|
|
code: str,
|
|
message: str,
|
|
level: str = "info",
|
|
details: Optional[Dict[str, Any]] = None,
|
|
force: bool = False,
|
|
) -> None:
|
|
append_peripheral_event(
|
|
app,
|
|
component="network",
|
|
code=code,
|
|
level=level,
|
|
message=message,
|
|
details=details,
|
|
force=force,
|
|
)
|
|
_LOG.info("network/%s: %s", code, message)
|
|
|
|
|
|
def log_network_settings_saved(app, *, updates: dict, user_login: str) -> None:
|
|
parts = []
|
|
if "local_hostname" in updates:
|
|
parts.append(f"hostname={updates['local_hostname']}")
|
|
if "public_base_url" in updates:
|
|
parts.append(f"url={updates['public_base_url'] or '(auto)'}")
|
|
if "mdns_enabled" in updates:
|
|
parts.append(f"mdns={'on' if updates['mdns_enabled'] else 'off'}")
|
|
log_network_event(
|
|
app,
|
|
code="network_settings_saved",
|
|
level="ok",
|
|
message=f"Настройки сети сохранены ({', '.join(parts) or '—'})",
|
|
details={"user": user_login, **updates},
|
|
force=True,
|
|
)
|
|
|
|
|
|
def log_mdns_started(app, *, hostname: str, lan_ip: str, port: int) -> None:
|
|
log_network_event(
|
|
app,
|
|
code="mdns_started",
|
|
level="ok",
|
|
message=f"mDNS: {hostname} → {lan_ip}:{port}",
|
|
details={"hostname": hostname, "lan_ip": lan_ip, "port": port},
|
|
force=True,
|
|
)
|
|
|
|
|
|
def log_mdns_stopped(app, *, reason: str = "") -> None:
|
|
msg = "mDNS остановлен"
|
|
if reason:
|
|
msg = f"{msg}: {reason}"
|
|
log_network_event(
|
|
app,
|
|
code="mdns_stopped",
|
|
level="info",
|
|
message=msg,
|
|
details={"reason": reason} if reason else None,
|
|
force=True,
|
|
)
|
|
|
|
|
|
def log_mdns_error(app, *, message: str) -> None:
|
|
log_network_event(
|
|
app,
|
|
code="mdns_error",
|
|
level="err",
|
|
message=message,
|
|
force=False,
|
|
)
|