forked from obel1x/fedora-OEMDRV
488f04d387
Improved error logging and added function handling calls with log and return values Improved check for matching sudo rule
80 lines
3.3 KiB
Bash
Executable File
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."
|