#!/bin/bash

# ======================================================================
# Archivo:       check_update
# Ruta:          /usr/local/bin/
# Autor:         Charlie Martínez® <cmartinez@quirinux.org>
# Licencia:      https://www.gnu.org/licenses/gpl-2.0.txt
# Propósito:     Refrescar lista de paquetes del actualizador gráfico
# Distribución:  Quirinux 2.x
# ======================================================================

#
# Copyright (c) 2019-2025 Charlie Martínez, derechos reservados.
# Licencia: https://www.gnu.org/licenses/gpl-2.0.txt
# Usos autorizados y no autorizados de la marca Quirinux:
# Ver https://www.quirinux.org/aviso-legal
#

# ----------------------------------------------------------------------
# Limpiar paquetes almacenados
# ----------------------------------------------------------------------

    echo "Limpiando paquetes (apt-get clean)"
    apt-get clean
    echo "Se limpiaron los paquetes almacenados."

# ----------------------------------------------------------------------
# Actualizar indices si detecta conexión a internat
# ----------------------------------------------------------------------

# Comprobación de Internet robusta: no depende solo de ICMP/DNS (un "ping" a
# google.com falla en sistemas recién instalados, con ICMP filtrado o DNS sin
# arrancar). Basta con que un método funcione.
_hayInternet() {
    local url ip
    if command -v curl >/dev/null 2>&1; then
        for url in http://connectivity-check.ubuntu.com http://www.gstatic.com/generate_204 https://repo.quirinux.org; do
            curl -s -o /dev/null --connect-timeout 4 --max-time 8 "$url" && return 0
        done
    elif command -v wget >/dev/null 2>&1; then
        for url in http://connectivity-check.ubuntu.com http://www.gstatic.com/generate_204 https://repo.quirinux.org; do
            wget -q -O /dev/null --timeout=6 --tries=1 "$url" && return 0
        done
    fi
    for ip in repo.quirinux.org 1.1.1.1 8.8.8.8 9.9.9.9; do
        timeout 4 bash -c "exec 3<>/dev/tcp/$ip/443" >/dev/null 2>&1 && return 0
    done
    for ip in 1.1.1.1 8.8.8.8 google.com; do
        ping -c 1 -W 3 -q "$ip" >/dev/null 2>&1 && return 0
    done
    return 1
}

if _hayInternet; then
    echo "Conexión a Internet detectada."

    echo "Actualizando índices de paquetes (apt-get update)"
    sudo apt-get update
    echo "Indices de paquetes actualizados."
else
    echo "No hay conexión a Internet. 'apt-get update' no se ejecutará."
fi
