204: local collected_rows="" 205: collected_rows=$(cmd::list::_collect_all_rows | ui::sort_rows) 207: if [[ -z "$collected_rows" ]]; then 213: cmd::list::_render_detailed "$collected_rows" 214: cmd::list::_render_summary_from_rows "$collected_rows" 223: compact) cmd::list::_render_compact "$collected_rows" ;; 224: *) cmd::list::_render_compact "$collected_rows" ;; 229:# Row collection (single pass, all filters) 232:function cmd::list::_collect_all_rows() { 291: attempt_ts=$(json::iso_to_ts "$last_ts") 567: done < <(json::peer_data "$(ctx::clients)" "$(ctx::meta)" "$(ctx::events_log)") 604: done < <(json::peer_group_map "$groups_dir") 63: ip=$(peers::get_ip "$name") 64: type=$(peers::get_type "$name") 65: rule=$(peers::get_meta "$name" "rule") 67: allowed_ips=$(grep "^AllowedIPs" "$(ctx::clients)/${name}.conf" \ 73: peers::is_blocked "$name" && is_blocked="true" || is_blocked="false" 80: status=$(peers::format_status_verbose "$name" "$public_key" \ 82: last_seen=$(peers::format_last_seen "$name" "$public_key" \ 87: activity_total=$(peers::format_activity_total "$public_key") 90: activity_current=$(peers::format_activity_current "$public_key") 98: mapfile -t ext < <(json::get "$rule_file" "extends" 2>/dev/null || true) 117: ui::row "Type" "$(peers::display_type "$type")" "${INSPECT_LABEL_WIDTH}" 140: rule=$(peers::get_meta "$name" "rule") 238: mapfile -t groups < <(json::peer_groups "$(ctx::groups)" "$name") 250: peer_count=$(json::count "$(group::path "$g")" "peers") 251: [[ "$g" == "$(peers::get_main_group "$name")" ]] && \ 263: ip=$(peers::get_ip "$name") 291: cat "$(ctx::clients)/${name}.conf" 330: name=$(peers::resolve_and_require "$name" "$type") || return 1