#!/bin/bash

#set -x

SCRIPT_VER="1.15"

APP="ThinLinc"
APP_CATEGORY="Remote Access"
APP_SCOPE="system"
APP_ENABLED="yes"
SYS_PKG_NAME="thinlinc-webaccess"
SUPPORTED_ON="CentOS7,CentOS8,CentOSStream8,Debian9,Debian10,Ubuntu16.04,Ubuntu18.04,Ubuntu20.04,Ubuntu22.04"
USE_APACHE2="yes"
LIBRARY="functions4.sh"

#TL_VER="4.12.0"
#TL_BUILD="6517"
#TL_VER="4.12.1"
#TL_BUILD="6733"
#TL_VER="4.13.0"
#TL_BUILD="2253"
#TL_VER="4.14.0"
#TL_BUILD="2408"
##
## thinlinc-server_4.15.0-3358_amd64.deb
##
#TL_VER="4.15.0"
#TL_BUILD="3358"
#
# thinlinc-server_4.16.0-3491_amd64.deb
#
TL_VER="4.16.0"
TL_BUILD="3491"

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

case "${LSB_VENDOR}" in
  "CentOS"|"CentOSStream")
      TL_ARCH="x86_64"
      ;;
  "Debian"|"Ubuntu")
      TL_ARCH="amd64"
      ;;
esac

APP_DIRECTORY="/opt/thinlinc"

__fix_dpkg_scripts() {
    [ -d "${APP_DIRECTORY}/libexec" ] || MKDIR "${APP_DIRECTORY}/libexec"
    cat <<-'EOF' > "${APP_DIRECTORY}/libexec/remove_service"
	#!/bin/bash
	/bin/systemctl disable ${1}
	exit 0
	EOF
    CHMOD_FILE 755 "${APP_DIRECTORY}/libexec/remove_service"
}

while : ; do

    main_rc=1

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

    if [ -e "/etc/monit/conf.d/tlwebaccess" ] ; then
        RM_FILES "/etc/monit/conf.d/tlwebaccess"
        SVC_STATUS "monit" && MONIT_RELOAD
    fi

    SVC_DISABLE "tlwebadm"    ; SVC_STOP    "tlwebadm"
    SVC_DISABLE "tlwebaccess" ; SVC_STOP    "tlwebaccess"
    SVC_DISABLE "vsmagent"    ; SVC_STOP    "vsmagent"
    SVC_DISABLE "vsmserver"   ; SVC_STOP    "vsmserver"

    _pkglist=""
    for _component in \
        "webaccess" \
        "tladm" \
        "vnc-server" \
        "rdesktop" \
        "tlprinter" \
        "vsm" \
        "tlmisc-libs" \
        "tlmisc-libs32" \
        "tlmisc" \
        "server" \
    ; do
        ${PKG_CHECK} "thinlinc-${_component}" \
            && _pkglist="${_pkglist} thinlinc-${_component}"
    done

    case "${LSB_VENDOR}" in
      "CentOS"|"CentOSStream")
          YUM_REMOVE ${_pkglist} || break
          YUM_AUTOREMOVE || break
          ;;
      "Debian"|"Ubuntu")
          __fix_dpkg_scripts
          APT_REMOVE ${_pkglist}
          #
          RUN_LOG "apt-get -y -f install" || break
          #
          __fix_dpkg_scripts
          for _pkg in \
              "thinlinc-tladm" \
              "thinlinc-webaccess" \
          ; do
              ${PKG_CHECK} "${_pkg}" && APT_REMOVE "${_pkg}"
          done
          APT_AUTOREMOVE || break
          #
          # DEBUG:
          RUN_LOG "dpkg -l | grep thinlinc"
          ;;
    esac

    #
    # Kill stale `thinlinc` processes
    _pids=""
    for _p in $( lsof 2> /dev/null \
                   | grep "thinlinc" \
                   | awk '{print $2}' | sort | uniq )
    do
        _pids="${_pids} ${_p}"
    done
    if [ -n "${_pids}" ] ; then
        L_LOG_START
        INFO "Killing processes: ${_pids}"
        bash -c /bin/kill -9 ${_pids} > /dev/null 2>&1
        L_LOG_FINISH
    fi

    RM_DIRS "${APP_DIRECTORY}" "/var/run/thinlinc" "/var/opt/thinlinc"

    MONIT_RELOAD
    SYSTEMD_RELOAD


    main_rc=0
    break

done


SCRIPTEXIT
