function peers::list() { local dir dir="$(ctx::clients)" if [[ -z "$(ls -A "$dir"/*.conf 2>/dev/null)" ]]; then log::wg_list "No clients configured" return 0 fi for conf in "${dir}"/*.conf; do local client_name client_name=$(basename "$conf" .conf) local ip ip=$(grep "^Address" "$conf" | awk '{print $3}' | cut -d'/' -f1) local public_key public_key=$(keys::public "$client_name" 2>/dev/null || echo "unknown") # Determine type from IP local type="unknown" for t in $(config::device_types); do local subnet subnet=$(config::subnet_for "$t") if string::starts_with "$ip" "$subnet"; then type="$t" break fi done printf " %-30s %-15s %-10s %s\n" \ "$client_name" "$ip" "$type" "$public_key" done