local filter_peer="" filter_service="" filter_ip="" filter_type="" local hours=24 local accept_only=false drop_only=false external_only=false while [[ $# -gt 0 ]]; do case "$1" in --peer) filter_peer="$2"; shift 2 ;; --service) filter_service="$2"; shift 2 ;; --ip) filter_ip="$2"; shift 2 ;; --type) filter_type="$2"; shift 2 ;; --hours) hours="$2"; shift 2 ;; --accept) accept_only=true; shift ;; --drop) drop_only=true; shift ;; --external) external_only=true; shift ;; --help) cmd::activity::help; return ;; *) log::error "Unknown flag: $1" cmd::activity::help return 1 ;; esac done if command::json; then cmd::activity::_output_json "$hours" return 0 fi if [[ -n "$filter_peer" && -n "$filter_type" ]]; then filter_peer=$(peers::resolve_and_require "$filter_peer" "$filter_type") || return 1 fi local service_ip="" if [[ -n "$filter_service" ]]; then service_ip=$(net::resolve "$filter_service" 2>/dev/null | head -1 | cut -d: -f1) || true [[ -z "$service_ip" ]] && log::error "Service not found: ${filter_service}" && return 1 fi [[ -n "$filter_ip" ]] && service_ip="$filter_ip" # ── Fetch data ── local data=""