#!/bin/bash

#set -x

SCRIPT_VER="1.16"

APP="ThinLinc"
APP_CATEGORY="Remote Access"
APP_SCOPE="system"
APP_ENABLED="yes"
SYS_PKG_NAME="thinlinc-server"
STORED_PASSWORD_SERVICE="user"
#><#APP_UPGRADE_VER_CMD="echo 4.20.1-4529"
SUPPORTED_ON="Ubuntu20.04,Ubuntu22.04,Ubuntu24.04"
USE_APACHE2="yes"
LIBRARY="functions4.sh"

TL_VER="4.20.1"
TL_BUILD="4529"
TL_ARCH="amd64"

if [ "${SUPPORT-}" = '' ]; then
    SUPPORT="https://installers.rapidseedbox.com/scripts/whmcs_client_installers/support"
fi

LOGFILE="/var/log/whmcs_client_installers/${0}.log"
[ ! -d "/var/log/whmcs_client_installers" ] && mkdir -p "/var/log/whmcs_client_installers"

wget -4 -nc -q --no-check-certificate --timeout=20 --tries=5 ${SUPPORT}/${LIBRARY} >> "${LOGFILE}" 2>&1
if [ ! -f "./${LIBRARY}" ] ; then
    echo "55"
    echo "Error downloading \"${SUPPORT}/${LIBRARY}\"" >> "${LOGFILE}"
    exit 55
fi

# shellcheck source=support/functions4.sh
. "./${LIBRARY}"
SCRIPTENTRY

APP_DIRECTORY="/opt/thinlinc"

while : ; do

    main_rc=1

    CHECK_APP ; _rc=$?
    if [ ${_rc} -ne 0 ] ; then
        main_rc=${_rc}
        break
    fi

    case "${LSB_VENDOR}" in
      "Debian"|"Ubuntu")
          case "${LSB_VER}" in
            "Ubuntu20.04")
                APT_INSTALL "python-apt" || break
                ;;
            *)
                APT_INSTALL "python3-apt" "exim4-daemon-light" || break
                ;;
          esac
          ;;
    esac

    WGET "${SUPPORT}/thinlinc/tl-${TL_VER}-server.zip" || break
    UNZIP "${TMP_DIR}/tl-${TL_VER}-server.zip" "${TMP_DIR}/" || break

    TL_PKGDIR="${TMP_DIR}/tl-${TL_VER}-server/packages"
    _pkglist="${TL_PKGDIR}/thinlinc-server_${TL_VER}-${TL_BUILD}_${TL_ARCH}.deb"

    INFO "Installing: [${_pkglist}]"
    DPKG_INSTALL "${_pkglist}" || break

    cat <<-EOF > "${TMP_DIR}/ANSWER_FILE"
	install-gtk=yes
	install-pygtk=no
	email-address=root
	setup-selinux=no
	setup-web-integration=no
	setup-nearest=no
	install-python-ldap=no
	setup-firewall=no
	server-type=master
	setup-apparmor=no
	missing-answer=abort
	install-nfs=no
	setup-thinlocal=no
	install-sshd=no
	tlwebadm-password=ChangeMe
	accept-eula=yes
	migrate-conf=ignore
	install-required-libs=yes
	agent-hostname-choice=ip
	EOF

    RUN_LOG "${APP_DIRECTORY}/sbin/tl-setup -a ${TMP_DIR}/ANSWER_FILE" || break

    RUN_LOG "sed -i -e 's/^max_sessions_per_user=.*$/max_sessions_per_user=0/' \
              ${APP_DIRECTORY}/etc/conf.d/vsmserver.hconf"

    SYSTEMD_RELOAD
    SVC_DISABLE "tlwebadm"
    SVC_STOP    "tlwebadm"

    SVC_ENABLE "tlwebaccess"
    SVC_STATUS "tlwebaccess" || SVC_START "tlwebaccess"
    SVC_ENABLE "vsmagent"
    SVC_STATUS "vsmagent"    || SVC_START "vsmagent"
    SVC_ENABLE "vsmserver"
    SVC_STATUS "vsmserver"   || SVC_START "vsmserver"

    if [ -d "/etc/monit/conf.d" ] ; then
        cat <<-EOF > "/etc/monit/conf.d/tlwebaccess"
	check process tlwebaccess
	  matching "tlwebaccess"
	  start program = "/usr/sbin/service tlwebaccess restart"
	  stop  program = "/usr/sbin/service tlwebaccess stop"
	  if 20 restarts with 20 cycles then timeout

	check process vsmserver
	  matching "vsmserver"
	  start program = "/usr/sbin/service vsmserver restart"
	  stop  program = "/usr/sbin/service vsmserver stop"
	  if 20 restarts with 20 cycles then timeout

	check process vsmagent
	  matching "vsmagent"
	  start program = "/usr/sbin/service vsmagent restart"
	  stop  program = "/usr/sbin/service vsmagent stop"
	  if 20 restarts with 20 cycles then timeout
	EOF
        MONIT_RELOAD
    fi

    RUN_LOG "touch /var/run/reboot-required"

    main_rc=0
    break

done


if [ "${main_rc}" -ne 0 ] && [ "${main_rc}" -ne 111 ] && [ "${main_rc}" -ne 117 ] ; then
    ERROR "'${APP}': Upgrade failed."
fi

SCRIPTEXIT
