Magellan Linux

Contents of /mcore-src/trunk/mcore-tools/src/modules/citrix/citrix-session.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2272 - (show annotations) (download)
Tue Jan 14 13:20:35 2014 UTC (10 years, 3 months ago) by niro
File size: 2893 byte(s)
-split citrix.client.class.in to single programs named citrix-serverlist, citrix-session and query-citrix-browser to make things more modular and simpler
1 #!/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 serverlist=$(print-citrix-serverlist)
54 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