#!/bin/bash
# Setup del servidor de WebApp de firma + cloudflared tunnel

# Instalar cloudflared si no existe
if ! which cloudflared &>/dev/null; then
  echo "Instalando cloudflared..."
  wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -O /usr/local/bin/cloudflared
  chmod +x /usr/local/bin/cloudflared
  echo "cloudflared instalado OK"
fi

# Crear servicio systemd para el servidor webapp
cat > /etc/systemd/system/hotelix-webapp.service << 'SVC'
[Unit]
Description=HOTELIX WebApp Server
After=network.target

[Service]
ExecStart=/usr/bin/python3 /root/hotelix/firma_webapp/webapp_server.py
Restart=always
RestartSec=5
WorkingDirectory=/root/hotelix/firma_webapp

[Install]
WantedBy=multi-user.target
SVC

# Script para iniciar cloudflared y guardar URL
cat > /root/hotelix/start_tunnel.sh << 'TUNNEL'
#!/bin/bash
LOG=/tmp/cf_tunnel.log
URL_FILE=/root/hotelix/webapp_url.txt
pkill -f "cloudflared tunnel" 2>/dev/null || true
sleep 1
echo "" > $LOG
/usr/local/bin/cloudflared tunnel --url http://127.0.0.1:8090 > $LOG 2>&1 &
echo "Esperando URL de cloudflared..."
for i in $(seq 1 30); do
    URL=$(grep -o 'https://[a-z0-9-]*\.trycloudflare\.com' $LOG 2>/dev/null | head -1)
    if [ -n "$URL" ]; then
        echo "$URL" > $URL_FILE
        echo "URL: $URL"
        exit 0
    fi
    sleep 1
done
echo "TIMEOUT: no se obtuvo URL"
exit 1
TUNNEL
chmod +x /root/hotelix/start_tunnel.sh

# Activar y arrancar servicio webapp
systemctl daemon-reload
systemctl enable hotelix-webapp
systemctl restart hotelix-webapp
sleep 2
echo "=== Webapp server ==="
systemctl status hotelix-webapp --no-pager | grep -E "Active|PID"

# Iniciar tunnel y obtener URL
echo "=== Iniciando tunnel ==="
/root/hotelix/start_tunnel.sh

echo "=== URL final ==="
cat /root/hotelix/webapp_url.txt 2>/dev/null || echo "Sin URL"

# Reiniciar bot con nuevo código
systemctl restart hotelix
sleep 2
echo "=== Bot ==="
systemctl status hotelix --no-pager | grep -E "Active|PID"
