#!/bin/bash

SCRIPT_VER="1.5"

APP="ruTorrent - AutoDL Plugin"
APP_CATEGORY="Torrent Clients and Utilities"
APP_SCOPE="user"
APP_ENABLED="yes"
#><#APP_CHECK_VER_CMD="if [ -e /var/www/rutorrent/plugins/autodl-irssi/plugin.info ] ; then awk "\$1 == \"version:\" {print \$2}" /var/www/rutorrent/plugins/autodl-irssi/plugin.info ; else echo "" ; fi"
DEPENDS="RuTorrent"
SUPPORTED_ON="Ubuntu20.04,Ubuntu22.04,Ubuntu24.04"
USE_APACHE2="yes"
LIBRARY="functions4.sh"

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

VALIDATE_USER

RUTORRENT_DIRECTORY="/var/www/rutorrent"
APP_DIRECTORY="${RUTORRENT_DIRECTORY}/plugins/autodl-irssi"

while : ; do

    main_rc=1

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

    APT_INSTALL \
        "git-core" \
        "curl" \
        "screen" \
        "irssi" \
        "libxml-libxml-perl" \
        "libjson-perl" \
        "libarchive-zip-perl" \
        "libhtml-parser-perl" \
        "libnet-ssleay-perl" \
      || break

    APT_INSTALL "crudini"

    # Cleanup old `irssi` installation
    if [ -e "/etc/monit/conf.d/irssi@${USERNAME}" ] ; then
        RM_FILES "/etc/monit/conf.d/irssi@${USERNAME}"
        MONIT_RELOAD
    fi
    [ -e "/etc/monit/conf-templates.d/irssi" ] \
        && RM_FILES "/etc/monit/conf-templates.d/irssi"
    if [ -e "/etc/systemd/system/irssi@.service" ] ; then
        SVC_STOP    "irssi@${USERNAME}"
        SVC_DISABLE "irssi@${USERNAME}"
        RM_FILES "/etc/systemd/system/irssi@.service"
        SYSTEMD_RELOAD
    fi
    [ -d "/etc/skel/.autodl" ] && RM_DIRS "/etc/skel/.autodl"
    [ -d "/etc/skel/.irssi" ]  && RM_DIRS "/etc/skel/.irssi"

    # Install plugin
    if [ ! -d "${APP_DIRECTORY}" ] ; then
        GIT_CLONE "https://github.com/autodl-community/autodl-rutorrent.git" \
                  "${APP_DIRECTORY}" \
            || break
        CHOWN_DIR "${APACHE_USER}":"${APACHE_GROUP}" "${APP_DIRECTORY}"
    fi

    # Configure `irssi`
    AUTODL_URL="$( curl -sL http://git.io/vlcND | jq -r '.assets[] | .browser_download_url' )"
    if [ -z "${AUTODL_URL}" ] ; then
        ERROR "Error retrieving 'autodl' download URL!"
        break
    fi
    WGET "${AUTODL_URL}" "${TMP_DIR}/autodl-irssi.zip" || break
    MKDIR "${TMP_DIR}/.irssi/scripts/autorun" || break
    UNZIP "${TMP_DIR}/autodl-irssi.zip" "${TMP_DIR}/.irssi/scripts/" || break
    CP_FILE "${TMP_DIR}/.irssi/scripts/autodl-irssi.pl" "${TMP_DIR}/.irssi/scripts/autorun/autodl-irssi.pl" \
        || break
    MKDIR "${TMP_DIR}/.autodl" || break
    cat <<-EOF > "${TMP_DIR}/.autodl/autodl.cfg"
	[options]
	gui-server-port = ###AUTODL_PORT###
	gui-server-password = ###AUTODL_PASSWORD###
	rt-dir = ###USERHOME###/Downloads
	rt-ignore-scheduler = true
	upload-type = watchdir
	save-download-history = false
	upload-watch-dir = ###USERHOME###/Watch

	[filter Test Filter]
	resolutions = 720p, 1080p
	max-size = 2GB
	EOF
    MV "${TMP_DIR}/.irssi" "/etc/skel/" || break
    MV "${TMP_DIR}/.autodl" "/etc/skel/" || break

    AUTODL_PORT="$(( USERUID + 38800 - FIRST_UID ))"
    AUTODL_PASSWORD="9MBAqo2sNh";
    CP_DIR "/etc/skel/.autodl" "${USERHOME}/.autodl"
    CP_DIR "/etc/skel/.irssi" "${USERHOME}/.irssi"
    cat <<-EOF > "${USERHOME}/.autodl/autodl.cfg"
	[options]
	gui-server-port = ${AUTODL_PORT}
	gui-server-password = ${AUTODL_PASSWORD}
	rt-dir = ${USERHOME}/Downloads
	rt-ignore-scheduler = true
	upload-type = watchdir
	save-download-history = false
	upload-watch-dir = ${USERHOME}/Watch

	[filter Test Filter]
	resolutions = 720p, 1080p
	max-size = 2GB
	EOF

    CHOWN_DIR "${USERNAME}":"${USERNAME}" "${USERHOME}/.autodl"
    CHOWN_DIR "${USERNAME}":"${USERNAME}" "${USERHOME}/.irssi"

    RUN_LOG "sed -i -e \"/\\\$autodlPort\s*=/d\" \
                 '${RUTORRENT_DIRECTORY}/conf/users/${USERNAME}/config.php' 2>&1"
    RUN_LOG "sed -i -e \"/\\\$autodlPassword\s*=/d\" \
                 '${RUTORRENT_DIRECTORY}/conf/users/${USERNAME}/config.php' 2>&1"
    cat <<-EOF >> "${RUTORRENT_DIRECTORY}/conf/users/${USERNAME}/config.php"
	\$autodlPort = ${AUTODL_PORT};
	\$autodlPassword = "${AUTODL_PASSWORD}";
	EOF
    which crudini > /dev/null 2>&1 && \
        RUN_LOG "crudini --set ${RUTORRENT_DIRECTORY}/conf/users/${USERNAME}/plugins.ini \
                 autodl-irssi enabled yes 2>&1"

    cat <<-EOF > "/etc/systemd/system/irssi@.service"
	[Unit]
	Description=irssi
	After=network.target
 
	[Service]
	Type=forking
	KillMode=none
	User=%i
	ExecStart=/usr/bin/screen -d -m -fa -S irssi-%i /usr/bin/irssi
	ExecStartPost=/bin/sh -c "echo \$MAINPID > /home/%i/.irssi/irssi.pid"
	ExecStop=/usr/bin/killall -w -s 2 /usr/bin/irssi
	WorkingDirectory=/home/%i
 
	[Install]
	WantedBy=multi-user.target
	EOF
    SYSTEMD_RELOAD
    SVC_ENABLE "irssi@${USERNAME}"
    SVC_START  "irssi@${USERNAME}"
    if [ -d "/etc/monit/conf.d" ] ; then
        cat <<-EOF > "/etc/monit/conf.d/irssi@${USERNAME}"
		check process irssi-${USERNAME} with pidfile /home/${USERNAME}/.irssi/irssi.pid
		  start program = "/usr/sbin/service irssi@${USERNAME} restart"
		  stop program = "/usr/sbin/service irssi@${USERNAME} stop"
		EOF
        MONIT_RELOAD
        if [ -d "/etc/monit/conf-templates.d" ] ; then
            cat <<-EOF > "/etc/monit/conf-templates.d/irssi"
		check process irssi-###USERNAME### with pidfile /home/###USERNAME###/.irssi/irssi.pid
		  start program = "/usr/sbin/service irssi@###USERNAME### restart"
		  stop program = "/usr/sbin/service irssi@###USERNAME### stop"
		EOF
        fi
    fi



    main_rc=0
    break

done


# Cleanup if error
if [ ${main_rc} -ne 0 -a ${main_rc} -ne 111 -a ${main_rc} -ne 117 ] ; then
    ERROR "'${APP}': Installation failed."
    # Cleanup tasks here
fi

SCRIPTEXIT
