releasing version 1.6
[macros-openoffice.git] / auf-poste-client-reflets / auf-reflets-tse
1 #! /bin/sh
2 # Script auf-reflets-tse de lancement de connexion Reflets-TSE (Coda)
3 # Copyright © 2007-2008  Agence universitaire de la Francophonie
4 # Autheur : Progfou <jean-christophe.andre@auf.org>
5 # Date de création : juillet 2007
6
7 # extrait de configuration dans /etc/auf-reflets-tse.conf
8 etcconf() {
9   # $1 = nom de l'option, $2 = valeur par défaut
10   option="$1"
11   value="$2"
12   if [ -r /etc/auf-reflets-tse.conf ]
13   then
14     confvalue="`sed -n 's/^'"$option"'="\([^"]*\)"$/\1/p' /etc/auf-reflets-tse.conf`"
15     [ -n "$confvalue" ] && value="$confvalue"
16   fi
17   echo $value
18 }
19
20 # chargement de la configuration en place le cas échéant
21 [ -r "$HOME/.auf/reflets/tse" ] && . "$HOME/.auf/reflets/tse"
22
23 # calcul des options qui n'auraient pas été configurées
24 [ -z "$title"    ] && title="Reflets-TSE (CODA)"
25 [ -z "$geometry" ] && geometry="auto"
26 [ -z "$printer"  ] && printer="auto"
27 [ -z "$machine"  ] && machine=`echo $USERNAME | tr a-z A-Z | tr -dc A-Z0-9`
28 [ -z "$username" ] && username="$USERNAME"
29 [ -z "$domain"   ] && domain="REFLETS"
30 [ -z "$server"   ] && server="reflets-tse.auf"
31 [ -z "$extra"    ] && extra=""
32
33 # autorise les configuration spécifiques à des machines
34 [ "$geometry" = "auto" ] && geometry="`etcconf geometry auto`"
35 [ "$printer" = "auto"  ] && printer="`etcconf printer auto`"
36 extra="$extra `etcconf extra ""`"
37
38 # vérification de la présence d'une licence
39 if [ ! -r "$HOME/.rdesktop/licence.$machine" ]
40 then
41   # licence inexistante => recherche d'une ancienne licence
42   licence="`ls -tr "$HOME/.rdesktop/licence".* | tail -1`"
43   # licence trouvée => on utilise le nom de machine indiqué
44   [ -n "$licence" ] && machine="`basename "$licence" | cut -d. -f2`"
45 fi
46
47 # gestion des changements dans les options de configuration
48 case "$version" in
49   2)
50     # version 2 (version actuelle) => c'est bon, rien de plus à faire
51     ;;
52   1)
53     # version 1 => passer à la version actuelle
54     version=2
55     # migration de l'option de géométrie en « presque plein-écran »
56     [ "$geometry" = "fullscreen" ] && geometry="auto"
57     # forcer la ré-écriture du fichier de configuration
58     rm -f "$HOME/.auf/reflets/tse"
59     ;;
60   *)
61     # pas de version => passer à la version actuelle
62     version=1
63     # forcer les nouvelles options
64     geometry="fullscreen"
65     printer="auto"
66     # forcer la ré-écriture du fichier de configuration
67     rm -f "$HOME/.auf/reflets/tse"
68     ;;
69 esac
70
71 # création d'un fichier de configuration s'il n'y en a pas encore
72 if [ ! -f "$HOME/.auf/reflets/tse" ]
73 then
74   mkdir -p "$HOME/.auf/reflets"
75   cat > "$HOME/.auf/reflets/tse" << __EOF__
76 version="$version"
77 title="$title"
78 geometry="$geometry"
79 printer="$printer"
80 machine="$machine"
81 username="$username"
82 domain="$domain"
83 server="$server"
84 extra="$extra"
85 __EOF__
86 fi
87
88 # calcul de la valeur finale de l'option de géométrie
89 if [ "$geometry" = "auto" ]
90 then
91   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)}'`
92 fi
93 if [ "$geometry" = "fullscreen" ]
94 then
95   geometry="-f"
96 elif [ "$geometry" = "workarea" ]
97 then
98   geometry="-g $geometry -D"
99 else
100   geometry="-g $geometry"
101 fi
102
103 # calcul de la valeur finale de l'option de connexion d'imprimante
104 if [ "$printer" = "auto" ]
105 then
106   printer=`LANG= lpstat -v | sed -n '/cups-pdf:/{s/^.* \([^ ]*\): .*$/\1/p;q}'`
107 fi
108 if [ -n "$printer" ]
109 then
110   printer="-r printer:$printer"
111 else
112   if [ -n "$DISPLAY" -a -x /usr/bin/zenity ]; then
113     zenity --warning --text "Attention : aucune imprimante configurée ! \n"\
114         "\nL'imprimante virtuelle PDF est-elle bien installée ?"
115   else
116     echo "Attention : aucune imprimante configurée !"
117     echo "L'imprimante virtuelle PDF est-elle bien installée ?"
118   fi
119 fi
120
121 # toc-toc-toc
122 ping -c1 "$server" >/dev/null
123
124 # lancement de la connexion RDP
125 rdesktop -T "$title" $geometry $printer -a 8 -z -P -x m \
126         -n "$machine" -u "$username" -d "$domain" $extra "$server"
127 status="$?"
128 [ $status != 0 ] && echo "DEBUG: statut de sortie de rdesktop : $status"
129
130 # en cas de sortie anormale, on écarte la licence utilisée
131 # (note : status=2 en cas de fermeture forcée de la fenêtre)
132 licence="$HOME/.rdesktop/licence.$machine"
133 if [ $status != 0 -a $status != 2 -a -r "$licence" ]
134 then
135   # FIXME: TODO: tester les cas de problèmes de licences
136   echo -n "DEBUG: " \
137   mv "$licence" "$licence"_DISABLED
138 fi
139
140 exit $status