#!/usr/bin/env bash
set -euo pipefail

# Uso:
#   ./deploy_mysqlsh_hardened.sh <usuario@servidor> [remote_dir] [install_link]
# Ejemplo:
#   ./deploy_mysqlsh_hardened.sh ubuntu@10.0.0.50 /opt/scripts 0
#   ./deploy_mysqlsh_hardened.sh ubuntu@10.0.0.50 /opt/scripts 1

REMOTE_HOST="${1:-}"
REMOTE_DIR="${2:-/opt/scripts}"
INSTALL_LINK="${3:-0}"
REMOTE_USER="${REMOTE_HOST%@*}"

if [[ -z "$REMOTE_HOST" ]]; then
  echo "Uso: $0 <usuario@servidor> [remote_dir] [install_link]"
  echo "Ej:  $0 ubuntu@10.0.0.50 /opt/scripts 0"
  echo "Ej:  $0 ubuntu@10.0.0.50 /opt/scripts 1"
  exit 1
fi

LOCAL_BACKUP_SCRIPT="scripts/mysqlsh_backup_hardened.sh"
LOCAL_RESTORE_SCRIPT="scripts/mysqlsh_restore_hardened.sh"
LOCAL_BENCHMARK_SCRIPT="scripts/mysqlsh_restore_benchmark.sh"

if [[ ! -f "$LOCAL_BACKUP_SCRIPT" || ! -f "$LOCAL_RESTORE_SCRIPT" || ! -f "$LOCAL_BENCHMARK_SCRIPT" ]]; then
  echo "Error: no se encuentran scripts locales en scripts/"
  exit 1
fi

if [[ "$INSTALL_LINK" != "0" && "$INSTALL_LINK" != "1" ]]; then
  echo "Error: install_link debe ser 0 o 1"
  exit 1
fi

echo "Creando directorio remoto: $REMOTE_DIR"
if ! ssh "$REMOTE_HOST" "mkdir -p '$REMOTE_DIR'"; then
  echo "No hay permisos directos sobre $REMOTE_DIR. Reintentando con sudo..."
  ssh "$REMOTE_HOST" "sudo mkdir -p '$REMOTE_DIR' && sudo chown '$REMOTE_USER':'$REMOTE_USER' '$REMOTE_DIR'"
fi

echo "Copiando scripts..."
scp "$LOCAL_BACKUP_SCRIPT" "$LOCAL_RESTORE_SCRIPT" "$LOCAL_BENCHMARK_SCRIPT" "$REMOTE_HOST:$REMOTE_DIR/"

echo "Asignando permisos de ejecucion..."
ssh "$REMOTE_HOST" "chmod +x '$REMOTE_DIR/mysqlsh_backup_hardened.sh' '$REMOTE_DIR/mysqlsh_restore_hardened.sh' '$REMOTE_DIR/mysqlsh_restore_benchmark.sh' && ls -l '$REMOTE_DIR'/mysqlsh_*_hardened.sh '$REMOTE_DIR'/mysqlsh_*_benchmark.sh"

if [[ "$INSTALL_LINK" == "1" ]]; then
  echo "Creando enlaces simbolicos en /usr/bin ..."
  ssh "$REMOTE_HOST" "sudo ln -sf '$REMOTE_DIR/mysqlsh_backup_hardened.sh' /usr/bin/mysqlsh_backup_hardened.sh && sudo ln -sf '$REMOTE_DIR/mysqlsh_restore_hardened.sh' /usr/bin/mysqlsh_restore_hardened.sh && sudo ln -sf '$REMOTE_DIR/mysqlsh_restore_benchmark.sh' /usr/bin/mysqlsh_restore_benchmark.sh && ls -l /usr/bin/mysqlsh_*_hardened.sh /usr/bin/mysqlsh_*_benchmark.sh"
fi

echo "Listo. Scripts desplegados en $REMOTE_HOST:$REMOTE_DIR"
