#!/bin/bash
# content_installer for labdoo by thomsen


#for (( c=1; c<=5; c++ ))
#do 
#   echo "Welcome $c times"
#done

sudo rm -f /home/labdoo/jkjkfdjaiewhflk

yad --on-top --width=350 --height=200 --fixed --center --image=info --title="Content-Installer" --info --button="OK" --buttons-layout=center --text-align=left --text="\\n\\n\\nThis script installs labdoo-contents !!!\\n \\nThe contents must be available on a \\n\\nlocal media (e.g. labdoo install-disk ) or\\n \\nin the local network. \\n\\nNeeded paths:\\n \\n /install-disk/wiki-archive/...\\n\\n\\n"  2> /dev/null

#yad --on-top --width=400 --center --image=info --title="Content-Installer" --info --button="OK" --buttons-layout=center --text-align=left --text="\\n\\n\\n\\n\\nThis script installs labdoo-contents !!!\\n \\nThe contents must be available on a \\n\\nlocal media (e.g. labdoo install-disk ) or\\n \\nin the local network."  2> /dev/null


#######   homefolder-cleaning
rm -f /home/labdoo/wikis*
rm -f /home/labdoo/kiwix*
rm -f /home/labdoo/lang*
rm -f /home/labdoo/homepages*
rm -f /home/labdoo/cont_missed
rm -f /home/labdoo/cont_installed
rm -f /home/labdoo/info
rm -f /home/labdoo/cont_inst

yad \
--center \
--on-top \
--image=info \
--borders=30 \
--width=400 \
--info \
--title="Content Installer" \
--form \
--text="\\n " \
--field="Contents to Install :FL" \
--field="      Poweroff After Installation ?:CHK" \
" " "FALSE" > /home/labdoo/cont_inst

#cat /home/labdoo/cont_inst

out1=$?

if [ $out1 == 1 ]
then
echo "Exit"
rm /home/labdoo/cont_inst
exit
fi

cont_list=$(cat /home/labdoo/cont_inst | cut -d"|"  -f 1)
echo "cont_list:"
echo $cont_list
root_path=$(echo $cont_list | rev | cut -d "/" -f 4- | rev)
echo "root_path:"
echo $root_path

content_wikis_path="$root_path/wiki-archive/wikis/"
echo $content_wikis_path
content_kiwix_path="$root_path/wiki-archive/kiwix/wikis/"
echo $content_kiwix_path

poweroff=$(cat /home/labdoo/cont_inst |cut '-d|' -f2)
echo "Poweroff:"
echo $poweroff

# ================= info section

sed -n "/####info/,/^$/p" $cont_list > /home/labdoo/info
sed -i "1d" /home/labdoo/info
info=$(cat /home/labdoo/info )

#cat /home/labdoo/info

if [ -n "$info" ]; then
	yad --on-top --center --image=info --height=280 --width=550  --title="Content-Installer" --info --button="OK" --buttons-layout=center --text "\n Additional Information: \n" --text-align=center --text-info < /home/labdoo/info 2> /dev/null
fi

#rm -f /home/labdoo/info

# ================= info section end

#=======================================================================
#=================install contents =====================================
#==define arrays and variable



loops=$(grep -c "####lang_" $cont_list)

echo $loops
#loops=4

#read -p "Loops"

for ((counter=1 ; counter<=loops ; counter++ )); do
echo $counter
#read -p "Enter"
count=$counter

sed -n "/####lang_$count/,/^$/p" $cont_list > /home/labdoo/lang_1
sed -i "1d" /home/labdoo/lang_1
lang_1=$(cat /home/labdoo/lang_1 )

echo
echo "lang_1 :"
echo $lang_1

sed -n "/####homepages_$count/,/^$/p" $cont_list > /home/labdoo/homepages_1
sed -i "1d" /home/labdoo/homepages_1
homepages_1=$(cat /home/labdoo/homepages_1 )


echo
echo $homepages_1

#read -p "langs and homepages Enter"


sed -n "/####wikis_$count/,/^$/p" $cont_list > /home/labdoo/wikis_1
sed -i "1d" /home/labdoo/wikis_1
mapfile -t wikis_1_ar < /home/labdoo/wikis_1
echo
echo "wikis_1 :"
	for i in ${wikis_1_ar[@]}
	do
		echo $i
	done

#read -p "Wikis"


sed -n "/####kiwix_$count/,/^$/p" $cont_list > /home/labdoo/kiwix_1
sed -i "1d" /home/labdoo/kiwix_1
mapfile -t kiwix_1_ar < /home/labdoo/kiwix_1
echo
echo "kiwix_1 :"
	for i in ${kiwix_1_ar[@]}
	do
		echo $i
	done




#read -p "enter"

##### install contents ##############################################

#unpack wiki content
for i in ${wikis_1_ar[@]}
do
	echo "==========unpack"
	echo $i
	if [ ! -f "$content_wikis_path/$lang_1/$i" ]; then
		echo "$i" >> /home/labdoo/cont_missed
		else
		echo $i >> /home/labdoo/cont_installed
	fi
	tar --use-compress-program="pigz -d" -xvf $content_wikis_path/$lang_1/$i -C /home/labdoo/Public/wikis/$lang_1
done

#read -p "wikis installed ?"


