#!/bin/sh

# Package
PACKAGE="verysync"
DNAME="Very Sync"

# Others
USER="verysync"
ADMINS_LIST="$(cat /etc/group | grep administrators | sed -n -e 's/^.*://p' -e 's/,/ /gp')"
INSTALL_DIR="/usr/local/${PACKAGE}"
SSS="/var/packages/${PACKAGE}/scripts/start-stop-status"
PATH="${INSTALL_DIR}/bin:${PATH}"
TMP_DIR="${SYNOPKG_PKGDEST}/../../@tmp"
SERVICETOOL="/usr/syno/bin/servicetool"


# ---------------- Helper functions -------------------------

stop_sync ()
{
    ${SSS} stop > /dev/null
}

user_exist ()
{
    synouser --get ${USER} &> /dev/null
}


fix_user ()
{
    # In case invalid user was created
    if user_exist && ! grep -q "^${USER}:\*:" /etc/shadow; then
        sed -i -e "s/^${USER}:[^:]\+:/${USER}:*:/" /etc/shadow
    fi
}

dsm_version_less_then_6 ()
{
    # Check Disk Station Manager version
    if [ "${SYNOPKG_DSM_VERSION_MAJOR}" -lt "6" ]; then
        return 0
    fi
    return 1
}

set_syncconf_to_override_old_version ()
{
    cat > ${TMP_DIR}/${PACKAGE}/var/options.conf <<EOF
#!/bin/sh
# This file will be added to start-stop-status script
# For possible options see verysync --help

# Example: uncomment this to start verysync with all devices paused
# VERYSYNC_OPTIONS="\${VERYSYNC_OPTIONS} -paused"
VERYSYNC_OPTIONS="\$VERYSYNC_OPTIONS --logfile \${CONFIG_DIR}/verysync.log --gui-address :8886"
EOF
}


# -----------------------------------------------------------

preupgrade ()
{
    stop_sync

    # Save current 'var' folder to 'tmp' folder
    # (will be restored at postupgrade)
    rm -fr ${TMP_DIR}/${PACKAGE}
    mkdir -p ${TMP_DIR}/${PACKAGE}
    if [ -d ${INSTALL_DIR}/var/.config/verysync ]; then
        rm -rf ${INSTALL_DIR}/var/index*.db
        mv ${INSTALL_DIR}/var/.config/verysync/* ${INSTALL_DIR}/var/
    fi    
    mv ${INSTALL_DIR}/var ${TMP_DIR}/${PACKAGE}/
    

    exit 0
}

preuninst ()
{
    stop_sync

    if [ "${SYNOPKG_PKG_STATUS}" != "UPGRADE" ]; then
        # Remove firewall configuration
        ${SERVICETOOL} --remove-configure-file --package ${PACKAGE}.sc >> /dev/null
    fi
    exit 0
}

postuninst ()
{
    fix_user

    # Remove link from /var/packages/verysync/target to /usr/local/verysync
    rm -f ${INSTALL_DIR}

    exit 0
}

preinst ()
{
    fix_user

    exit 0
}

postinst ()
{
    # Create link from /var/packages/verysync/target to /usr/local/verysync
    ln -s ${SYNOPKG_PKGDEST} ${INSTALL_DIR}

    # Install busybox stuff
    ${INSTALL_DIR}/bin/busybox --install ${INSTALL_DIR}/bin

    if dsm_version_less_then_6 && ! user_exist; then
        synouser --add ${USER} ""  "${DNAME} user" 0 "" "" && fix_user
    fi

    # Add user to administrators group (if it's not already there)
    if user_exist && [ ! -z "${ADMINS_LIST##*${USER}*}" ] ; then
        synogroup --member administrators ${ADMINS_LIST} ${USER} > /dev/null 2>&1
    fi
    # Add firewall config
    ${SERVICETOOL} --install-configure-file --package ${FWPORTS} >> /dev/null


    exit 0
}

postupgrade ()
{
    # Delete 'var' folder from the package
    rm -fr ${INSTALL_DIR}/var

    # Remove old options.conf so it doesn't get copied back in postupgrade
    rm -f ${TMP_DIR}/${PACKAGE}/var/options.conf

    set_syncconf_to_override_old_version

    # Restore current 'var' folder from the previous installation (we saved it in 'tmp' folder at preupgrade)
    mv ${TMP_DIR}/${PACKAGE}/var ${INSTALL_DIR}/

    exit 0
}
