#!/bin/bash
# ══════════════════════════════════════════════════════════════════════════════
# NexioCP Panel — Güncelleme Scripti
# Kullanım: wget https://cdn.nexiocp.com/update.sh && chmod +x update.sh && sudo ./update.sh
# Belirli sürüm: NEXIOCP_VERSION=1.0.6 sudo ./update.sh
# ══════════════════════════════════════════════════════════════════════════════
set -euo pipefail

NEXIOCP_VERSION="${NEXIOCP_VERSION:-1.0.6}"
CDN_BASE="${CDN_BASE:-https://cdn.nexiocp.com}"
PANEL_DIR="/opt/nexiocp"

RED='\033[1;31m'
GREEN='\033[1;32m'
CYAN='\033[1;36m'
BOLD='\033[1m'
NC='\033[0m'

ok()   { echo -e "${GREEN}[✓]${NC} $*"; }
info() { echo -e "${CYAN}[→]${NC} $*"; }
die()  { echo -e "${RED}[✗]${NC} $*" >&2; exit 1; }

[[ $EUID -ne 0 ]] && die "Bu scripti root olarak çalıştırın: sudo bash update.sh"

ARCH=$(uname -m)
case "$ARCH" in
    x86_64)  ARCH_DL="amd64" ;;
    aarch64) ARCH_DL="arm64" ;;
    *) die "Desteklenmeyen mimari: $ARCH" ;;
esac

BINARY_NAME="nexiocp-linux-${ARCH_DL}"
BINARY_URL="${CDN_BASE}/${NEXIOCP_VERSION}/${BINARY_NAME}"
BINARY_PATH="${PANEL_DIR}/nexiocp"

echo -e "\n${BOLD}${CYAN}NexioCP Güncelleme — v${NEXIOCP_VERSION}${NC}\n"

# Mevcut sürümü göster
if [[ -f "$BINARY_PATH" ]]; then
    CURRENT=$("$BINARY_PATH" --version 2>/dev/null | head -1 || echo "bilinmiyor")
    info "Mevcut sürüm : $CURRENT"
fi
info "Hedef sürüm  : v${NEXIOCP_VERSION}"
info "İndiriliyor  : ${BINARY_URL}"

# Binary indir
TMP_BIN=$(mktemp)
if ! wget -q --show-progress -O "$TMP_BIN" "$BINARY_URL"; then
    rm -f "$TMP_BIN"
    die "Binary indirilemedi: ${BINARY_URL}"
fi

# Yedeği al
cp "$BINARY_PATH" "${BINARY_PATH}.bak" 2>/dev/null || true

# Servisi durdur
info "Servis durduruluyor..."
systemctl stop nexiocp 2>/dev/null || true

# Binary'yi değiştir
install -m 755 "$TMP_BIN" "$BINARY_PATH"
rm -f "$TMP_BIN"
ok "Binary güncellendi: ${BINARY_PATH}"

# Servisi başlat
info "Servis başlatılıyor..."
systemctl start nexiocp

sleep 2

if systemctl is-active --quiet nexiocp; then
    ok "NexioCP v${NEXIOCP_VERSION} çalışıyor!"
else
    echo ""
    echo -e "${RED}Servis başlatılamadı! Yedekten geri dönülüyor...${NC}"
    [[ -f "${BINARY_PATH}.bak" ]] && install -m 755 "${BINARY_PATH}.bak" "$BINARY_PATH"
    systemctl start nexiocp || true
    die "Güncelleme başarısız. Loglara bakın: journalctl -u nexiocp -n 30"
fi

echo ""
ok "Güncelleme tamamlandı."