####set firefox homepages prefs
labdoo_folder=$(sudo find /home/labdoo/.mozilla/firefox-esr -type d -name "*default-esr*")
student_folder=$(sudo find /home/student/.mozilla/firefox-esr -type d -name "*default-esr*")

#echo "labdoo-esr-profile: $labdoo_folder"
#homepages=$(sudo cat $labdoo_folder/prefs.js | grep 'user_pref("browser.startup.homepage",' | cut -c 1-39 --complement | rev | cut -c 1-3 --complement | rev )
#echo "homepages: $homepages"
echo "$homepages_1" > /home/labdoo/homepages

cat /home/labdoo/homepages

#read -p "2nd_homepages"

new_homepages=$(cat /home/labdoo/homepages)
#echo $new_homepages
#echo "user_pref('browser.startup.homepage', '$new_homepages');" > /home/labdoo/user.js
#read -p " Enter "
student_folder=$(sudo find /home/student/.mozilla/firefox-esr -type d -name "*default-esr*")
#echo "student-esr-profile: $student_folder"

#sudo cat $student_folder/prefs.js | grep 'user_pref("browser.startup.homepage",' | cut -c 1-39 --complement | rev | cut -c 1-3 --complement | rev
####  s# sets sepatator to "#" , "\" masks quotes
sudo sed -i -e "s#user_pref(\"browser.startup.homepage\",.*#user_pref(\"browser.startup.homepage\", \"$new_homepages\");#" $labdoo_folder/prefs.js
sudo sed -i -e "s#user_pref(\"browser.startup.homepage\",.*#user_pref(\"browser.startup.homepage\", \"$new_homepages\");#" $student_folder/prefs.js



#====================
#copying kiwix wikis

for i in ${kiwix_1_ar[@]}
do
	echo "============copy"
	echo $i
	if [ ! -f $content_kiwix_path/$lang_1/$i ]; then
		echo $i >> /home/labdoo/cont_missed
		else
		echo $i >> /home/labdoo/cont_installed
	fi
	rsync --progress $content_kiwix_path/$lang_1/$i /home/labdoo/Public/kiwix/wikis
done

done

#=======================================================================
#### set permissions to Public folder

# Stefan Abeln 27.8.2015, modified 01.07.2016 , modified by thomsen 07.10.2023
# Set sticky bit on /home/labdoo/Public so that all newly created files or directories will be owned by user and group labdoo and are accessible by labdoo and members of group labdoo
echo "Ensuring that newly created files and directories will be owned by labdoo and belong to group labdoo"
sudo chmod ug+s /home/labdoo/Public
# Set ownership of newly created files and directories to labdoo:labdoo
echo "Correcting possible false ownerships"
sudo chown --recursive labdoo:labdoo /home/labdoo/Public
# Make sure that xowa can be started by student even if he's the first to start xowa
# therefore make sure all files and directories belong to group labdoo and are writable for the group
sudo chmod --recursive a+rw,o-w /home/labdoo/Public/kiwix
# Make /Public also writable to student
sudo chmod --recursive a+rw,o-w /home/labdoo/Public 
# Change to the right permissions for directories and files
# Make "how-to-start" only writable to labdoo
sudo chmod --recursive a+rw,g-w,o-w /home/labdoo/Public/how-to-start 
# Make "manuals" only writable to labdoo
sudo chmod --recursive a+rw,g-w,o-w /home/labdoo/Public/manuals 

# Set rights for folders in /Public right
echo "Ensure that members of group labdoo can enter directories"
sudo find /home/labdoo/Public -type d -exec chmod u=rwx,g=rwx,o=rx {} \;


#read -p " permissions set "


#=======================================================================
#poweroff ?
if [ $poweroff = TRUE ]; then
	echo "Poweroff the device"
	rm -f /home/labdoo/wikis*
	rm -f /home/labdoo/kiwix*
	rm -f /home/labdoo/lang*
	rm -f /home/labdoo/homepages*
	rm -f /home/labdoo/cont_missed
	rm -f /home/labdoo/info
	rm -f /home/labdoo/cont_inst
	rm /home/labdoo/cont_installed
	rm /home/labdoo/loops
	sleep 5
	sudo poweroff
fi

#=======================
# show missing contents

missed=$(cat /home/labdoo/cont_missed)

if [ -n "$missed" ]; then
	yad --on-top --center --width=400 --image=info --title="Content-Installer" --info --button="OK" --buttons-layout=center --text "\n These content-files do not exist: \n" --text-align=center --text-info < /home/labdoo/cont_missed 2> /dev/null
fi

sudo rm /home/labdoo/cont_missed


#=======================================================================
#finished !!!
yad --on-top --height=400 --width=400 --center --image=info --title="Content-Installer" --info --button="OK" --buttons-layout=center --text-align=center --text="\\n   Finished !!! \\n \\n Installed Content : \\n" --text-align=center --text-info < /home/labdoo/cont_installed 2> /dev/null

rm /home/labdoo/cont_installed
rm /home/labdoo/loops


#######   homefolder-cleaning
rm -f /home/labdoo/wikis*
rm -f /home/labdoo/kiwix*
rm -f /home/labdoo/lang*
rm -f /home/labdoo/homepages*
rm -f /home/labdoo/cont_missed
rm -f /home/labdoo/info
rm -f /home/labdoo/cont_inst

