diff --git a/.gitignore b/.gitignore index 8dedf1f..4820ef5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ .Trash* -system_setup/setup_system.conf -system_setup/setup_system.conf.bak -system_setup/skel.tar.zst +config/setup_system.conf +config/setup_system.conf.bak +config/skel.tar.zstd *.kdev4 .kdev4/* diff --git a/system_setup/pack_skel.sh b/config/pack_skel.sh similarity index 73% rename from system_setup/pack_skel.sh rename to config/pack_skel.sh index b7c9210..6b84c00 100755 --- a/system_setup/pack_skel.sh +++ b/config/pack_skel.sh @@ -1,4 +1,6 @@ #!/usr/bin/env sh +# Usage: will make a tar-file from folder skel found in the directory where executed +# If you want to change skel- content, extrakt your skel.tar.zstd to this directory, edit the files and use this script to repack source $(dirname "$0")/setup_system.inc.sh mv skel.tar.zst backup_skel.tar.zst if [ $? -eq 0 ]; then diff --git a/system_setup/setup_system.conf.dist b/config/setup_system.conf.dist similarity index 95% rename from system_setup/setup_system.conf.dist rename to config/setup_system.conf.dist index b72247e..080d6aa 100644 --- a/system_setup/setup_system.conf.dist +++ b/config/setup_system.conf.dist @@ -18,6 +18,10 @@ else fi export FQDN=${HOSTNM}.${DOMAIN} +#Configuration Files - maybe syned with your companyies settings +export DISTCONFIGPATH="/opt/sys_config/config" +export DISTCONFIGPATH_SRC="/Shared/sw_geteilt/client_settings" + #Additional Client-Software- Repository-Folder in Nextcloud (Shared Folder / Systemwide) export CLIENT_SOFTWARE_DST="/opt/sys_config/client_software" # Optional. If you don't have a Folder that should always be synced, leave this empty export CLIENT_SOFTWARE_SRC="/Shared/sw_geteilt/client_software" Set to the Nextcloud directory where the software should come from diff --git a/system_setup/skel.tar.zst b/config/skel.tar.zst similarity index 100% rename from system_setup/skel.tar.zst rename to config/skel.tar.zst diff --git a/config/skel.tar.zst.dist b/config/skel.tar.zst.dist new file mode 100644 index 0000000..4e1d25e Binary files /dev/null and b/config/skel.tar.zst.dist differ diff --git a/system_setup/setup_skel.sh b/system_setup/setup_skel.sh index 7e5b749..f5e9cf5 100755 --- a/system_setup/setup_skel.sh +++ b/system_setup/setup_skel.sh @@ -2,7 +2,8 @@ # Replaces /etc/skel with the contents of skel.tar.zst source $(dirname "$0")/setup_system.inc.sh EXECDIR=$(pwd) -SRCFILE="${SYSCONFIGPATH}/system_setup/skel.tar.zst" +SRCFILE="${SYSCONFIGPATH}/config/skel.tar.zst" +SRCFILEDIST="${SYSCONFIGPATH}/config/skel.tar.zst.dist" #Check for root if [ "$EUID" -ne 0 ]; then @@ -10,6 +11,16 @@ if [ "$EUID" -ne 0 ]; then exit 1 fi +#Check for existing File - if not there, make a copy of the dist-file +if [[ ! -f "${SRCFILE}" ]]; then + echo "No SKEL file was found. Using distributed skel in ${SRCFILEDIST}" + cp "${SRCFILEDIST}" "${SRCFILE}" + if [[ $? -ne 0 ]]; then + echo "Something went wrong, please check Output" + echo "Press any key to continue" && read -n 1 -s -r && exit 1 + fi +fi + cd /etc sudo rm -f -r /etc/skel sudo tar -xf ${SRCFILE} @@ -19,5 +30,6 @@ if [ $? -eq 0 ]; then sudo setfacl -R -m u::rwX,g::rX,o::rX /etc/skel else echo "Something went wrong, please check Output" + echo "Press any key to continue" && read -n 1 -s -r && exit 1 fi cd ${EXECDIR} diff --git a/system_setup/setup_system.inc.sh b/system_setup/setup_system.inc.sh index f90ca51..fa0fa4b 100755 --- a/system_setup/setup_system.inc.sh +++ b/system_setup/setup_system.inc.sh @@ -15,11 +15,11 @@ # fi # return 0 #} -if [ ! -f $(dirname "$0")/setup_system.conf ]; then +if [ ! -f $(dirname "$0")/../config/setup_system.conf ]; then echo "System configuration not found. Please make a copy of setup_system.conf.dist, name it setup_system.conf and check the settings in it before running." echo "Press any key to continue" && read -n 1 -s -r && exit 1 fi -source $(dirname "$0")/setup_system.conf +source $(dirname "$0")/../config/setup_system.conf #Check if the Data- Directory is encrypted check_data_isecrypted() { diff --git a/system_setup/sync_client_software.sh b/system_setup/sync_client_software.sh index 6e60ecf..8e7df4f 100755 --- a/system_setup/sync_client_software.sh +++ b/system_setup/sync_client_software.sh @@ -40,30 +40,57 @@ echo "Update or install Nextcloud client" /usr/bin/flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo /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} https://${SERVERFQDN_NC}" -SYNCCMD_HIDDENPW=$( echo "${SYNCCMD/${DAVTOKEN_PASS}/***HIDDEN***}" ) +#Sync remote Files chown root:${CLIENTADMINGROUP} -R ${SYSCONFIGPATH} chmod ug+rwX,o=rX -R ${SYSCONFIGPATH} -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 +# At first, sync central configs if they are configured to be synced +if [[ ! -z "${DISTCONFIGPATH_SRC}" ]]; then + 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 ${DISTCONFIGPATH_SRC} ${DISTCONFIGPATH} https://${SERVERFQDN_NC}" + SYNCCMD_HIDDENPW=$( echo "${SYNCCMD/${DAVTOKEN_PASS}/***HIDDEN***}" ) + echo "Exec: ${SYNCCMD_HIDDENPW}" + echo "Sync Configuration" > ${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 fi -#Files must be owned by root (we are root!) +# Then, sync all client_software-files +if [[ ! -z "${CLIENT_SOFTWARE_SRC}" ]]; then + 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} https://${SERVERFQDN_NC}" + SYNCCMD_HIDDENPW=$( echo "${SYNCCMD/${DAVTOKEN_PASS}/***HIDDEN***}" ) + 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 +fi + +# After sync again, restore the right to all filles. They must be owned by root, changeable by admingroup and readable by otherusers (we are root, so we can change!) chown root:${CLIENTADMINGROUP} -R ${SYSCONFIGPATH} chmod ug+rwX,o=rX -R ${SYSCONFIGPATH} #Make all install.sh executable @@ -72,6 +99,7 @@ if [ -f "${CLIENT_SOFTWARE_DST}/install.sh" ]; then chmod u+x "${CLIENT_SOFTWARE_DST}/install.sh" fi echo "Sucessfully synced." + #Run Software setup echo "Running Setup of Software" if [ $1 == "install" ]; then