De retour de congés...
[macros-openoffice.git] / auf-poste-client-reflets / auf-reflets-tse
index da6a8f7..8a85907 100755 (executable)
@@ -1,25 +1,62 @@
-#! /bin/sh
+#! /bin/bash
 # Script auf-reflets-tse de lancement de connexion Reflets-TSE (Coda)
-# Copyright © 2007-2008  Agence universitaire de la Francophonie
+# Copyright © 2007-2009  Agence universitaire de la Francophonie
 # Autheur : Progfou <jean-christophe.andre@auf.org>
 # Date de création : juillet 2007
 
+# extrait de configuration dans /etc/auf-reflets-tse.conf
+etcconf() {
+  # $1 = nom de l'option, $2 = valeur par défaut
+  option="$1"
+  value="$2"
+  if [ -r /etc/auf-reflets-tse.conf ]
+  then
+    confvalue="`sed -n 's/^'"$option"'="\([^"]*\)"$/\1/p' /etc/auf-reflets-tse.conf`"
+    [ -n "$confvalue" ] && value="$confvalue"
+  fi
+  echo $value
+}
+
 # chargement de la configuration en place le cas échéant
 [ -r "$HOME/.auf/reflets/tse" ] && . "$HOME/.auf/reflets/tse"
 
 # calcul des options qui n'auraient pas été configurées
 [ -z "$title"    ] && title="Reflets-TSE (CODA)"
-[ -z "$geometry" ] && geometry="fullscreen"
+[ -z "$geometry" ] && geometry="auto"
 [ -z "$printer"  ] && printer="auto"
-[ -z "$machine"  ] && machine=`echo $USERNAME | tr a-z A-Z | tr -dc A-Z0-9`
 [ -z "$username" ] && username="$USERNAME"
+[ -z "$machine"  ] && machine=`echo $username | tr a-z A-Z | tr -dc A-Z0-9`
 [ -z "$domain"   ] && domain="REFLETS"
 [ -z "$server"   ] && server="reflets-tse.auf"
+[ -z "$extra"    ] && extra=""
+
+# autorise les configuration spécifiques à des machines
+[ "$geometry" = "auto" ] && geometry="`etcconf geometry auto`"
+[ "$printer" = "auto"  ] && printer="`etcconf printer auto`"
+extra="$extra `etcconf extra ""`"
+
+# suppression de la licence si elle vient du serveur AD
+licence="$HOME/.rdesktop/licence.${machine:0:15}"
+if [ -r "$licence" ]
+then
+  # XXX: la valeur "skip" est empirique (étude de fichiers de licence)
+  # TODO: récupérer la valeur "count" à la position 92 (=> skip=91)
+  serveur_licence="`dd bs=1 skip=92 count=4 if="$licence" 2>/dev/null | iconv -f UCS-2BE -t UTF-8`"
+  [ "$serveur_licence" = "AD" ] && rm -f "$licence"
+fi
 
 # gestion des changements dans les options de configuration
 case "$version" in
+  2)
+    # version 2 (version actuelle) => c'est bon, rien de plus à faire
+    ;;
   1)
-    # version 1 (version actuelle) => c'est bon, rien de plus à faire
+    # version 1 => passer à la version actuelle
+    version=2
+    # migration de l'option de géométrie en « presque plein-écran »
+    [ "$geometry" = "fullscreen" ] && geometry="auto"
+    # forcer la ré-écriture du fichier de configuration
+    rm -f "$HOME/.auf/reflets/tse"
     ;;
   *)
     # pas de version => passer à la version actuelle
@@ -45,17 +82,21 @@ machine="$machine"
 username="$username"
 domain="$domain"
 server="$server"
+extra="$extra"
 __EOF__
 fi
 
 # calcul de la valeur finale de l'option de géométrie
 if [ "$geometry" = "auto" ]
 then
-  geometry=`LANG= xwininfo -root | sed -n 's/  -geometry //p'`
+  geometry=`LANG= xwininfo -root | awk 'BEGIN{w=800;h=600}/Width:/{w=$2}/Height:/{h=$2}END{printf("%sx%s+%s+%s\n",w-10,h-78,0,25)}'`
 fi
 if [ "$geometry" = "fullscreen" ]
 then
   geometry="-f"
+elif [ "$geometry" = "workarea" ]
+then
+  geometry="-g $geometry -D"
 else
   geometry="-g $geometry"
 fi
@@ -78,6 +119,9 @@ else
   fi
 fi
 
+# toc-toc-toc
+ping -c1 "$server" >/dev/null
+
 # lancement de la connexion RDP
-exec rdesktop -T "$title" $geometry $printer -a 8 -z -P \
-               -n "$machine" -u "$username" -d "$domain" "$server"
+exec rdesktop -T "$title" $geometry $printer -a 8 -z -P -x m \
+       -n "$machine" -u "$username" -d "$domain" $extra "$server"