Commit | Line | Data |
---|---|---|
b84b4c5e TN |
1 | #! /bin/sh |
2 | # Script auf-reflets-tse de lancement de connexion Reflets-TSE (Coda) | |
588ad7df | 3 | # Copyright © 2007-2009 Agence universitaire de la Francophonie |
b84b4c5e TN |
4 | # Autheur : Progfou <jean-christophe.andre@auf.org> |
5 | # Date de création : juillet 2007 | |
6 | ||
4684b291 P |
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 | ||
b84b4c5e TN |
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)" | |
ba675450 | 25 | [ -z "$geometry" ] && geometry="auto" |
b84b4c5e | 26 | [ -z "$printer" ] && printer="auto" |
b84b4c5e | 27 | [ -z "$username" ] && username="$USERNAME" |
da40e1bb | 28 | [ -z "$machine" ] && machine=`echo $username | tr a-z A-Z | tr -dc A-Z0-9` |
b84b4c5e TN |
29 | [ -z "$domain" ] && domain="REFLETS" |
30 | [ -z "$server" ] && server="reflets-tse.auf" | |
ba675450 | 31 | [ -z "$extra" ] && extra="" |
b84b4c5e | 32 | |
4684b291 P |
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 | ||
da40e1bb P |
38 | # suppression de la licence si elle vient du serveur AD |
39 | licence="$HOME/.rdesktop/licence.$machine" | |
87e68b52 | 40 | if [ -r "$licence" ] |
4684b291 | 41 | then |
da40e1bb P |
42 | # XXX: la valeur "skip" est empirique (étude de fichiers de licence) |
43 | # TODO: récupérer la valeur "count" à la position 92 (=> skip=91) | |
44 | serveur_licence="`dd bs=1 skip=92 count=4 if="$licence" 2>/dev/null | iconv -f UCS-2BE -t UTF-8`" | |
45 | [ "$serveur_licence" = "AD" ] && rm -f "$licence" | |
4684b291 P |
46 | fi |
47 | ||
b84b4c5e TN |
48 | # gestion des changements dans les options de configuration |
49 | case "$version" in | |
ba675450 P |
50 | 2) |
51 | # version 2 (version actuelle) => c'est bon, rien de plus à faire | |
52 | ;; | |
b84b4c5e | 53 | 1) |
ba675450 P |
54 | # version 1 => passer à la version actuelle |
55 | version=2 | |
56 | # migration de l'option de géométrie en « presque plein-écran » | |
57 | [ "$geometry" = "fullscreen" ] && geometry="auto" | |
58 | # forcer la ré-écriture du fichier de configuration | |
59 | rm -f "$HOME/.auf/reflets/tse" | |
b84b4c5e TN |
60 | ;; |
61 | *) | |
62 | # pas de version => passer à la version actuelle | |
63 | version=1 | |
64 | # forcer les nouvelles options | |
65 | geometry="fullscreen" | |
66 | printer="auto" | |
67 | # forcer la ré-écriture du fichier de configuration | |
68 | rm -f "$HOME/.auf/reflets/tse" | |
69 | ;; | |
70 | esac | |
71 | ||
72 | # création d'un fichier de configuration s'il n'y en a pas encore | |
73 | if [ ! -f "$HOME/.auf/reflets/tse" ] | |
74 | then | |
75 | mkdir -p "$HOME/.auf/reflets" | |
76 | cat > "$HOME/.auf/reflets/tse" << __EOF__ | |
77 | version="$version" | |
78 | title="$title" | |
79 | geometry="$geometry" | |
80 | printer="$printer" | |
81 | machine="$machine" | |
82 | username="$username" | |
83 | domain="$domain" | |
84 | server="$server" | |
ba675450 | 85 | extra="$extra" |
b84b4c5e TN |
86 | __EOF__ |
87 | fi | |
88 | ||
89 | # calcul de la valeur finale de l'option de géométrie | |
90 | if [ "$geometry" = "auto" ] | |
91 | then | |
ba675450 | 92 | 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)}'` |
b84b4c5e TN |
93 | fi |
94 | if [ "$geometry" = "fullscreen" ] | |
95 | then | |
96 | geometry="-f" | |
ba675450 P |
97 | elif [ "$geometry" = "workarea" ] |
98 | then | |
99 | geometry="-g $geometry -D" | |
b84b4c5e TN |
100 | else |
101 | geometry="-g $geometry" | |
102 | fi | |
103 | ||
104 | # calcul de la valeur finale de l'option de connexion d'imprimante | |
105 | if [ "$printer" = "auto" ] | |
106 | then | |
abf03966 | 107 | printer=`LANG= lpstat -v | sed -n '/cups-pdf:/{s/^.* \([^ ]*\): .*$/\1/p;q}'` |
b84b4c5e TN |
108 | fi |
109 | if [ -n "$printer" ] | |
110 | then | |
111 | printer="-r printer:$printer" | |
112 | else | |
76a6b671 P |
113 | if [ -n "$DISPLAY" -a -x /usr/bin/zenity ]; then |
114 | zenity --warning --text "Attention : aucune imprimante configurée ! \n"\ | |
115 | "\nL'imprimante virtuelle PDF est-elle bien installée ?" | |
116 | else | |
117 | echo "Attention : aucune imprimante configurée !" | |
118 | echo "L'imprimante virtuelle PDF est-elle bien installée ?" | |
119 | fi | |
b84b4c5e TN |
120 | fi |
121 | ||
4684b291 P |
122 | # toc-toc-toc |
123 | ping -c1 "$server" >/dev/null | |
124 | ||
b84b4c5e | 125 | # lancement de la connexion RDP |
da40e1bb | 126 | exec rdesktop -T "$title" $geometry $printer -a 8 -z -P -x m \ |
ba675450 | 127 | -n "$machine" -u "$username" -d "$domain" $extra "$server" |