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

# Dieses Script erstellt Links für die Vorlagenverzeichnisse 
# anhand der Gruppenzugehörigkeit.
# Der Klassenarbeitsbenutzer erhält nur das Vrolagenverzeichnis für den Raum.

# 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 
 
 #RECHNERRAUM=`hostname | tr [:upper:] [:lower:] `
 #RAUM=${RECHNERRAUM%%$TRENNER*}
 RAUM=`echo $HOMEDIR | cut -d "/" -f 4`

 SERVER=`echo /var/cache/sophomorix/tasks/rooms/$RAUM`
 LOKAL=`echo $HOMEDIR/$LINKFOLDERTASKS`
 
 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
 
# 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 [ $LINKFOLDERTASKS != "" ]; 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/$LINKFOLDERTASKS` ]
  then
   rm $HOMEDIR/$LINKFOLDERTASKS
  fi
      
  if [ -f `echo $HOMEDIR/$LINKFOLDERTASKS` ]
  then 
   mv $HOMEDIR/$LINKFOLDERTASKS $HOMEDIR/$LINKFOLDERTASKS-entfernt
  fi
  
  # wenn das Verzeichnis schon exisitiert, werden enthaltene Dateien/Links gelöscht
  if [ -d $HOMEDIR/$LINKFOLDERTASKS ]
  then
   rm -f $HOMEDIR/$LINKFOLDERTASKS/vorlagen*
  else 
   mkdir -p $HOMEDIR/$LINKFOLDERTASKS
   chmod 777 $HOMEDIR/$LINKFOLDERTASKS
  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/$LINKFOLDERTASKS/vorlagen-$GRMITGLIED`

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

  # eine Gruppe mit p_ am Anfang ist eine Projektgruppe 
  if [ "`echo $GRMITGLIED | grep ^p_`" != "" ]
  then  
   SERVER=`echo /var/cache/sophomorix/tasks/projects/$GRMITGLIED`
  fi
    
  # das Vorlagenverzeichnis der Lehrer wird nicht verbunden
  # ansonsten muss man den Pfad entsprechend korrigieren
  
  # 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
   # echo ln -s $SERVER $LOKAL >> /tmp/gruppen-test
  fi
  
#  echo >> /tmp/gruppen-test
#  echo Server $SERVER >> /tmp/gruppen-test
#  echo Lokal $LOKAL >> /tmp/gruppen-test

 done

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.
