#! /bin/bash
#
# install script fuer maus-sk am Server
# 30.3.2023
# fuer linuxmuster.net 7 Unterstuetzung
#
##################################################################

lmn7=$(dpkg -s linuxmuster-base7 2>&1 | grep Status)

if [[ $lmn7 =~ 'install ok' ]]
then
   echo "#########################################"
   echo "# Install linuxmuster.net 7 client 2021 #"
   echo "#########################################"
   admin="global-admin"
   prgpfad="/srv/samba/schools/default-school/program/"
   pfad="$prgpfad"maus_sk/
   pfad2="$prgpfad"mausdienst/
   etcpfad="/etc/linuxmuster/maus/"
   sbinpfad="/usr/sbin/"
   usrlibpfad="/usr/lib/linuxmuster-maus/"
   initpfad="/etc/init.d/"
   systemdpfad="/etc/systemd/system/"
   wwwpfad="/var/www/"
   common_bat="/var/lib/samba/sysvol/linuxmuster.lan/scripts/default-school/lmn/windows/logon.bat"
   mausdienst_zeile="REM if exist K:\mausdienst\mausdienst.exe start K:\mausdienst\mausdienst.exe"
   desktopclient="maus_sk.desktop2"
   desktopclientopt="maus_sk.desktop1"
   installclient="install-u-c.72"

else
   echo "#########################################"
   echo "# Script benötigt linuxmuster Version 7 #"
   echo "# verwenden Sie eine Vorgängerversion   #"
   echo "# Abbruch                               #"
   echo "#########################################"
   exit 1
fi

##################################################################

if [ "$(id -u)" != "0" ]; then
   echo "###################################"
   echo "# This script must be run as root #"
   echo "###################################"
   exit 1
fi

# apt-get -y openssl
apt-get -y install apg x11vnc

if ! [ -e "$pfad" ]; then
   mkdir -p $pfad
   if ! [[ $lmn7 =~ 'install ok' ]]; then
     if [ -e "$pfad_old"/mini_sk.cfg ]; then
        cp "$pfad_old"/mini_sk.cfg "$pfad"maus_sk.cfg
     fi
     if [ -e "$pfad_old2"/maus.cfg ]; then
        cp "$pfad_old2"/maus.cfg "$pfad"maus_offline.cfg
     fi
     if [ -e "$pfad_old" ]; then
        mv "$pfad_old" "$pfad_old"_old
     fi
     if [ -e "$pfad_old2" ]; then
        mv "$pfad_old2" "$pfad_old2"_old
     fi
   fi
fi

mkdir -p $pfad2
mkdir -p $etcpfad
mkdir -p $wwwpfad
mkdir -p $usrlibpfad

if [ -e "$pfad2"md.pass ] && ! [ -s "$pfad2"md.pass ]; then
    rm "$pfad2"md.pass
    echo "Loesche leere Passwort-Datei md.pass."
fi

if [ -e "$pfad2"md.pass ]; then
  mv -f "$pfad2"md.pass "$etcpfad"md.pass
fi

if [ -e "$pfad2"md.pass.neu ]; then
  rm -f "$pfad2"md.pass.neu
fi

if [ -e "$etcpfad"md.pass ]; then
   echo "#############################################################################"
   echo "# ACHTUNG!                                                                  #"
   echo "# Das md-Passwort md.pass existiert schon, es wird beibehalten.             #"
   echo "# Ein neues Passwort liegt nun unter md.pass.neu. und md.md5.neu            #"
   echo "# Ggf. das bisherige Passwort und md5-Datei umbenennen und ersetzen.        #"
   echo "#############################################################################"
   md5sum "$etcpfad"md.pass | awk -F" " '{print $1}' > "$pfad2"md.md5
   apg -n 1 -m 16 -M c | tr -d "\n" > "$etcpfad"md.pass.neu
   md5sum "$etcpfad"md.pass.neu | awk -F" " '{print $1}' > "$pfad2"md.md5.neu
