#!/usr/bin/bash
#
set -eu

if [[ "$CONNECTION_ID" = "VPN-Schule" ]]; then
  USERNAME=$(ps -o pid,user,args -C sddm-helper | sed -nE 's/.*user (.*)$/\1/p')
  USERID=$(id -u "${USERNAME}")
  GROUPID=$(id -g "${USERNAME}")
  KRB5CCNAME=$(ls /tmp/krb5cc_"${USERID}"_*)
  export KRB5CCNAME
  printenv >&2
  if [[ "$NM_DISPATCHER_ACTION" = "up" ]]; then
    # Exit if server is already mounted
    findmnt /srv/samba/schools/default-school > /dev/null && exit 0

    counter=1
    while ! klist -s -c "${KRB5CCNAME}"; do
      (( counter > 30 )) && exit 0
      echo "KRB5-Ticket is expired. Sleep 1 seconds and hope it will be renewed after." >&2
      # if (( counter == 10 )); then
      #   echo "try to renew KRB5-Ticket" >&2
      #   sudo -u "${USERNAME}" kinit -R -c "${KRB5CCNAME}"
      # fi
      sleep 1
      ((counter++))
    done

    echo "prepare mountpoints" >&2
    umask 0002
    mkdir -p /srv/samba/schools/default-school
    chmod 777  /srv/samba/schools/default-school

    mount -t cifs //server/default-school/ /srv/samba/schools/default-school \
          -o "sec=krb5i,cruid=${USERID},user=${USERNAME},uid=${USERID},gid=${GROUPID},file_mode=0700,dir_mode=0700,mfsymlinks,nobrl,actimeo=600,cache=loose,echo_interval=10"
	  echo "after mount" >&2
    SUDO_USER=$USERNAME /usr/local/bin/install-printers.sh
  elif [[ "$NM_DISPATCHER_ACTION" = "pre-down" ]]; then
    # FIXME: Only umount server when Wireguard-Connection was the only connection to server.
    # Dirty fix (works only in fvs-IP-Range)
    if ! (ip r s | grep "10.190." | grep -v wg0); then
      echo "Try to umount server"
      umount /srv/samba/schools/default-school
    fi
  fi
fi
