Files
fedora-OEMDRV/client_software/0010_nextcloud_desktopclient/install.sh
T
Daniel Pätzold 488f04d387 Moved local dir to /opt/sys_config
Improved error logging and added function handling calls with log and return values
Improved check for matching sudo rule
2026-03-15 12:44:14 +01:00

80 lines
3.3 KiB
Bash
Executable File

#!/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 - if it was started befor the ecrypted mount, i 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 -ri ~/.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."