#!/bin/sh

###############################################
# FUNCTIONS AND VARS
###############################################

OXI_INSTALL_DIR_NAME="@Oxibackup"
INSTALL_DIR="$SYNOPKG_PKGDEST_VOL/$OXI_INSTALL_DIR_NAME"
OXIBACKUP_SUB_DIR="$INSTALL_DIR/opt/oxibackup"

BIN_FILES_URL="https://deploy.oxibox.com/linux/binaries"

OXIBOX_IDUSER="$oxibox_login"
OXIBOX_PASSWORD="$oxibox_password"
OXIBOX_IDMAC="$oxibox_hostname"

# Display a message in final panel
_echosyno () {
    echo "$1<br/>" >> "$SYNOPKG_TEMP_LOGFILE"
}

# Echo in debug file
_echodebug () {
    echo "$1" >> "/var/log/oxibackup_install.log"
}

# Echo in both functions
_echo () {
    _echosyno "$1"
    _echodebug "$1"
}

###############################################

CURRENT_DATE=$(date)
_echodebug "Post-installation started at $CURRENT_DATE"

###############################################


###############################################
# INSTALL LOCAL FILES
###############################################

_echodebug "Installing local package files..."

if ! cp -r "$SYNOPKG_PKGDEST/opt/oxibackup/"* "$OXIBACKUP_SUB_DIR/" > /dev/null 2>&1
then
    if [ "$SYNOPKG_DSM_LANGUAGE" = "fre" ]
    then
        _echo "Erreur lors de la copie des fichiers du paquet dans le répertoire d'installation"
    else
        _echo "Error while copying package files to the installation directory"
    fi
    exit 1
fi

chmod 700 "$OXIBACKUP_SUB_DIR/bin/oxibackupd-configure"
chmod 700 "$OXIBACKUP_SUB_DIR/bin/oxibackupd-control"
chmod 700 "$OXIBACKUP_SUB_DIR/bin/oxibackupd-service"

chmod 755 "$OXIBACKUP_SUB_DIR/etc/oxibackupd"
chmod 644 "$OXIBACKUP_SUB_DIR/etc/oxibackupd/service.conf"
chmod 755 "$OXIBACKUP_SUB_DIR/etc/oxibackupd/config"
chmod 644 "$OXIBACKUP_SUB_DIR/etc/oxibackupd/config/oxibackupd.conf"

# Symlink for easier access system-wide
ln -sfn "$OXIBACKUP_SUB_DIR/bin/oxibackupd-configure" "/usr/bin/oxibackup-configure"
ln -sfn "$OXIBACKUP_SUB_DIR/bin/oxibackupd-control" "/usr/bin/oxibackup-control"

if ! mkdir -p "$OXIBACKUP_SUB_DIR/root/.oxibackup" && chmod 700 "$OXIBACKUP_SUB_DIR/root/.oxibackup"
then
    _echo "Failed to create backup user data directory"
    exit 1
fi

if ! ln -sfn "$OXIBACKUP_SUB_DIR/root/.oxibackup" /root/.oxibackup
then
    _echo "Failed to create link to backup user data directory"
    exit 1
fi

_echodebug "Done"


###############################################
# DOWNLOAD BINARIES
###############################################

_echodebug "Downloading binaries..."

ARCH=$(uname -m)

if ! curl "$BIN_FILES_URL/$ARCH/oxibackupd" -o "$OXIBACKUP_SUB_DIR/bin/oxibackupd" > /dev/null 2>&1
then
    if [ "$SYNOPKG_DSM_LANGUAGE" = "fre" ]
    then
        _echo "Erreur lors du téléchargement de l'agent de sauvegarde Oxibox"
    else
        _echo "Error trying to download Oxibox backup agent"
    fi
    exit 1
fi
chmod 755 "$OXIBACKUP_SUB_DIR/bin/oxibackupd"

if ! curl "$BIN_FILES_URL/$ARCH/oxibox-registration" -o "$OXIBACKUP_SUB_DIR/bin/oxibox-registration" > /dev/null 2>&1
then
    if [ "$SYNOPKG_DSM_LANGUAGE" = "fre" ]
    then
        _echo "Erreur lors du téléchargement de l'outil d'enregistrement Oxibox"
    else
        _echo "Error trying to download Oxibox registration tool"
    fi
    exit 1
fi
chmod 755 "$OXIBACKUP_SUB_DIR/bin/oxibox-registration"

ln -sfn "$INSTALL_DIR/bin/oxibox-registration" "/usr/bin/oxibox-registration"

_echodebug "Done"


###############################################
# SERVICE STARTUP
###############################################

_echodebug "Setting service startup scripts..."

mv "$SYNOPKG_PKGDEST/scripts/oxibackup.sh" "/usr/local/etc/rc.d/oxibackup.sh" > /dev/null 2>&1
chmod 755 "/usr/local/etc/rc.d/oxibackup.sh"
# Set destination volume
sed "s|%SYNOPKG_PKGDEST_VOL%|$SYNOPKG_PKGDEST_VOL|" -i "/usr/local/etc/rc.d/oxibackup.sh"

_echodebug "Done"


###############################################
# MACHINE REGISTRATION
###############################################

if [ "$SYNOPKG_PKG_STATUS" = "INSTALL" ]
then
    _echodebug "Registering machine..."

    export OXIBOX_PWD="$OXIBOX_PASSWORD"
    HOME="/root" "$OXIBACKUP_SUB_DIR/bin/oxibox-registration" -u "$OXIBOX_IDUSER" -m "$OXIBOX_IDMAC" --type "nas-synology" -y > /dev/null 2>&1
    REGISTRATION_ECODE=$?
    export OXIBOX_PWD=""

    case $REGISTRATION_ECODE in
        0)
            _echodebug "Done"
        ;;
        40)
            if [ "$SYNOPKG_DSM_LANGUAGE" = "fre" ]
            then
                _echo "Identifiants Oxibox invalides, veuillez recommencer l'installation"
            else
                _echo "Invalid Oxibox credentials, please restart the installation process"
            fi
            exit 1
        ;;
        *)
            if [ "$SYNOPKG_DSM_LANGUAGE" = "fre" ]
            then
                _echo "Une erreur est survenue lors de l'enregistrement de votre machine : code $REGISTRATION_ECODE"
            else
                _echo "An error occurred during machine registration: code $REGISTRATION_ECODE"
            fi
            exit 1
        ;;
    esac
fi


###############################################
# UI INTEGRATION
###############################################

ln -sfn "$SYNOPKG_PKGDEST/ui" "/usr/syno/synoman/webman/3rdparty/Oxibackup" > /dev/null 2>&1


###############################################
# CLEANUP
###############################################

_echodebug "Removing files..."

rm -rf "$SYNOPKG_PKGDEST/scripts" > /dev/null 2>&1
rm -rf "$SYNOPKG_PKGDEST/opt" > /dev/null 2>&1

_echodebug "Done"

if [ "$SYNOPKG_PKG_STATUS" = "INSTALL" ]
then
    if [ "$SYNOPKG_DSM_LANGUAGE" = "fre" ]
    then
        _echosyno "L'agent de sauvegarde Oxibox a été installé sur votre NAS. Vous pouvez configurer votre sauvegarde sur <a href='https://admin.oxibox.eu'>Oxiadmin</a>."
    else
        _echosyno "Oxibox backup agent has been installed on your NAS. You can configure your backup using <a href='https://admin.oxibox.eu'>Oxiadmin</a>."
    fi
fi

exit 0
