#!/usr/bin/env bash
# Disable POG-EDGE — return to standard copper daisy-chain (EDGE_MODE=0).
#
#   sudo bash disable_edge.sh

if grep -q $'\r' "${BASH_SOURCE[0]}" 2>/dev/null; then
  sed -i 's/\r$//' "${BASH_SOURCE[0]}"
  exec bash "${BASH_SOURCE[0]}" "$@"
fi

set -euo pipefail

if [[ "${EUID}" -ne 0 ]]; then
  echo "FATAL: run with sudo" >&2
  exit 1
fi

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=ethergold_field_env.sh
source "${SCRIPT_DIR}/ethergold_field_env.sh"
ethergold_migrate_legacy_paths
EDGE_ENV="${ETHERGOLD_EDGE_ENV}"
EDGE_ROOT="${SCRIPT_DIR}/pog-edge"

for pattern in pog422_fixture_bridge pog422_bridge fixture_link_watch; do
  pkill -TERM -f "${pattern}" 2>/dev/null || true
done
sleep 1

if [[ -f "${EDGE_ROOT}/tunnel_down.sh" ]]; then
  # shellcheck source=pog-edge/pog_edge_env.sh
  source "${EDGE_ROOT}/pog_edge_env.sh" 2>/dev/null || true
  bash "${EDGE_ROOT}/tunnel_down.sh" || true
fi

if command -v nmcli >/dev/null 2>&1; then
  # Tear down the EDGE uplink profile only. Do not `nmcli dev disconnect wlan0` —
  # that drops office/admin SSH and leaves stock Pis unreachable until a reboot.
  nmcli connection down "${EDGE_WIFI_CONN_NAME:-POGCOM}" 2>/dev/null || true
fi

mkdir -p "${ETHERGOLD_ETC}"
if [[ -f "${EDGE_ENV}" ]]; then
  if grep -q '^EDGE_MODE=' "${EDGE_ENV}"; then
    sed -i 's/^EDGE_MODE=.*/EDGE_MODE=0/' "${EDGE_ENV}"
  else
    echo "EDGE_MODE=0" >>"${EDGE_ENV}"
  fi
elif [[ -f "${ETHERGOLD_ETC_LEGACY}/edge.env" ]]; then
  cp -a "${ETHERGOLD_ETC_LEGACY}/edge.env" "${EDGE_ENV}"
  sed -i 's/^EDGE_MODE=.*/EDGE_MODE=0/' "${EDGE_ENV}"
else
  echo "EDGE_MODE=0" >"${EDGE_ENV}"
fi

echo "--- NetworkManager: both eth ports unmanaged (copper) ---"
NM_INSTALL="${SCRIPT_DIR}/install_nm_eth_unmanaged.sh"
if [[ -f "${NM_INSTALL}" ]]; then
  bash "${NM_INSTALL}" --clear-edge
else
  echo "WARN: ${NM_INSTALL} missing" >&2
fi

echo "=== edge disabled (copper daisy-chain) ==="
ethergold_restart_bridge_unit
