#!/bin/bash

LOGIN_FILE="login_inp-net"

tunnel_close() {
  ssh -S ".discover.socket" -O exit ssh.inpt.fr &>/dev/null
  ssh -S ".ldapslave.socket" -O exit ssh.inpt.fr &>/dev/null
  for pid in $(lsof -ti:64389,65389); do kill "$pid" &>/dev/null; done
}

tunnel_start() {
  nohup ssh -f -N -M -S ".discover.socket" -L 64389:discover:389 ssh.inpt.fr -l "$(cat "$LOGIN_FILE")" &>.discover.log
  nohup ssh -f -N -M -S ".ldapslave.socket" -L 65389:ldapslave.enseeiht.fr:389 ssh.inpt.fr -l "$(cat "$LOGIN_FILE")" &>.ldapslave.log
}

# Vérifier que login_inp-net existe
if [ ! -e 'login_inp-net' ]; then
  read -r -p 'Entrez votre pseudo inp-net : ' pseudo
  echo "$pseudo" >login_inp-net
fi

# fermeture d'un tunnel LDAP rémanent
tunnel_close

# création d'un tunnel LDAP
printf "\n${grn}%s${end}\n" "Lancement du tunnel LDAP..."
if ! tunnel_start; then
  printf "${red}%s${end}\n" "La création du tunnel SSH pour accéder au LDAP a échoué" >>/dev/stderr
  tunnel_close
  exit 1
else
  printf "${grn}%s${end}\n" "Tunnel LDAP établi"
fi
