Son aktivite 1 month ago

nuno bu gisti düzenledi 1 month ago. Düzenlemeye git

1 file changed, 125 insertions

gistfile1.txt(dosya oluşturuldu)

@@ -0,0 +1,125 @@
1 + function ui::logs::fw_row() {
2 + local ts="${1:-}" client="${2:-}" dest_ip="${3:-}" dest_port="${4:-}" \
3 + proto="${5:-}" svc_name="${6:-}" count="${7:-1}" \
4 + w_client="${8:-20}" w_dest="${9:-30}" \
5 + src_endpoint="${10:-}" src_resolved="${11:-}" \
6 + w_endpoint="${12:-0}" resolved_only="${13:-false}"
7 +
8 + local ts_pad client_pad
9 + ts_pad=$(printf "%-11s" "$ts")
10 + client_pad=$(printf "%-${w_client}s" "$client")
11 +
12 + # ── Source endpoint ──
13 + local src_padded=""
14 + if [[ "$w_endpoint" -gt 0 ]]; then
15 + if [[ -n "$src_endpoint" ]]; then
16 + local src_colored
17 + if $resolved_only; then
18 + # Show resolved name only, or raw if unresolved
19 + src_colored="${src_resolved:-$src_endpoint}"
20 + else
21 + src_colored="$src_endpoint"
22 + [[ -n "$src_resolved" ]] && \
23 + src_colored="${src_endpoint} \033[2m→ ${src_resolved}\033[0m"
24 + fi
25 + src_padded=$(ui::pad_mb "$src_colored" "$w_endpoint")
26 + else
27 + src_padded=$(ui::pad_mb "\033[2m—\033[0m" "$w_endpoint")
28 + fi
29 + fi
30 +
31 + # ── Destination ──
32 + local svc_display="" raw_suffix=""
33 + if [[ -n "$svc_name" ]]; then
34 + [[ -n "$dest_port" ]] && svc_display="${svc_name}/${proto}" \
35 + || svc_display="${svc_name} (${proto})"
36 + # Only add raw suffix when not resolved_only
37 + if ! $resolved_only; then
38 + [[ -n "$dest_port" ]] && raw_suffix=" \033[2m(${dest_ip}:${dest_port})\033[0m" \
39 + || raw_suffix=" \033[2m(${dest_ip})\033[0m"
40 + fi
41 + else
42 + [[ -n "$dest_port" ]] && svc_display="${dest_ip}:${dest_port}/${proto}" \
43 + || svc_display="${dest_ip} (${proto})"
44 + fi
45 +
46 + # Pad for count alignment
47 + local raw_plain=""
48 + if ! $resolved_only; then
49 + [[ -n "$svc_name" && -n "$dest_port" ]] && raw_plain=" (${dest_ip}:${dest_port})"
50 + [[ -n "$svc_name" && -z "$dest_port" ]] && raw_plain=" (${dest_ip})"
51 + fi
52 + local full_dest_len=$(( ${#svc_display} + ${#raw_plain} ))
53 + local dest_pad_n=$(( w_dest - full_dest_len ))
54 + [[ $dest_pad_n -lt 0 ]] && dest_pad_n=0
55 +
56 + # ── Count ──
57 + local count_suffix=""
58 + [[ "$count" -gt 1 ]] && count_suffix=" \033[2m(x${count})\033[0m"
59 +
60 + # ── Render ──
61 + if [[ "$w_endpoint" -gt 0 ]]; then
62 + printf " %s %s %b \033[1;31m→\033[0m %s%b%*s%b\n" \
63 + "$ts_pad" "$client_pad" \
64 + "$src_padded" \
65 + "$svc_display" "$raw_suffix" \
66 + "$dest_pad_n" "" \
67 + "$count_suffix"
68 + else
69 + printf " %s %s \033[1;31m→\033[0m %s%b%*s%b\n" \
70 + "$ts_pad" "$client_pad" \
71 + "$svc_display" "$raw_suffix" \
72 + "$dest_pad_n" "" \
73 + "$count_suffix"
74 + fi
75 + }
76 + function ui::logs::wg_row() {
77 + local ts="${1:-}" client="${2:-}" endpoint="${3:-}" event="${4:-}" \
78 + count="${5:-1}" w_client="${6:-20}" w_endpoint="${7:-20}" \
79 + gap_seconds="${8:-}" resolved="${9:-}"
80 +
81 + local event_color
82 + case "$event" in
83 + handshake) event_color="\033[1;32m" ;;
84 + attempt) event_color="\033[1;31m" ;;
85 + *) event_color="\033[0;37m" ;;
86 + esac
87 +
88 + local count_suffix=""
89 + [[ "$count" -gt 1 ]] && count_suffix=" \033[2m(x${count})\033[0m"
90 +
91 + # Gap suffix — offline label only when gap > threshold * 2
92 + local gap_suffix=""
93 + if [[ "$event" == "handshake" && -n "$gap_seconds" && "$gap_seconds" -gt 0 ]]; then
94 + local gap_int="$gap_seconds"
95 + local threshold="${WG_HANDSHAKE_CHECK_TIME_SEC:-300}"
96 + local offline_label=""
97 + [[ "$gap_int" -gt $(( threshold * 2 )) ]] && offline_label=" offline"
98 + if (( gap_int >= 3600 )); then
99 + gap_suffix=" \033[2m↑ $(( gap_int / 3600 ))h${offline_label}\033[0m"
100 + elif (( gap_int >= 60 )); then
101 + gap_suffix=" \033[2m↑ $(( gap_int / 60 ))m${offline_label}\033[0m"
102 + fi
103 + fi
104 +
105 + # Build endpoint display: raw_ip [dim → resolved]
106 + # Use ui::pad_mb so ANSI annotation doesn't affect column alignment
107 + local endpoint_raw="${endpoint:--}"
108 + local endpoint_colored
109 + if [[ -n "$resolved" && -n "$endpoint" ]]; then
110 + endpoint_colored="${endpoint} \033[2m→ ${resolved}\033[0m"
111 + else
112 + endpoint_colored="$endpoint_raw"
113 + fi
114 + local endpoint_padded
115 + endpoint_padded=$(ui::pad_mb "$endpoint_colored" "$w_endpoint")
116 +
117 + local ts_pad client_pad
118 + ts_pad=$(printf "%-11s" "$ts")
119 + client_pad=$(printf "%-${w_client}s" "$client")
120 +
121 + printf " %s %s %b %b%s\033[0m%b%b\n" \
122 + "$ts_pad" "$client_pad" \
123 + "$endpoint_padded" \
124 + "$event_color" "$event" "$count_suffix" "$gap_suffix"
125 + }
Daha yeni Daha eski