#! /bin/sh # Script auf-reflets-tse de lancement de connexion Reflets-TSE (Coda) # Copyright © 2007-2009 Agence universitaire de la Francophonie # Autheur : Progfou # 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="auto" [ -z "$printer" ] && printer="auto" [ -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" 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 => 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 version=1 # forcer les nouvelles options geometry="fullscreen" printer="auto" # forcer la ré-écriture du fichier de configuration rm -f "$HOME/.auf/reflets/tse" ;; esac # création d'un fichier de configuration s'il n'y en a pas encore if [ ! -f "$HOME/.auf/reflets/tse" ] then mkdir -p "$HOME/.auf/reflets" cat > "$HOME/.auf/reflets/tse" << __EOF__ version="$version" title="$title" geometry="$geometry" printer="$printer" 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 | 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 # calcul de la valeur finale de l'option de connexion d'imprimante if [ "$printer" = "auto" ] then printer=`LANG= lpstat -v | sed -n '/cups-pdf:/{s/^.* \([^ ]*\): .*$/\1/p;q}'` fi if [ -n "$printer" ] then printer="-r printer:$printer" else if [ -n "$DISPLAY" -a -x /usr/bin/zenity ]; then zenity --warning --text "Attention : aucune imprimante configurée ! \n"\ "\nL'imprimante virtuelle PDF est-elle bien installée ?" else echo "Attention : aucune imprimante configurée !" echo "L'imprimante virtuelle PDF est-elle bien installée ?" 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 -x m \ -n "$machine" -u "$username" -d "$domain" $extra "$server"