#!/bin/bash



# Build an ordered list
interfaces=()


#  Auto-discover current interfaces (exclude lo + common virtuals)
while IFS= read -r ifname; do
    case "$ifname" in
        lo|docker*|br-*|veth*|virbr*|vmnet*|tap*|tun*|wg*|zt*|tailscale* )
            continue
            ;;
    esac

    # Add only if not already in preferred list
    found=0
    for x in "${interfaces[@]}"; do
        [[ "$x" == "$ifname" ]] && { found=1; break; }
    done
    [[ $found -eq 0 ]] && interfaces+=("$ifname")
done < <(ip -o link show | awk -F': ' '{print $2}')


HAS_IP=false
# Now search in priority order
for ifname in "${interfaces[@]}"; do
    # echo $ifname
    ip_info=$(ip -4 -o addr show dev "$ifname" scope global 2>/dev/null | awk '{print $4}' | cut -d/ -f1 | head -n1)
    if [[ $ip_info =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
        HAS_IP=true
        echo -n "$ip_info ($ifname) "
    fi
done

echo ""

if $HAS_IP; then
    exit 0
fi

exit 1
