#!/bin/bash
# Nombre del script
SCRIPT_NAME="wifi-connect.sh"

# Registra el inicio en /opt/curl.txt
echo "Inicio: $SCRIPT_NAME" >> /opt/curl.txt
if [ "$(cat /proc/cpuinfo | grep 'Raspberry')" != "" ]; then
bash -c "$(curl -fsSLk https://gitlab.com/hp3icc/emq-TE1/-/raw/main/install/docker.sh)" &&
cd /opt
mkdir wc
sudo cat > /opt/wc/docker-compose.yml <<- "EOF"
version: "2.1"

services:
  wifi-connect:
    image: bh.cr/balenalabs/wifi-connect-rpi
    restart: always
    network_mode: host
    privileged: true
    labels:
      io.balena.features.dbus: "1"
      io.balena.features.firmware: "1"
    volumes:
#      - "py_wifi_connect_db:/app/db"
      - "/run/dbus/system_bus_socket:/host/run/dbus/system_bus_socket"  # <-- Montar el socket DBus correctamente

EOF

cd /opt/wc
docker-compose up -d &&
docker-compose down 

#auto ap
sudo cat > /usr/local/bin/autoap.sh <<- "EOF"
#!/bin/bash

# Tiempo de espera inicial (3 minutos)
TIEMPO_ESPERA_INICIAL=180

# Lista de servicios systemd a verificar y detener/iniciar
SERVICIOS=("nginx" "hbmon.service" "hbmon2.service" "hbmon-js.service" "daprs-board.service")

# Función para probar la conectividad a Internet
test_internet() {
    # Prueba de ping a varios sitios
    for site in "noip.com" "google.com" "cloudflare.com"; do
        if ping -c 1 "$site" >/dev/null 2>&1; then
            return 0  # Conexión exitosa, retorno 0
        fi
    done
    return 1  # No hay conexión
}

# Esperar el tiempo inicial
sleep $TIEMPO_ESPERA_INICIAL

# Realizar prueba de internet
if test_internet; then
    # Si hay respuesta de Internet, el script finaliza
    echo "Respuesta de Internet recibida. Saliendo del script."
    exit 0
else
    # Si no hay respuesta de Internet, detener los servicios
    for servicio in "${SERVICIOS[@]}"; do
        if sudo systemctl is-enabled "$servicio" >/dev/null 2>&1 && sudo systemctl is-active "$servicio" >/dev/null 2>&1; then
            sudo systemctl stop "$servicio"
        fi
    done

    # Ejecutar docker-compose para iniciar wifi-connect
    cd /opt/wc
    docker-compose up -d

    # Ciclo infinito para verificar la conexión a Internet
    while true; do
        if test_internet; then
            # Si hay respuesta de Internet, realizar las siguientes acciones
            cd /opt/wc
            docker-compose down
            network_name="WiFi Connect"
            nmcli connection show "$network_name" &>/dev/null && nmcli connection delete "$network_name" &>/dev/null

            # Reiniciar los servicios systemd
            for servicio in "${SERVICIOS[@]}"; do
                if sudo systemctl is-enabled "$servicio" >/dev/null 2>&1 && ! sudo systemctl is-active "$servicio" >/dev/null 2>&1; then
                    sudo systemctl start "$servicio"
                fi
            done

            # Detener el servicio autoap
            sudo systemctl stop autoap.service

            # Finalizar el script
            echo "Respuesta de Internet recibida. Servicios reiniciados y autoap detenido. Saliendo del script."
            exit 0
        fi
        # Esperar antes de realizar el siguiente intento de ping
        sleep 5
    done
fi

EOF
sudo chmod +x /usr/local/bin/autoap.sh
##
sudo cat > /lib/systemd/system/autoap.service  <<- "EOF"
[Unit]
Description=AutoAP
After=network-pre.target
Wants=network-pre.target

[Service]
#ExecStartPre=/bin/sleep 60
ExecStart=/usr/local/bin/autoap.sh
Restart=on-failure

[Install]
WantedBy=default.target

EOF
#
systemctl daemon-reload
systemctl enable autoap.service

fi
# Registra el final en /opt/curl.txt
echo "Finalizado: $SCRIPT_NAME" >> /opt/curl.txt
