#!/usr/bin/env bash
# go - SSH-Shortcuts für easyname Server
set -euo pipefail

LUSER="${LUSER:?Bitte LUSER setzen!}"

usage() {
  cat <<USAGE
Usage:
  go k|kinit
  go w|web <NR> [EUSER] [-- <REMOTE-CMD>...]
  go m|mx  <NR>            [-- <REMOTE-CMD>...]
  go l|logger              [-- <REMOTE-CMD>...]
  go s|support             [-- <REMOTE-CMD>...]

Beispiele:
  go web 42
  go web 42 easy123
  go mx 12 -- bash -lc 'hostname; uptime'
  go logger -- bash -s   # für Here-Doc
USAGE
}

[[ $# -ge 1 ]] || { usage; exit 1; }

cmd="$1"; shift || true

case "$cmd" in
  k|kinit)
    exec kinit "${LUSER}@NESSUS.AT"
    ;;

  w|web)
    # go web NR [EUSER] [-- REMOTE-CMD...]
    [[ $# -ge 1 ]] || { echo "Fehler: 'go web' benötigt <NR> [EUSER]." >&2; usage; exit 1; }
    nr="$1"; shift || true
    host="${LUSER}@web${nr}.in.easyname.com"

    if [[ $# -ge 1 && "$1" != "--" ]]; then
      # EUSER angegeben -> interaktiv mit TTY (für easyuser), trotzdem leiser (-q)
      euser="$1"; shift || true
      exec ssh -qtt "$host" "bash -lic 'easyuser \"$euser\"'"
    else
      # keine EUSER -> nicht-interaktiv; evtl. REMOTE-CMD nach "--" durchreichen
      [[ $# -ge 1 && "$1" == "--" ]] && shift || true
      exec ssh "$host" "$@"
    fi
    ;;

  m|mx)
    # go mx NR [-- REMOTE-CMD...]
    [[ $# -ge 1 ]] || { echo "Fehler: 'go mx' benötigt <NR>." >&2; usage; exit 1; }
    nr="$1"; shift || true
    host="${LUSER}@mx${nr}.in.easyname.com"
    [[ $# -ge 1 && "$1" == "--" ]] && shift || true
    exec ssh "$host" "$@"
    ;;

  l|logger)
    # go logger [-- REMOTE-CMD...]
    host="${LUSER}@logger.in.nessus.at"
    [[ $# -ge 1 && "$1" == "--" ]] && shift || true
    exec ssh "$host" "$@"
    ;;

  s|support)
    # go support [-- REMOTE-CMD...]
    host="${LUSER}@support.in.easyname.com"
    [[ $# -ge 1 && "$1" == "--" ]] && shift || true
    exec ssh "$host" "$@"
    ;;

  *)
    usage; exit 1
    ;;
esac