#!/bin/bash

# Definición de colores (opcional, para resaltar)
GREEN='\033[0;32m'
NC='\033[0m' # No Color

satlink_info() {
  clear
  cat <<"EOF"
              https://t.me/Satlink502
              
███████╗ █████╗ ████████╗██╗     ██╗███╗   ██╗██╗  ██╗
██╔════╝██╔══██╗╚══██╔══╝██║     ██║████╗  ██║██║ ██╔╝
███████╗███████║   ██║   ██║     ██║██╔██╗ ██║█████╔╝
╚════██║██╔══██║   ██║   ██║     ██║██║╚██╗██║██╔═██╗
███████║██║  ██║   ██║   ███████╗██║██║ ╚████║██║  ██╗
╚══════╝╚═╝  ╚═╝   ╚═╝   ╚══════╝╚═╝╚═╝  ╚═══╝╚═╝  ╚═╝
IPTV-CATV-RESTREAM                  info@satlink.com.gt
EOF
}

# ==============================================
# CONFIGURACIÓN INICIAL
# ==============================================

export TZ='America/Guatemala'
SERVER_IP=""
CLOUD_NAME="SATLINK Cloud"

# ==============================================
# FUNCIONES UTILITARIAS
# ==============================================
function display_message() {
    echo -e "\033[1;36m$1\033[0m"
}

function handle_service() {
    # Verificar si el servicio existe
    if systemctl list-unit-files | grep -q 'astra\.service'; then
        case $1 in
            stop)
                echo -e "\033[1;36m• Deteniendo servicio Astra...\033[0m"
                systemctl stop astra
                ;;
            enable)
                echo -e "\033[1;36m• Habilitando inicio automático...\033[0m"
                systemctl enable astra && echo -e "\033[1;32m  ✓ Servicio habilitado\033[0m" || echo -e "\033[1;31m  ✗ Error al habilitar\033[0m"
                ;;
            restart)
                echo -e "\033[1;36m• Reiniciando servicio...\033[0m"
                systemctl restart astra && echo -e "\033[1;32m  ✓ Servicio reiniciado\033[0m" || echo -e "\033[1;31m  ✗ Error al reiniciar\033[0m"
                ;;
        esac
        sleep 1
    else
        echo -e "\033[1;33m• Servicio Astra no instalado (omitido)\033[0m"
    fi
}

# ==============================================
# INICIO DEL PROCESO
# ==============================================

clear
echo -e "\033[1;34m========================================\033[0m"
echo -e "\033[1;34m    ACTUALIZACIÓN ASTRA - SATLINK    \033[0m"
echo -e "\033[1;34m========================================\033[0m"

# 1. Manejo del servicio
handle_service stop

# ==============================================
# PROCESO DE ACTUALIZACIÓN
# ==============================================

SUMMARY=""

# 2. Verificar instalación existente
if [ ! -f "/usr/bin/astra" ]; then
    display_message "\n• Astra no está instalado en este equipo"
    display_message "• Se procederá a descargar la actualización"
    display_message "• No se realizará respaldo previo"
+="• No existía instalación previa\n"
else
    # 3. Proceso de respaldo
    BACKUP_NAME="astraresp_$(date '+%Y%m%d-%H%M%S').bin"
    mv "/usr/bin/astra" "/usr/bin/$BACKUP_NAME" 2>/dev/null
    
    display_message "\n• Respaldo local creado exitosamente"

    # 4. Subida a la nube
    # display_message "\n• Subiendo a $CLOUD_NAME..."
    # RESPONSE=$(curl -s -F "file=@/usr/bin/$BACKUP_NAME" "https://$SERVER_IP/config/astra.php")
    
    if [[ $RESPONSE == *"Éxito:"* ]]; then
        display_message "  ✓ Subido a $CLOUD_NAME con éxito"
        SUMMARY+="• Respaldo creado exitosamente\n"
        SUMMARY+="• Subido a $CLOUD_NAME con éxito\n"
    else
        echo -e "\033[1;31m  ✗ Error en la subida\033[0m"
        SUMMARY+="• Respaldo creado pero no subido\n"
    fi
fi

# 5. Descarga e instalación
display_message "\n• Descargando versión actualizada..."
if wget -q -O "/usr/bin/astra" "https://menu.satlink.com.gt/Astra-cesbo/update/astra"; then
    chmod 755 "/usr/bin/astra"
clear

satlink_info

    echo -e "\033[1;34m========================================\033[0m"
    echo -e "\033[1;32m          PROCESO COMPLETADO            \033[0m"
    echo -e "\033[1;34m========================================\033[0m"
    
    echo -e "$SUMMARY"
    echo -e "\033[1;36m• Versión SATLINK instalada\033[0m"
    echo -e "\033[1;36m• Hora finalización: $(date '+%Y-%m-%d %H:%M:%S %Z')\033[0m"
    echo -e "\033[1;34m========================================\033[0m"
else
    clear
    echo -e "\033[1;31m========================================\033[0m"
    echo -e "\033[1;31m       ERROR EN LA ACTUALIZACIÓN         \033[0m"
    echo -e "\033[1;31m========================================\033[0m"
    echo -e "\033[1;33m• No se pudo completar la actualización\033[0m"
    echo -e "\033[1;33m• Contacte a Soporte SATLINK\033[0m"
    echo -e "\033[1;31m========================================\033[0m"
fi

# ==============================================
# CONFIGURACIÓN FINAL DEL SERVICIO
# ==============================================
handle_service enable
handle_service restart