#!/usr/bin/env bash
# rcons -- attach to a host's local console over network

. lib.bash || exit

case ${0##*/} in
	*-console)
		host=${0##*/}; host=${host%-console};;
	*)
		host=${1?missing hostname}; shift;;
esac

case $host in
	ember|wind|dune)
		rconsole $host;;
	wolke)
		echo "KVM: https://robot.hetzner.com/support/index?server_id=2141018";;
	sky)
		echo "Web VNC: https://cloud.hosthatch.com/servers/25904/console";;
	star)
		echo "Web VNC: https://klientams.iv.lt/server.php?id=658792";;
	litnet-vm)
		test -e /n/ember/.config/openstack/clouds.yml ||
			vdie "LITNET OpenStack configuration not found"
		do: env HOME=/n/ember OS_CLOUD=litnet \
			openstack console url show -f shell 13d7ec56-18f1-4f13-a27f-d21e61c25dfb;;
	ampere|vm-ampere)
		oci() { uvx --from=oci-cli oci "$@"; }
		ociconsole() { uv run --with=oci ociconsole "$@"; }
		test -e ~/.oci/config && ! test -e ~/.oci/sessions/DEFAULT/token ||
		do: oci session refresh ||
		do: oci session authenticate --region eu-frankfurt-1 --profile-name DEFAULT &&
		do: ociconsole fra-ampere-1;;
	cisco-top)
		#echo "Use &# to break, &. to detach."
		#do: ssh -t alter "doas cu -E '&' -l /dev/ttyU0";;
		vdie "$host is currently connected to Shore";;
	cisco-mid)
		echo "Use Ctrl-] 'send brk' to break."
		do: telnet cisco-top 2005;;
	cisco-btm)
		echo "Use Ctrl-] 'send brk' to break."
		do: telnet cisco-mid 2005;;
	@cisco-*)
		echo "Use Ctrl-] 'send brk' to break."
		do: telnet ${host#@} 2005;;
	shore)
		vmsg "only power-cycle available for $host" >&2
		do: shoreplug "$@";;
	uk-gw|gw-core)
		do: gw-core-console;;
	uk-lnx1)
		echo "Using serial console via AP-M7-14."
		do: ssh cons@10.34.1.14;;
	uk-lnx2)
		do: rconsole ${host/#uk-/bmc-}.utenos-kolegija.lt;;
	*)
		vdie "unknown host: $host";;
esac