else
   echo "md-Passwort wird erzeugt ..."
   apg -n 1 -m 16 -M c | tr -d "\n" > "$etcpfad"md.pass
   md5sum "$etcpfad"md.pass | awk -F" " '{print $1}' > "$pfad2"md.md5
fi

if [ -e "$pfad2"md.key ]; then
  rm -f "$pfad2"md.key
fi

# openssl genrsa -out "$etcpfad"md.key 2048
# openssl req -x509 -new -nodes -subj "/C=DE/ST=BW/L=Schule/O=Mausdienst/CN=Mausdienst" -extensions v3_ca -key "$etcpfad"md.key -days 3650 -out "$etcpfad"md.cert -sha512
# cp -f "$etcpfad"md.cert "$pfad2"md.cert

echo "Dateien werden am Server kopiert ..."

if [ -e "$pfad"maus_sk.cfg ]; then
   echo "#############################################################################"
   echo "# ACHTUNG!                                                                  #"
   echo "# Die Konfigurationsdatei maus_sk.cfg existiert schon, sie wird beibehalten.#"
   echo "# Eine neue Konfigurationsdatei liegt nun unter maus_sk.cfg.neu.            #"
   echo "# Ggf. die bisherige Konfigurationsdatei entsprechend anpassen.             #"
   echo "#############################################################################"
   cp maus_sk.cfg "$pfad"maus_sk.cfg.neu
else
   cp maus_sk.cfg $pfad

   myip=$(hostname -i)
   echo "Setze Server-IP auf "$myip
   sed -i "s/ServerIP=.*/ServerIP=$myip/g" "$pfad/maus_sk.cfg"
fi

cp maus_sk $pfad
cp maus_sk.exe $pfad
cp maus_sk.ico $pfad
cp $desktopclient "$pfad"maus_sk.desktop
cp $desktopclientopt "$pfad"maus_sk.o.desktop

cp $installclient "$pfad"install-ubuntu-client.sh
cp openssl.64/libeay32.dll $pfad
cp openssl.64/ssleay32.dll $pfad
cp version $pfad
cp startremmina.sh $pfad
vers=$(sed -n '2p' version)

cp mausdaemon $pfad2
cp mausdaemon.sh $pfad2
cp internetdaemon $pfad2
cp internetdaemon.sh $pfad2
cp mausdaemon.cfg $pfad2
cp sperren.sh $pfad2
cp freigeben.sh $pfad2
cp nachricht.sh $pfad2
cp internet_on.sh $pfad2
cp internet_off.sh $pfad2
cp 50xhost-maussk $pfad2
cp befehl.sh $pfad2
cp url.sh $pfad2
cp closed.xbm $pfad2
cp closed.jpg $pfad2
cp 01_maussk_env.sh $pfad2
cp 01_maussk_rm.sh $pfad2
cp 01_maussk_vnc.sh $pfad2

cp mausdienst.exe $pfad2

if [ -e "$pfad2"mausdienst.cfg ]; then
   cp mausdienst.cfg "$pfad2"mausdienst.cfg.neu
else
   cp mausdienst.cfg $pfad2
fi

cp openssl.32/libeay32.dll $pfad2
cp openssl.32/ssleay32.dll $pfad2
cp winKeyLockHook.dll $pfad2

if [ -e "$common_bat" ]; then
  if ! grep -q 'mausdienst.exe' "$common_bat" ; then
    echo "Login-Script logon.bat wird für Windows angepasst ..."
    echo "" >> $common_bat
    echo "REM ### Mausdienst beim login starten ###" >> $common_bat
    echo "" >> $common_bat
    echo $mausdienst_zeile >> $common_bat
  fi
else
  echo "WARNUNG: Das Login-Script für Windows wurde nicht gefunden, bitte manuell anpassen!"
fi

if [ -e "$pfad2"x11vnc.text ]; then
  mv -f "$pfad2"x11vnc.text "$etcpfad"x11vnc.text
