#!/usr/bin/env bash
# ============================================================================
# BLACKROAD OS, INC. - PROPRIETARY AND CONFIDENTIAL
# Copyright (c) 2025-2026 BlackRoad OS, Inc. All Rights Reserved.
# ============================================================================
# br-mesh - BlackRoad mesh network management
# Usage: br-mesh <command>
set -eo pipefail

source "$HOME/.blackroad/config/nodes.sh" 2>/dev/null || {
  PINK='\033[38;5;205m'; AMBER='\033[38;5;214m'; GREEN='\033[38;5;82m'
  RED='\033[38;5;196m'; BLUE='\033[38;5;69m'; VIOLET='\033[38;5;135m'; RESET='\033[0m'
}
DIM='\033[2m'

# Service ports
declare -A PORTS=(
    [fastapi]=8000 [webhooks]=9000 [node]=3000
    [ollama]=11434 [nginx]=80 [ssh]=22
)

case "$1" in
    status|"")
        printf '%b━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━%b\n' "$PINK" "$RESET"
        printf '%b           BlackRoad Mesh Network%b\n' "$PINK" "$RESET"
        printf '%b━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━%b\n\n' "$PINK" "$RESET"

        printf '%bLocal Network:%b\n' "$BLUE" "$RESET"
        for host in "${PI_NODES[@]}"; do
            local ip="${NODE_IP[$host]:-}"
            [[ -z "$ip" ]] && continue
            if ping -c 1 -W 1 "$ip" &>/dev/null; then
                printf '  %b●%b %s: %s\n' "$GREEN" "$RESET" "$host" "$ip"
            else
                printf '  %b○%b %s: %s %b(offline)%b\n' "$RED" "$RESET" "$host" "$ip" "$DIM" "$RESET"
            fi
        done

        echo ""
        printf '%bCloud:%b\n' "$VIOLET" "$RESET"
        for host in "${CLOUD_NODES[@]}"; do
            local ip="${NODE_IP[$host]:-}"
            [[ -z "$ip" ]] && continue
            if ping -c 1 -W 2 "$ip" &>/dev/null; then
                printf '  %b●%b %s: %s\n' "$GREEN" "$RESET" "$host" "$ip"
            else
                printf '  %b○%b %s: %s\n' "$RED" "$RESET" "$host" "$ip"
            fi
        done

        echo ""
        printf '%bTailscale Mesh:%b\n' "$AMBER" "$RESET"
        tailscale status 2>/dev/null | head -10 || echo "  Run: tailscale status"
        ;;

    ports)
        host="${2:-cecilia}"
        local ip="${NODE_IP[$host]:-$host}"
        printf '%b━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━%b\n' "$PINK" "$RESET"
        printf '%bOpen Ports on %b%s%b\n' "$PINK" "$AMBER" "$host" "$RESET"
        printf '%b━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━%b\n' "$PINK" "$RESET"
        for svc in fastapi webhooks node ollama nginx ssh; do
            port="${PORTS[$svc]}"
            if nc -z -w 2 "$ip" "$port" 2>/dev/null; then
                printf '  %b●%b %s: port %d open\n' "$GREEN" "$RESET" "$svc" "$port"
            else
                printf '  %b○%b %s: port %d closed\n' "$DIM" "$RESET" "$svc" "$port"
            fi
        done
        ;;

    connect)
        host="${2:-cecilia}"
        local target
        target=$(br_ssh_target "$host" 2>/dev/null) || target="$host"
        printf '%bConnecting to %s...%b\n' "$AMBER" "$host" "$RESET"
        ssh $BR_SSH_OPTS "$target"
        ;;

    scan)
        printf '%bScanning local network...%b\n' "$PINK" "$RESET"
        for i in $(seq 1 254); do
            ip="192.168.4.$i"
            if ping -c 1 -W 1 "$ip" &>/dev/null; then
                # Check if it's a known node
                local known=""
                for node in "${ALL_NODES[@]}"; do
                    [[ "${NODE_IP[$node]:-}" == "$ip" ]] && known="$node"
                done
                if [[ -n "$known" ]]; then
                    printf '%b●%b %s: %s\n' "$GREEN" "$RESET" "$ip" "$known"
                else
                    printf '%b●%b %s: %b(unknown)%b\n' "$AMBER" "$RESET" "$ip" "$DIM" "$RESET"
                fi
            fi
        done
        ;;

    dns)
        printf '%b━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━%b\n' "$PINK" "$RESET"
        printf '%bBlackRoad DNS Records%b\n' "$PINK" "$RESET"
        printf '%b━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━%b\n' "$PINK" "$RESET"
        for host in "${ALL_NODES[@]}"; do
            local ip="${NODE_IP[$host]:-}"
            [[ -z "$ip" ]] && continue
            printf '%b%s%b\n' "$AMBER" "$host" "$RESET"
            printf '  Local: %s\n' "$ip"
            printf '  .blackroad.io: %s.blackroad.io\n' "$host"
        done
        ;;

    *)
        printf '%bbr-mesh%b - BlackRoad mesh network manager\n\n' "$PINK" "$RESET"
        echo "Commands:"
        echo "  status   - Show mesh status (default)"
        echo "  ports    - Check open ports on host"
        echo "  connect  - SSH to host"
        echo "  scan     - Scan for new devices"
        echo "  dns      - Show DNS records"
        ;;
esac
