Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2642 - (show annotations) (download)
Thu Oct 8 10:23:56 2015 UTC (8 years, 6 months ago) by niro
File size: 4499 byte(s)
-added autostart option
1 #!/bin/bash
2
3 MCORE_LIBDIR="@@MCORE_LIBDIR@@"
4 source @@SYSCONFDIR@@/mcore/mcore.conf
5 source ${MCORE_LIBDIR}/include/common.global.class
6 source ${MCORE_LIBDIR}/include/daemon.global.class
7
8 ICADIR="${MCORE_CONFIG_PATH}/citrix/ica"
9 ICASUFFIX="ica"
10
11 die() { echo "ERROR: $@"; exit 1; }
12
13 # very basic getops
14 for argv in $*
15 do
16 case $1 in
17 --add|--del|--print|--query) method="${1//--}" ;;
18 --name) shift; name="$1" ;;
19 --session) shift; session="$1" ;;
20 --mode) shift; mode="$1" ;;
21 --user) shift; user="$1" ;;
22 --domain) shift; domain="$1" ;;
23 --password) shift; password="$1" ;;
24 --serverlist) shift; serverlist="$1" ;;
25 --autostart) shift; autostart="$1" ;;
26 esac
27 shift
28 done
29
30 [[ -n ${method} ]] || die "No method given"
31 [[ -n ${autostart} ]] || autostart=0
32
33 case "${method}" in
34 add)
35 # requires name
36 [[ -n ${name} ]] || die "No name given"
37 # action 'add' requires mode too
38 [[ -n ${mode} ]] || die "No mode given"
39 # and session
40 [[ -n ${session} ]] || die "No session given"
41
42 # other sanity checks
43 case "${mode}" in
44 fullscreen) ;;
45 seamless) ;;
46 *x*) ;;
47 *) die "unknown mode '${mode}'"
48 esac
49
50 # add servers from serverlist
51 if [[ -n ${serverlist} ]]
52 then
53 OLD_IFS=$IFS
54 IFS=";"
55 for server in ${serverlist}
56 do
57 ${MCORE_LIBDIR}/citrix-serverlist --add --server "${server}"
58 done
59 IFS=${OLD_IFS}
60 fi
61
62 icafile="${ICADIR}/${name}.${ICASUFFIX}"
63 CONFIG="${MROOT}/${icafile}"
64 clearconfig
65
66 addconfig '[WFClient]'
67 addconfig 'Version=2'
68
69 serverlist=$(NOCOLORS=1 ${MCORE_LIBDIR}/citrix-serverlist --print)
70 declare -i i=0
71 for server in ${serverlist}
72 do
73 (( i++ ))
74 server_num="${i}"
75 [[ ${i} -eq 1 ]] && server_num=""
76 addconfig "TcpBrowserAddress${server_num}=${server}"
77 addconfig "HttpBrowserAddress${server_num}=${server}"
78 done
79 addconfig 'ScreenPercent=0'
80 addconfig '[ApplicationServers]'
81 addconfig "${session}="
82 addconfig "[${session}]"
83 addconfig "Address=${session}"
84 addconfig "InitialProgram=#${session}"
85
86 # mapping table xorg -> citrix
87 # citrix 1 = 16 colors
88 # citrix 2 = 256 colors
89 # citrix 4 = 16 bit
90 # citrix 8 = 32 bit
91 # try always 16 bit
92 addconfig "DesiredColor=4"
93
94 addconfig 'TransportDriver=TCP/IP'
95 addconfig 'WinStationDriver=ICA 3.0'
96
97 [[ -n ${user} ]] && addconfig "Username=${user}"
98 [[ -n ${domain} ]] && addconfig "Domain=${domain}"
99 [[ -n ${password} ]] && addconfig "ClearPassword=${password}"
100
101 # use the right display settings
102 case "${mode}" in
103 # fullscreen mode
104 fullscreen)
105 addconfig 'UseFullScreen=Yes'
106 addconfig 'NoWindowManager=True'
107 addconfig "DesiredHRES=65535"
108 addconfig "DesiredVRES=65535"
109 ;;
110 # seamless window mode
111 seamless)
112 addconfig 'TWIMode=On'
113 ;;
114 # a desired resolution
115 *x*)
116 addconfig "DesiredHRES=${mode%x*}"
117 addconfig "DesiredVRES=${mode#*x}"
118 ;;
119 esac
120
121 if is_provided fluxbox
122 then
123 # generate fluxbox menu entry
124 ${MCORE_LIBDIR}/fluxbox-menuitem --add --name "${name}" --exec "${MCORE_LIBDIR}/launch-ica ${icafile}" &&
125 ${MCORE_LIBDIR}/fluxbox-rebuild-menu
126 # add autostart
127 if [[ ${autostart} = 1 ]]
128 then
129 ${MCORE_LIBDIR}/fluxbox-autostart --add --name "${name}" --exec "${MCORE_LIBDIR}/launch-ica ${icafile}" &&
130 ${MCORE_LIBDIR}/fluxbox-rebuild-autostart
131 fi
132 fi
133 if is_provided idesk
134 then
135 # generate idesk desktop icon
136 ${MCORE_LIBDIR}/idesk-generate-icon-info --add --name "${name}" --command "${MCORE_LIBDIR}/launch-ica ${icafile}" --icon default.png &&
137 ${MCORE_LIBDIR}/idesk-generate-all-desktop-icons
138 fi
139 ;;
140
141 del)
142 [[ -n ${name} ]] || die "No name given"
143 if [ -f ${MROOT}/${ICADIR}/"${name}".${ICASUFFIX} ]
144 then
145 rm ${MROOT}/${ICADIR}/"${name}".${ICASUFFIX}
146 if is_provided fluxbox
147 then
148 ${MCORE_LIBDIR}/fluxbox-menuitem --del --name "${name}" &&
149 ${MCORE_LIBDIR}/fluxbox-rebuild-menu
150 ${MCORE_LIBDIR}/fluxbox-autostart --del --name "${name}" &&
151 ${MCORE_LIBDIR}/fluxbox-rebuild-autostart
152 fi
153 if is_provided idesk
154 then
155 ${MCORE_LIBDIR}/idesk-generate-icon-info --del --name "${name}" &&
156 ${MCORE_LIBDIR}/idesk-generate-all-desktop-icons
157 fi
158 else
159 eecho "No configured session named '${name}' exists."
160 fi
161 ;;
162
163 print)
164 list_files_in_directory ${MROOT}/${ICADIR}
165 ;;
166
167 query)
168 eval sessionlist=( $(${MCORE_LIBDIR}/query-citrix-browser --session) )
169 sessioncount="${#sessionlist[*]}"
170 for (( i=0; i<sessioncount; i++))
171 do
172 rvecho -n "${sessionlist[${i}]};"
173 done
174 rvecho
175 ;;
176 esac