#!/usr/bin/env sh # SPDX-FileCopyrightText: Daniel Pätzold # SPDX-License-Identifier: AGPL-3.0-or-later # # Sofwareinstallation script for Nextcloud Desktop # echo "Setup Nextcloud- Sync" #Check for root if [ "$EUID" -ne 0 ]; then echo "Error: Script requires root. Please check if ${SCRIPTPATH}/${SCRIPTNAME} is in sudoers rules and if you are a member. And if executed via sudo." exit 1 fi #Check Token if [ "${DAVTOKEN_USER}." == "." ]; then echo "Error: Script cannot be executed standalone and needs a prereserved Environment. Quit." exit 1 fi #Check if Option is Configured to use Nextcloud Desktop Data- Sync if [ "${CLIENT_DATA_DST}." == "." ]; then echo "CLIENT_DATA_DST not set, skipping setup of Nextcloud Desktop sync of Data-Directory" exit 0 fi #Local Vars BASECMD="/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=nextcloud com.nextcloud.desktopclient.nextcloud" SYNCCMD="$BASECMD --userid ${DAVTOKEN_USER} --apppassword ${DAVTOKEN_PASS} --localdirpath ${CLIENT_DATA_DST} --remotedirpath ${CLIENT_DATA_SRC} --serverurl https://${SERVERFQDN_NC}" SYNCCMD_HIDDENPW=$( echo "${SYNCCMD/${DAVTOKEN_PASS}/***HIDDEN***}" ) #Check if Nextcloud was already setup if grep -q "localPath=${CLIENT_DATA_DST}" "/${SUDO_HOME}/.var/app/com.nextcloud.desktopclient.nextcloud/config/Nextcloud/nextcloud.cfg"; then SETUP_NEEDED="0" else SETUP_NEEDED="1" fi #Remove Nextcloud from autostart anyway! Must be started by this script manually, because if it was started befor the ecrypted mount, # it will never sync and always throw an error that the local dir is missing if [ -f "$SUDO_HOME/.config/autostart/com.nextcloud.desktopclient.nextcloud.desktop" ]; then echo "Remove Autostart Nextcloud" rm $SUDO_HOME/.config/autostart/com.nextcloud.desktopclient.nextcloud.desktop #Stopping Nextcloud su -c "$BASECMD --quit 1>/dev/null 2>/dev/null" $SUDO_USER sleep 5 fi if [ $SETUP_NEEDED = "0" ]; then echo "Nextcloud was already setup, skipping configure and starting Service" echo "If you want to reset, please delete the Folder [HOME]/.var/app/com.nextcloud.desktopclient.nextcloud manually." echo "Command: rm -rif ~/.var/app/com.nextcloud.desktopclient.nextcloud/" su -c "nohup ${BASECMD} 1>/dev/null 2>/dev/null &" $SUDO_USER exit $? fi #No check for installed Nextcloud needed, because it will be installed by calling script sync_client_software.sh echo "Syncing Files from remote ${CLIENT_DATA_SRC} to local ${CLIENT_DATA_DST}" if [ -d "${CLIENT_DATA_DST}" ]; then echo "Old unsynced Foler ${CLIENT_DATA_DST} was found, renaming to ${CLIENT_DATA_DST}_bak." mv "${CLIENT_DATA_DST}" "${CLIENT_DATA_DST}_bak" fi su -c "mkdir -p ${CLIENT_DATA_DST}" $SUDO_USER #Cleanup Nextcloud Configuration completely, while otherwise, the configure will not work echo "Remove $SUDO_HOME/.var/app/com.nextcloud.desktopclient.nextcloud" rm -rif "$SUDO_HOME/.var/app/com.nextcloud.desktopclient.nextcloud" #echo "Exec as $SUDO_USER: ${SYNCCMD}" echo "Exec as $SUDO_USER: ${SYNCCMD_HIDDENPW}" su -c "${SYNCCMD}" $SUDO_USER if [ $? -ne 0 ]; then echo "=========== !!! ========================" echo "Error: It looks like this did not work!" echo "Please check the above output!" exit 1 fi # Now start Nextcloud su -c "nohup ${BASECMD} 1>/dev/null 2>/dev/null &" $SUDO_USER echo "Done Setup of Nextcloud."