-#! /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
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
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"