#!/bin/bash
set -e

# WAN interface setup script
# Detects primary WAN interface and configures persistent naming

ARCH=$(uname -m)
LINK_FILE="/etc/systemd/network/10-wan.link"

# Only run on x86_64 systems
if [ "$ARCH" != "x86_64" ]; then
    exit 0
fi

# Exit if link file already exists - setup is already complete
if [ -e "$LINK_FILE" ]; then
    echo "WAN interface already configured ($LINK_FILE exists)"
    exit 0
fi

# Get the primary ethernet interface
PRIMARY_ETH="$(ip -o route get 1.1.1.1 2>/dev/null | awk '{for(i=1;i<=NF;i++) if($i=="dev"){print $(i+1); exit}}')"
[ -z "$PRIMARY_ETH" ] && PRIMARY_ETH="$(ip route 2>/dev/null | awk '/^default/{print $5; exit}')"

if [ -z "$PRIMARY_ETH" ] || [ ! -d "/sys/class/net/$PRIMARY_ETH" ]; then
    echo "Could not determine primary ethernet interface"
    exit 1
fi

# Get the MAC address for reliable matching
MAC_ADDR="$(cat "/sys/class/net/$PRIMARY_ETH/address" 2>/dev/null)"

if [ -z "$MAC_ADDR" ]; then
    echo "Could not determine MAC address for interface $PRIMARY_ETH"
    exit 1
fi

echo "Setting up WAN interface: $PRIMARY_ETH -> wan0 (MAC: $MAC_ADDR)"

# Create systemd network link file
mkdir -p /etc/systemd/network

cat >"$LINK_FILE" <<EOF
[Match]
MACAddress=${MAC_ADDR}

[Link]
Name=wan0
EOF

# Disable cloud-init network config
mkdir -p /etc/cloud/cloud.cfg.d
echo 'network: {config: disabled}' > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

# Create netplan configuration
mkdir -p /etc/netplan
if systemctl is-active --quiet NetworkManager 2>/dev/null; then
    RENDERER="NetworkManager"
else
    RENDERER="networkd"
fi

NP_FILE="/etc/netplan/10-wan.yaml"
umask 177

cat >"$NP_FILE" <<EOF
network:
  version: 2
  renderer: ${RENDERER}
  ethernets:
    wan0:
      dhcp4: true
EOF

# Apply changes
udevadm control --reload >/dev/null 2>&1
netplan apply >/dev/null 2>&1 || true
