#!/bin/bash
# Script created by Rainer Rössler (roesslerrr-at-web.de)
# License: Free Software (License GPLv3)

# Dieses Script erstellt Links für die Tauschverzeichnisse 
# anhand der Gruppenzugehörigkeit.
# Der Klassenarbeitsbenutzer erhält kein Tauschverzeichnis.

# Konfiguration einlesen für
# Basics zu linuxmuster-clients
. /etc/linuxmuster-client/linuxmuster-client.conf || exit 1 
# Verzeichnis für Einstellungen im Heimatverzeichnis auf dem Server
#. /etc/linuxmuster-client/profile/home-preference.conf || exit 1
# Verzeichnisnamen über Links
. /etc/linuxmuster-client/shares/linkfoldername.conf || exit 1

# Die Variable $HOMEDIR wird übergreifend gesetzt
# daher auskommentiert - zu Testzwecken gesetzt
#HOMEDIR="`pwd`"

# Dieses Script soll nur einmal ausgeführt werden.
# Nur nachdem das Serverhome des Benutzers gemountet wurde,
# sind $USER und $VOLUME identisch, in allen anderen Fällen
# bricht das Script ab - zu Testzwecken auskommentiert.
#if [ $USER != $VOLUME ]; then
#    return 0
#fi

# Wenn Klassenarbeitsaccount benutzt wird (/home/workstations/),
# dann gibt es einen Link auf das Vorlagenverzeichnis für den Raum des Rechners

if [ "`echo $HOMEDIR | grep "/home/workstations"`" != "" ]
then 

# kein Link anlegen
cd ~
 
# kein KA-account angemeldet, d.h. Schüler oder Lehrer ist angemeldet
else
 
 GRUPPEN=""
 
 # Wenn LINKFOLDERTASKS leer ist, werden keine Links für Vorlagen gesetzt.
 if [ $LINKFOLDERSHARE != "" ]; then
  
  NEWLINE=$'\n'
  GRUPPEN1=`getent group | grep "[:,]$USER," | cut -d ":" -f 1`
  GRUPPEN2=`getent group | grep "[:,]$USER$" | cut -d ":" -f 1`
  GRUPPEN="$GRUPPEN1$NEWLINE$GRUPPEN2"
  
#  echo $GRUPPEN > /tmp/gruppen-test
   
  # in GRUPPEN sind alle Gruppen mit Leerzeichen getrennt aufgeführt,
  # in denen der Anzumeldende Mitglied ist.
  # Die Projektgruppen haben ein "p_" am Anfang des Namens.
  # Die Unterklassen haben ein "-A", "-B", "-C" oder "-D" am Ende des Namens.
  
  # Verzeichnisse erstellen in denen Links angelegt werden sollen.
  # Ist das Verzeichnis $HOMEDIR/$LINKFOLDERTASKS nicht vorhanden, 
  # wird es angelegt
  
  if [ -L `echo $HOMEDIR/$LINKFOLDERSHARE` ]
  then
   rm $HOMEDIR/$LINKFOLDERSHARE
  fi
      
  if [ -f `echo $HOMEDIR/$LINKFOLDERSHARE` ]
  then 
   mv $HOMEDIR/$LINKFOLDERSHARE $HOMEDIR/$LINKFOLDERSHARE-entfernt
  fi
  
  # wenn das Verzeichnis schon exisitiert, werden enthaltene Dateien/Links gelöscht
  if [ -d $HOMEDIR/$LINKFOLDERSHARE ]
  then
   rm -f $HOMEDIR/$LINKFOLDERSHARE/tausch*
  else 
   mkdir -p $HOMEDIR/$LINKFOLDERSHARE
   chmod 777 $HOMEDIR/$LINKFOLDERSHARE
  fi
  
 fi


 # Um in den Schleifen Inhalte mit Leerzeichen verarbeiten zu können,
 # die durch das Leerzeichen nicht als getrennte Inhalte interpretiert werden
 # wird folgende Option IFS=$'\012' gesetzt
 IFS=$'\012'
  
 
 # Vorlagen-Verzeichnis aus Gruppenzugehörigkeit
 # Gruppenzugehörigkeiten abarbeiten
 # jeweils LOKAL und SERVER erstellen und Link erzeugen 
 
 for GRMITGLIED in $GRUPPEN; do

  # Der Linkname wird definiert 
  LOKAL=`echo $HOMEDIR/$LINKFOLDERSHARE/tausch-$GRMITGLIED`

  # zunächst wird davon ausgegangen, dass die Gruppe eine Klasse ist
  SERVER=`echo /home/share/classes/$GRMITGLIED`
  
  # eine Gruppe mit -A, -B, -C oder -D am Ende ist eine Unterklasse 
  if [ "`echo $GRMITGLIED | grep "\-[ABCD]$"`" != "" ]
  then  
   SERVER=`echo /home/share/subclasses/$GRMITGLIED`
  fi

  # die Gruppe teachers
  if [ "`echo $GRMITGLIED | grep teachers`" != "" ]
  then  
   SERVER=`echo /home/share/$GRMITGLIED`

   # Der Linkname wird neu definiert 
   LOKAL=`echo $HOMEDIR/$LINKFOLDERSHARE/tausch-$TEACHERS`
  fi

  # eine Gruppe mit p_ am Anfang ist eine Projektgruppe 
  if [ "`echo $GRMITGLIED | grep ^p_`" != "" ]
  then  
   SERVER=`echo /home/share/projects/$GRMITGLIED`
  fi
    
  # Wenn Ziel auf Server NICHT vorhanden, 
  # (weder als Verzeichnis -d noch als Datei -f)
  # wird der Link nicht erzeugt.
  # Eine alte Datei mit dem Namens des Links wird entfernt
  
  if [ -L `echo $LOKAL` ]
  then
   rm $LOKAL
  fi
     
  if [ -d `echo $LOKAL` ]
  then
   mv $LOKAL $LOKAL-entfernt
  fi
   
  if [ -f `echo $LOKAL` ]
  then 
   mv $LOKAL $LOKAL-entfernt
  fi

  if [ -e `echo $SERVER` ]
  then 
   ln -s $SERVER $LOKAL
  fi

#  echo >> /tmp/gruppen-test
#  echo Server $SERVER >> /tmp/gruppen-test
#  echo Lokal $LOKAL >> /tmp/gruppen-test
  
 done


 # schulweites Tauschverzeichnis

 # Der Linkname wird definiert 
 LOKAL=`echo $HOMEDIR/$LINKFOLDERSHARE/tausch-$SCHOOL`

 # das Ziel auf dem Server für das schulweite Tauschverzeichnis
 SERVER=`echo /home/share/school`
  
 # Wenn Ziel auf Server NICHT vorhanden, 
 # (weder als Verzeichnis -d noch als Datei -f)
 # wird der Link nicht erzeugt.
 # Eine alte Datei mit dem Namens des Links wird entfernt
  
 if [ -L `echo $LOKAL` ]
 then
  rm $LOKAL
 fi
     
 if [ -d `echo $LOKAL` ]
 then
  mv $LOKAL $LOKAL-entfernt
 fi
   
 if [ -f `echo $LOKAL` ]
 then 
  mv $LOKAL $LOKAL-entfernt
 fi

 if [ -e `echo $SERVER` ]
 then 
  ln -s $SERVER $LOKAL
 fi

#  echo
#  echo Server $SERVER
#  echo Lokal $LOKAL
 
fi

# Das Script wird nicht mit einem "exit 0" beendet, da es in das Script
# /usr/sbin/linuxmuster-pam-mount includiert ist und dadurch ein exit
# das Hauptscript beenden würde.
