Annotation of /mcore-src/trunk/mcore-tools/src/modules/citrix/citrix-session.in
Parent Directory | Revision Log
Revision 2278 -
(hide annotations)
(download)
Tue Jan 14 14:37:09 2014 UTC (10 years, 8 months ago) by niro
File size: 2925 byte(s)
Tue Jan 14 14:37:09 2014 UTC (10 years, 8 months ago) by niro
File size: 2925 byte(s)
-use citrix-serverlist
1 | niro | 2272 | #!/bin/bash |
2 | |||
3 | MCORE_LIBDIR="@@MCORE_LIBDIR@@" | ||
4 | source @@SYSCONFDIR@@/mcore/mcore.conf | ||
5 | source ${MCORE_LIBDIR}/include/common.global.class | ||
6 | |||
7 | ICADIR="${MCORE_CONFIG_PATH}/citrix/ica" | ||
8 | ICASUFFIX="ica" | ||
9 | |||
10 | die() { echo "ERROR: $@"; exit 1; } | ||
11 | |||
12 | # very basic getops | ||
13 | for argv in $* | ||
14 | do | ||
15 | case $1 in | ||
16 | --add|--del|--print|--query) method="${1//--}" ;; | ||
17 | --name) shift; name="$1" ;; | ||
18 | --session) shift; session="$1" ;; | ||
19 | --mode) shift; mode="$1" ;; | ||
20 | --user) shift; user="$1" ;; | ||
21 | --domain) shift; domain="$1" ;; | ||
22 | --password) shift; password="$1" ;; | ||
23 | esac | ||
24 | shift | ||
25 | done | ||
26 | |||
27 | [[ -n ${method} ]] || die "No method given" | ||
28 | |||
29 | case "${method}" in | ||
30 | add) | ||
31 | # requires name | ||
32 | [[ -n ${name} ]] || die "No name given" | ||
33 | # action 'add' requires mode too | ||
34 | [[ -n ${mode} ]] || die "No mode given" | ||
35 | # and session | ||
36 | [[ -n ${session} ]] || die "No session given" | ||
37 | |||
38 | # other sanity checks | ||
39 | case "${mode}" in | ||
40 | fullscreen) ;; | ||
41 | seamless) ;; | ||
42 | *x*) ;; | ||
43 | *) die "unknown mode '${mode}'" | ||
44 | esac | ||
45 | |||
46 | icafile="${ICADIR}/${name}.${ICASUFFIX}" | ||
47 | CONFIG="${MROOT}/${icafile}" | ||
48 | clearconfig | ||
49 | |||
50 | addconfig '[WFClient]' | ||
51 | addconfig 'Version=2' | ||
52 | |||
53 | niro | 2278 | serverlist=$(NOCOLORS=true ${MCORE_LIBDIR}/citrix-serverlist --print) |
54 | niro | 2272 | declare -i i=0 |
55 | for server in ${serverlist} | ||
56 | do | ||
57 | (( i++ )) | ||
58 | server_num="${i}" | ||
59 | [[ ${i} -eq 1 ]] && server_num="" | ||
60 | addconfig "TcpBrowserAddress${server_num}=${server}" | ||
61 | done | ||
62 | addconfig 'ScreenPercent=0' | ||
63 | addconfig '[ApplicationServers]' | ||
64 | addconfig "${session}=" | ||
65 | addconfig "[${session}]" | ||
66 | addconfig "Address=${session}" | ||
67 | addconfig "InitialProgram=#${session}" | ||
68 | |||
69 | # mapping table xorg -> citrix | ||
70 | # citrix 1 = 16 colors | ||
71 | # citrix 2 = 256 colors | ||
72 | # citrix 4 = 16 bit | ||
73 | # citrix 8 = 32 bit | ||
74 | # try always 16 bit | ||
75 | addconfig "DesiredColor=4" | ||
76 | |||
77 | addconfig 'TransportDriver=TCP/IP' | ||
78 | addconfig 'WinStationDriver=ICA 3.0' | ||
79 | |||
80 | [[ -n ${user} ]] && addconfig "Username=${user}" | ||
81 | [[ -n ${domain} ]] && addconfig "Domain=${domain}" | ||
82 | [[ -n ${password} ]] && addconfig "ClearPassword=${password}" | ||
83 | |||
84 | # use the right display settings | ||
85 | case "${mode}" in | ||
86 | # fullscreen mode | ||
87 | fullscreen) | ||
88 | addconfig 'UseFullScreen=Yes' | ||
89 | addconfig 'NoWindowManager=True' | ||
90 | addconfig "DesiredHRES=65535" | ||
91 | addconfig "DesiredVRES=65535" | ||
92 | ;; | ||
93 | # seamless window mode | ||
94 | seamless) | ||
95 | addconfig 'TWIMode=On' | ||
96 | ;; | ||
97 | # a desired resolution | ||
98 | *x*) | ||
99 | addconfig "DesiredHRES=${mode%x*}" | ||
100 | addconfig "DesiredVRES=${mode#*x}" | ||
101 | ;; | ||
102 | esac | ||
103 | ;; | ||
104 | |||
105 | del) | ||
106 | [[ -n ${name} ]] || die "No name given" | ||
107 | if [ -f ${MROOT}/${ICADIR}/"${name}".${ICASUFFIX} ] | ||
108 | then | ||
109 | rm ${MROOT}/${ICADIR}/"${name}".${ICASUFFIX} | ||
110 | else | ||
111 | eecho "No configured session named '${name}' exists." | ||
112 | fi | ||
113 | ;; | ||
114 | |||
115 | print) | ||
116 | list_files_in_directory ${MROOT}/${ICADIR} | ||
117 | ;; | ||
118 | |||
119 | query) | ||
120 | eval sessionlist=( $(${MCORE_LIBDIR}/query-citrix-browser --session) ) | ||
121 | sessioncount="${#sessionlist[*]}" | ||
122 | for (( i=0; i<sessioncount; i++)) | ||
123 | do | ||
124 | rvecho -n "${sessionlist[${i}]};" | ||
125 | done | ||
126 | rvecho | ||
127 | ;; | ||
128 | esac |