#!/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." exit 1 fi #Check Token if [ "${DAVTOKEN_USER}." == "." ]; then echo "Error: Script cannot be executed standalone and needs a prereserved environement from logon-script." echo "To get executed without password prompt, use the NOPASSWD rule in sudo. In FreeIPA you can use the sudo-option !authenticate in the sudo rule." echo "Additionally add the sudo command to the rule: ^\/sys_config\/system_setup\/sync_client_software\.sh.*$" 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} 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 fi