function ui::logs::fw_row() { local ts="${1:-}" client="${2:-}" dest_ip="${3:-}" dest_port="${4:-}" \ proto="${5:-}" svc_name="${6:-}" count="${7:-1}" \ w_client="${8:-20}" w_dest="${9:-30}" \ src_endpoint="${10:-}" w_endpoint="${11:-0}" local ts_pad client_pad ts_pad=$(printf "%-11s" "$ts") client_pad=$(printf "%-${w_client}s" "$client") # ── Source endpoint column ── local src_col="" if [[ "$w_endpoint" -gt 0 ]]; then local src_pad_n if [[ -n "$src_endpoint" ]]; then local src_resolved src_resolved=$(resolve::ip "$src_endpoint" 2>/dev/null || echo "") [[ "$src_resolved" == "$src_endpoint" ]] && src_resolved="" if [[ -n "$src_resolved" ]]; then src_col="${src_endpoint} \033[2m→ ${src_resolved}\033[0m" else src_col="${src_endpoint}" fi src_pad_n=$(( w_endpoint - ${#src_endpoint} )) else src_pad_n="$w_endpoint" fi [[ $src_pad_n -lt 0 ]] && src_pad_n=0 src_col="${src_col}$(printf '%*s' "$src_pad_n" '')" fi # ── Destination column ── # svc_display: "npm/tcp" or "pihole (icmp)" — used for padding # raw_suffix: dim "(10.0.0.101:3260)" — appended after padding local svc_display raw_suffix="" if [[ -n "$svc_name" ]]; then [[ -n "$dest_port" ]] && svc_display="${svc_name}/${proto}" || svc_display="${svc_name} (${proto})" [[ -n "$dest_port" ]] && raw_suffix=" \033[2m(${dest_ip}:${dest_port})\033[0m" \ || raw_suffix=" \033[2m(${dest_ip})\033[0m" else [[ -n "$dest_port" ]] && svc_display="${dest_ip}:${dest_port}/${proto}" \ || svc_display="${dest_ip} (${proto})" fi local dest_pad_n=$(( w_dest - ${#svc_display} )) [[ $dest_pad_n -lt 0 ]] && dest_pad_n=0 # ── Count ── local count_suffix="" [[ "$count" -gt 1 ]] && count_suffix=" \033[2m(x${count})\033[0m" # ── Render ── local src_padded if [[ -n "$src_endpoint" ]]; then local src_colored="$src_endpoint" [[ -n "$src_resolved" ]] && src_colored="${src_endpoint} \033[2m→ ${src_resolved}\033[0m" src_padded=$(ui::pad_mb "$src_colored" "$w_endpoint") else src_padded=$(printf "%${w_endpoint}s" "") fi printf " %s %s %b \033[1;31m→\033[0m %s%*s%b%b\n" \ "$ts_pad" "$client_pad" \ "$src_padded" \ "$svc_display" "$dest_pad_n" "" \ "$raw_suffix" "$count_suffix" }