#!/usr/bin/env bash
# Enable or disable network boot (PXE + TFTP) on the provisioning LXC.
# When disabled, TFTP is stopped and no boot server is advertised; DHCP still runs.
# Usage: toggle-network-boot-dhcp.sh enable | disable | status
# Run as root. Install to /opt/cm4-provisioning/toggle-network-boot-dhcp.sh
# LAN gateway for TFTP/next-server is read from /opt/cm4-provisioning/lan-subnet.conf (written by deploy-to-proxmox.sh).

set -e
PXE_CONF="/etc/dnsmasq.d/network-boot-pxe.conf"
MAIN_CONF="/etc/dnsmasq.d/network-boot.conf"

LAN_CONF="/opt/cm4-provisioning/lan-subnet.conf"
if [[ -f "$LAN_CONF" ]]; then
  source "$LAN_CONF"
else
  LAN_GW="10.20.50.1"
fi

# Remove enable-tftp / tftp-root from main config if present (legacy; these belong in PXE conf)
cleanup_main_conf() {
  if [ -f "$MAIN_CONF" ] && grep -q 'enable-tftp\|tftp-root' "$MAIN_CONF" 2>/dev/null; then
    sed -i '/^enable-tftp/d; /^tftp-root/d' "$MAIN_CONF"
  fi
}

case "${1:-}" in
  enable)
    cleanup_main_conf
    cat > "$PXE_CONF" << EOF
# PXE/network boot ENABLED - managed by toggle-network-boot-dhcp.sh
# TFTP server (only active when network boot is enabled)
enable-tftp
tftp-root=/srv/tftpboot
# BOOTP fields (siaddr = TFTP server, filename = boot file)
dhcp-boot=start4cd.elf,,${LAN_GW}
# DHCP options 66/67 (some PXE clients prefer these)
dhcp-option=66,${LAN_GW}
dhcp-option=67,start4cd.elf
EOF
    systemctl restart dnsmasq 2>/dev/null || service dnsmasq restart 2>/dev/null || true
    echo "Network boot enabled (TFTP next-server: $LAN_GW)."
    ;;
  disable)
    cleanup_main_conf
    rm -f "$PXE_CONF"
    systemctl restart dnsmasq 2>/dev/null || service dnsmasq restart 2>/dev/null || true
    echo "Network boot disabled. DHCP still running but no TFTP or boot options."
    ;;
  status)
    if [ -f "$PXE_CONF" ] && grep -q 'enable-tftp' "$PXE_CONF" 2>/dev/null; then
      echo "enabled"
    else
      echo "disabled"
    fi
    ;;
  *)
    echo "Usage: $0 enable | disable | status" >&2
    exit 1
    ;;
esac
