488f04d387
Improved error logging and added function handling calls with log and return values Improved check for matching sudo rule
81 lines
3.1 KiB
Bash
Executable File
81 lines
3.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# SPDX-FileCopyrightText: Daniel Pätzold
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
#
|
|
# Central sofwareinstallation script. Should be called from logon-script via sudo and prereserved env
|
|
#
|
|
source $(dirname "$0")/setup_system.inc.sh
|
|
|
|
#Check for root
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo "Error: Script requires root privileges. It should be executed via logon-script and not standalone."
|
|
echo "Press any key to continue" && read -n 1 -s -r && exit 1
|
|
fi
|
|
|
|
#Check Token
|
|
if [ "${DAVTOKEN_USER}." == "." ]; then
|
|
echo "Error: Script cannot be executed standalone, must be run with a matching sudo rule and needs a prereserved environement from logon-script."
|
|
elog_add "A matching sudo rule could look like this: "'^'${SYSCONFIGPATH////'\/'}'\/system_setup\/sync_client_software\.sh.*$'
|
|
elog_add "Hint: the rule must contain the !authenticate and setenv option to work."
|
|
echo "Press any key to continue" && read -n 1 -s -r && exit 1
|
|
fi
|
|
|
|
#Check if Repository is defined
|
|
if [ "${CLIENT_SOFTWARE_DST}." == "." ]; then
|
|
echo "No central softwarerepository defined (CLIENT_SOFTWARE_DST). Skipping sync."
|
|
exit 0
|
|
fi
|
|
|
|
echo "Syncing central softwarerepository ${CLIENT_SOFTWARE_DST}"
|
|
# Create Directory if not existent
|
|
mkdir -p ${CLIENT_SOFTWARE_DST}
|
|
mkdir -p ${CLIENT_SOFTWARE_DST}/source
|
|
|
|
#Logs for systems software-repository go to roots log files
|
|
LOGFILE="${TEMPDIR}/${SCRIPTNAME}.log"
|
|
echo "Logging to File ${LOGFILE}"
|
|
mkdir -p ${TEMPDIR}
|
|
|
|
#Install or update Nextcloud com.nextcloud.desktopclient.nextcloud
|
|
echo "Update or install Nextcloud client"
|
|
/usr/bin/flatpak install -y --or-update --noninteractive flathub com.nextcloud.desktopclient.nextcloud && echo "Done Update/Install of Nextcloud."
|
|
|
|
#Sync Files
|
|
SYNCCMD="sudo -i /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=nextcloudcmd com.nextcloud.desktopclient.nextcloud -h -u ${DAVTOKEN_USER} -p ${DAVTOKEN_PASS} --path ${CLIENT_SOFTWARE_SRC} ${CLIENT_SOFTWARE_DST}/source https://${SERVERFQDN_NC}"
|
|
SYNCCMD_HIDDENPW=$( echo "${SYNCCMD/${DAVTOKEN_PASS}/***HIDDEN***}" )
|
|
chown root:${CLIENTADMINGROUP} -R ${CLIENT_SOFTWARE_DST}
|
|
chmod ug+rw,o-rwx -R ${CLIENT_SOFTWARE_DST}
|
|
echo "Exec: ${SYNCCMD_HIDDENPW}"
|
|
echo "Sync Client Software" > ${LOGFILE}
|
|
echo "====================" >> ${LOGFILE}
|
|
date >> ${LOGFILE}
|
|
echo ${SYNCCMD_HIDDENPW} >> ${LOGFILE}
|
|
echo "" >> ${LOGFILE}
|
|
${SYNCCMD} >> ${LOGFILE} 2>&1
|
|
if [[ $? -ne 0 ]]; then
|
|
echo "Error in sync:"
|
|
echo "****"
|
|
cat ${LOGFILE}
|
|
echo "****"
|
|
echo ""
|
|
echo "Please check if your Token is setup right and for the above Output"
|
|
read -n 1 -s -r -p "Press any key to continue"
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
#Files must be owned by root (we are root!)
|
|
chown root:${CLIENTADMINGROUP} -R ${CLIENT_SOFTWARE_DST}
|
|
chmod ug+rwX,o-rwx -R ${CLIENT_SOFTWARE_DST}
|
|
#Make all install.sh executable
|
|
find ${CLIENT_SOFTWARE_DST} -type f -name install.sh -exec chmod ug+x {} \;
|
|
if [ -f "${CLIENT_SOFTWARE_DST}/install.sh" ]; then
|
|
chmod u+x "${CLIENT_SOFTWARE_DST}/install.sh"
|
|
fi
|
|
echo "Sucessfully synced."
|
|
if [ $1 == "install" ]; then
|
|
${CLIENT_SOFTWARE_DST}/source/install.sh
|
|
if [ $? -ne 0 ]; then
|
|
exit 1
|
|
fi
|
|
fi
|