#!/usr/bin/env bash
# ==============================================================================
# Multi-Server Certificate Exchange Command Proposer & Wrapper (Bash)
# ==============================================================================
# Runs on the Elasticsearch host. Parses local elasticsearch.yml, inspects remote
# kibana.yml over SSH, and proposes the SCP certificate distribution command.
# ==============================================================================

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PYTHON_SCRIPT="$SCRIPT_DIR/propose-cert-exchange-remote.py"

if command -v python3 >/dev/null 2>&1 && [ -f "$PYTHON_SCRIPT" ]; then
  exec python3 "$PYTHON_SCRIPT" "$@"
fi

# Color & formatting definitions
BOLD_CYAN='\033[1;36m'
BOLD_BLUE='\033[1;34m'
BOLD_GREEN='\033[1;32m'
BOLD_YELLOW='\033[1;33m'
BOLD_RED='\033[1;31m'
CYAN='\033[0;36m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BOLD='\033[1m'
RESET='\033[0m'

KIBANA_HOST="10.1.10.4"
KIBANA_USER="root"
KIBANA_PORT="22"
SSH_KEY=""
EXECUTE_CMD=false
UPDATE_SCRIPT="$SCRIPT_DIR/update-certs-remote.sh"

while [[ $# -gt 0 ]]; do
  case "$1" in
    --kibana-host) KIBANA_HOST="$2"; shift 2 ;;
    --kibana-user) KIBANA_USER="$2"; shift 2 ;;
    --kibana-port) KIBANA_PORT="$2"; shift 2 ;;
    --ssh-key) SSH_KEY="$2"; shift 2 ;;
    -e|--execute) EXECUTE_CMD=true; shift ;;
    *) echo -e "${BOLD_RED}Unknown option: $1${RESET}" >&2; exit 1 ;;
  esac
done

PROPOSED_CMD="sudo KIBANA_HOST=\"$KIBANA_HOST\" KIBANA_SSH_USER=\"$KIBANA_USER\" KIBANA_SSH_PORT=\"$KIBANA_PORT\""
if [ -n "$SSH_KEY" ]; then
  PROPOSED_CMD+=" KIBANA_SSH_KEY=\"$SSH_KEY\""
fi
PROPOSED_CMD+=" $UPDATE_SCRIPT"

echo -e "\n${BOLD_CYAN}====================================================${RESET}"
echo -e " ${BOLD_BLUE}Multi-Server Certificate Exchange Proposer (ES ➜ Kibana)${RESET}"
echo -e "${BOLD_CYAN}====================================================${RESET}\n"

echo -e "${BOLD_CYAN}[1] Multi-Server Setup:${RESET}"
echo -e "    ${CYAN}↳${RESET} Local Host:  ${BOLD_GREEN}Elasticsearch Server${RESET}"
echo -e "    ${CYAN}↳${RESET} Remote Host: ${BOLD_GREEN}$KIBANA_USER@$KIBANA_HOST:$KIBANA_PORT${RESET}"

echo -e "\n${BOLD_CYAN}====================================================${RESET}"
echo -e " ${BOLD_GREEN}PROPOSED MULTI-SERVER CERTIFICATE EXCHANGE COMMAND:${RESET}"
echo -e "${BOLD_CYAN}====================================================${RESET}"
echo -e "\n  ${BOLD_YELLOW}$PROPOSED_CMD${RESET}\n"

if [ "$EXECUTE_CMD" = true ]; then
  echo -e "${BOLD_GREEN}Executing proposed multi-server cert update script with sudo...${RESET}\n"
  eval "$PROPOSED_CMD"
fi
