Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2278 - (hide annotations) (download)
Tue Jan 14 14:37:09 2014 UTC (10 years, 3 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