#!/bin/bash
# ============================================================
#  REBOOTLY ARCHIVES — LXC + Mailpiler + UI Rebootly
#  Script maître — à lancer sur le nœud Proxmox
#
#  Prérequis : infrastructure déjà en place
#    → bash /root/install-proxmox-vpn/setup.sh  (réseau + VPN)
#
#  Usage :
#    bash /root/rebootly-archives/setup.sh
# ============================================================
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

GREEN='\033[0;32m'; CYAN='\033[0;36m'; YELLOW='\033[1;33m'
RED='\033[0;31m'; BOLD='\033[1m'; NC='\033[0m'
ok()   { echo -e "${GREEN}[✓]${NC} $1"; }
warn() { echo -e "${YELLOW}[!]${NC} $1"; }
err()  { echo -e "${RED}[✗]${NC} $1"; exit 1; }

[[ $EUID -ne 0 ]]                            && err "Lancer en root"
command -v pct >/dev/null 2>&1               || err "Ce script doit tourner sur un nœud Proxmox VE"
[[ ! -f "$SCRIPT_DIR/02-deploy-client.sh" ]] && err "Fichiers Rebootly incomplets dans $SCRIPT_DIR"

clear
echo -e "${CYAN}${BOLD}"
cat << 'BANNER'
 ██████  ███████  ██████  ██████  ████████ ██      ██    ██
 ██   ██ ██      ██    ██ ██   ██    ██    ██        ████
 ██████  █████   ██    ██ ██████     ██    ██         ██
 ██   ██ ██      ██    ██ ██   ██    ██    ██         ██
 ██   ██ ███████  ██████  ██████     ██    ███████    ██

          A R C H I V E S  —  LXC + Mailpiler
BANNER
echo -e "${NC}"

# ── Vérifications prérequis ────────────────────────────────────────────────────
VMBR1_OK=false; WG_OK=false
ip link show vmbr1 >/dev/null 2>&1 && VMBR1_OK=true
wg show wg0        >/dev/null 2>&1 && WG_OK=true

echo -e "  Nœud Proxmox : ${BOLD}$(hostname)${NC}"
echo -e "  Dossier      : ${BOLD}${SCRIPT_DIR}${NC}"
echo ""

st() { $1 && echo -e "${GREEN}✓${NC}" || echo -e "${YELLOW}○${NC}"; }

$VMBR1_OK || warn "vmbr1 absent — lancer d'abord : bash /root/install-proxmox-vpn/setup.sh [1]"
$WG_OK    || warn "WireGuard absent — lancer d'abord : bash /root/install-proxmox-vpn/setup.sh [2]"
echo ""

# Compter les LXC Rebootly actifs
NB_LXC=$(pct list 2>/dev/null | grep -v VMID | while read -r ID STATUS NAME; do
  pct config "$ID" 2>/dev/null | grep -qi "rebootly" && echo "$ID"
done | wc -l)

echo -e "  [$(st $VMBR1_OK)]  Réseau vmbr1 OK"
echo -e "  [$(st $WG_OK)]  WireGuard VPN OK"
echo ""
echo -e "  ── Instances (${NB_LXC} LXC Rebootly actifs) ──────────────"
echo -e "  [ ]  [1] Déployer une nouvelle instance (LXC + Docker + Mailpiler + UI)"
echo -e "  [ ]  [2] Mettre à jour une instance existante (bridge + UI)"
echo -e "  [ ]  [3] Appliquer le branding Rebootly sur une instance"
echo ""
echo -e "  ── Actions ───────────────────────────────────────"
echo -e "  [ ]  [L] Lister les instances Rebootly"
echo -e "  [ ]  [q] Quitter"
echo ""
read -p "  Votre choix : " CHOICE

case "$CHOICE" in

  1) bash "$SCRIPT_DIR/02-deploy-client.sh" ;;

  2) bash "$SCRIPT_DIR/08-update-client.sh" ;;

  3) bash "$SCRIPT_DIR/branding/install_theme.sh" ;;

  L|l)
    echo ""
    echo -e "  ${CYAN}${BOLD}Instances Rebootly Archives :${NC}"
    pct list | grep -v VMID | while read -r ID STATUS NAME; do
      DESC=$(pct config "$ID" 2>/dev/null | grep "^description:" | head -1 \
             | sed 's/description: //' || echo "")
      if echo "$DESC" | grep -qi "rebootly"; then
        IP=$(pct exec "$ID" -- hostname -I 2>/dev/null | awk '{print $1}' || echo "?")
        printf "  LXC ${BOLD}%-6s${NC} %-10s %-15s %s\n" \
          "$ID" "$STATUS" "$IP" \
          "$(echo "$DESC" | grep -oP 'Rebootly Archives — [^|]+' | head -1)"
      fi
    done
    echo ""
    ;;

  q|Q) echo "Au revoir."; exit 0 ;;

  *) err "Choix invalide : $CHOICE" ;;
esac