fi

if [ -e "$pfad2"x11vnc.pass ]; then
  mv -f "$pfad2"x11vnc.pass "$etcpfad"x11vnc.pass
fi

touch "$etcpfad"x11vnc.text

cp wol.exe $pfad

cp maussk.html $wwwpfad
cp *.apk $wwwpfad

echo "Zugriffsrechte werden gesetzt ..."
chown -R $admin:teachers $pfad $pfad2
chown -R root:root $etcpfad
chmod -R 640 $etcpfad

chmod -R 750 $pfad
chmod 755 $pfad
chmod -R 755 $pfad2
chmod 640 "$pfad"maus_sk.cfg "$pfad"maus_sk.ico 
chmod 644 "$pfad2"mausdienst.cfg "$pfad2"mausdaemon.cfg "$pfad2"md.md5 
if [ -e "$pfad2"mausdienst.cfg.neu ]; then
  chmod 644 "$pfad2"mausdienst.cfg.neu
fi

if [ -e "$pfad2"md.md5.neu ]; then
  chmod 640 "$pfad2"md.md5.neu
fi
if [ -e "$pfad"maus_sk.cfg.neu ]; then
  chmod 640 "$pfad"maus_sk.cfg.neu
fi

if [ -e "$etcpfad"schukodaemon.cfg ]; then
   echo "#############################################################################"
   echo "# ACHTUNG!                                                                  #"
   echo "# Die Konfigurationsdatei schukodaemon.cfg ex. schon, sie wird beibehalten. #"
   echo "# Eine neue Konfigurationsdatei liegt nun unter schukodaemon.cfg.neu.       #"
   echo "# Ggf. die bisherige Konfigurationsdatei entsprechend anpassen.             #"
   echo "#############################################################################"
   cp schukodaemon.cfg "$etcpfad"schukodaemon.cfg.neu
   chmod 640 "$etcpfad"schukodaemon.cfg.neu
else
   cp schukodaemon.cfg $etcpfad
   chmod 640 "$etcpfad"schukodaemon.cfg
fi

chmod 644 "$wwwpfad"maussk.html "$wwwpfad"*.apk

cp schukodaemon-log /etc/logrotate.d/
chmod 644 /etc/logrotate.d/schukodaemon-log

# echo "Keypaar für die eine optionale ssl-Kommunikation mit server wird erstellt ..."
# openssl genrsa -out "$etcpfad"sk.key 2048
# openssl req -x509 -new -nodes -subj "/C=DE/ST=BW/L=Schule/O=schukodaemon/CN=schukodaemon" -extensions v3_ca -key "$etcpfad"sk.key -days 3650 -out "$etcpfad"sk.cert -sha512

echo "Suche Vorgaengerversionen schukodaemon und stoppe ggf. ..."
killall -e -9 schukodaemon
sleep 2

#cp schukodaemon $sbinpfad
cp schukodaemon.py $usrlibpfad
cp ServerThread.pyc $usrlibpfad
cp ClientThread.pyc $usrlibpfad
cp myconst.pyc $usrlibpfad
cp mybase.pyc $usrlibpfad

cp schukodaemon.service $systemdpfad

echo "systemd-service wird aktiviert ..."

if [ -e "$initpfad"schukodaemon.sh ]; then
  /usr/sbin/update-rc.d schukodaemon.sh remove
  rm "$initpfad"schukodaemon.sh
fi

systemctl enable schukodaemon
systemctl restart schukodaemon

if ! [ -e /usr/bin/apg ]; then
  echo "### Programm apg wurde nicht installiert - Keine Internetzugriff? ###"
fi
if ! [ -e /usr/bin/x11vnc ]; then
  echo "### Programm x11vnc wurde nicht installiert - Keine Internetzugriff? ###"
fi

echo "### Installation maus_sk und schukodaemon beendet ($vers) ###"

exit 0
