from __future__ import annotations import typer from decnet.env import DECNET_INGEST_LOG_FILE from . import utils as _utils from .utils import console, log def register(app: typer.Typer) -> None: @app.command(name="sniffer") def sniffer_cmd( log_file: str = typer.Option(DECNET_INGEST_LOG_FILE, "--log-file", "-f", help="Path to write captured syslog + JSON records"), daemon: bool = typer.Option(False, "--daemon", "-d", help="Detach to background as a daemon process"), ) -> None: """Run the network sniffer as a standalone microservice.""" import asyncio from decnet.sniffer import sniffer_worker if daemon: log.info("sniffer daemonizing log_file=%s", log_file) _utils._daemonize() log.info("sniffer starting log_file=%s", log_file) console.print(f"[bold cyan]Sniffer starting[/] → {log_file}") try: asyncio.run(sniffer_worker(log_file)) except KeyboardInterrupt: console.print("\n[yellow]Sniffer stopped.[/]")