#!/bin/bash
# Last-Updated: 2026-08-05 17:10 EDT
# Created: 2026-07-19 (paired with EventScript policy choice)
# Authors: Paul Aidukas KN2R, Logan Crook K8LRC
# restart-tlb-conference - clean TheLinkBox restart (Paul Aidukas KN2R)
# Used by tlb-admin "Restart TLB" button. See SETUP-INSTRUCTIONS.txt.
#
# WITH-policy pairing: EventScript = .../tlbevent-conference.sh
# (Also kills tlbevent.sh JIC if a leftover no-policy script is running.)
#
# Typical install path:
#   /home/thelinkbox/scripts/restart-tlb-conference
#   chmod 755 /home/thelinkbox/scripts/restart-tlb-conference
#
# Adjust TLB binary / config paths below if your install differs.
echo; date

TLB_HOME="${TLB_HOME:-/home/thelinkbox}"
TLB_CONF="${TLB_CONF:-${TLB_HOME}/tlb.conf}"
TLB_BIN=""
for cand in \
	/usr/local/libexec/tlb \
	/usr/local/sbin/tlb \
	/usr/sbin/tlb \
	/usr/bin/tlb \
	"${TLB_HOME}/tlb"
do
	if [[ -x "${cand}" ]]; then
		TLB_BIN="${cand}"
		break
	fi
done

# Optional: if tlb.service is enabled, stop it so systemd does not fight this script.
if command -v systemctl >/dev/null 2>&1; then
	systemctl stop tlb >/dev/null 2>&1 || true
fi
echo -n "Changing Present Working Directory PWD to ${TLB_HOME} - "
cd "${TLB_HOME}" || exit 1
sync
echo "Done!"
echo -n "Starting up The LinkBox - "
killall -q tlb; echo -n "Stand-by -"; sleep 1; killall -q -9 tlb; echo -n "-"; sleep 1
killall -q tlbevent-conference.sh; echo -n "-"; sleep 1; killall -q -9 tlbevent-conference.sh; echo -n "- "; sleep 1
killall -q tlbevent.sh; echo -n "-"; sleep 1; killall -q -9 tlbevent.sh; echo -n "- "; sleep 1
killall -q tlbevent-nopolicy.sh; echo -n "-"; sleep 1; killall -q -9 tlbevent-nopolicy.sh; echo -n "- "; sleep 1

if [[ -n "${TLB_BIN}" && -f "${TLB_CONF}" ]]; then
	"${TLB_BIN}" -d -f "${TLB_CONF}" >/dev/null 2>&1 &
else
	echo
	echo "WARNING: tlb binary or ${TLB_CONF} not found — trying systemd"
fi
sleep 1

# Never leave TLB down: if binary start failed, fall back to systemd.
if ! pidof tlb >/dev/null 2>&1; then
	if command -v systemctl >/dev/null 2>&1; then
		systemctl start tlb >/dev/null 2>&1 || true
		sleep 1
	fi
fi
if pidof tlb >/dev/null 2>&1; then
	echo "Done!"
else
	echo "FAILED — tlb is not running (start manually)"
fi
echo "Status:"
ps aux | grep tlb | egrep -v "grep|start"
echo
exit 0
