#!/bin/bash

LIB_DIR="$( dirname "$( realpath "$0" )" )/../lib"
if [[ -f "$LIB_DIR/eeadmtools/helpers" ]]; then
    # shellcheck source=/dev/null
    source "$LIB_DIR/eeadmtools/helpers"
else
    # shellcheck source=/dev/null
    source "$LIB_DIR/helpers"
fi

function usage() {
    default_usage \
      "[eeid-host]" \
      "  eeid-host\t\tHost name with EEID (optional, example: coo-bastion)"
}
handle_args "$@"

HOST="${ARGS[0]}"
[[ -z "$HOST" ]] && usage

function fatal_error() {
    echo "$@"
    echo -n "Press [enter] to exit"
    read -r
    exit 1
}

# Handle (ee)tsh:// URL scheme
if grep -Eq '^(ee)?tsh:(//)?' <<< "$HOST"; then
    # shellcheck disable=SC2001
    HOST="$(sed 's#^\(ee\)\?tsh:\(//\)\?##' <<< "$HOST" | cut -d'/' -f1 | urldecode)"
fi
EEID=$( cut -d'-' -f 1 <<< "$HOST" )
is_reserved_eeid "$EEID"
if is_reserved_eeid "$EEID"; then
    EEID="ee"
else
    # shellcheck disable=SC2001
    HOST=$( sed 's/^[^-]\+-//' <<< "$HOST" )
fi

TSH_PROXY_HOST="${TSH_EEID_TO_PROXY_HOST[$EEID]:-null}"
if [[ "$TSH_ETSH_PROXY_HOST" == "null" ]]; then
    fatal_error "No proxy host known for EeID $EEID"
fi

[[ "${TSH_USERNAME:-null}" == "null" ]] && TSH_USERNAME="$USER"
TSH_ARGS=(
    "--proxy=$TSH_PROXY_HOST"
    "--user=$TSH_USERNAME"
)

if ! tsh "${TSH_ARGS[@]}" status > /dev/null 2>&1; then
    tsh login "${TSH_ARGS[@]}" || \
        fatal_error "Failed to login on $TSH_PROXY_HOST as $TSH_USERNAME"
else
    echo "Already authenticated on $TSH_PROXY_HOST (as $TSH_USERNAME)"
fi

echo "Connecting to $HOST via $TSH_PROXY_HOST..."
tsh ssh "${TSH_ARGS[@]}" "$HOST"
exit $?

# vim: tabstop=4 shiftwidth=4 softtabstop=4 expandtab
