39 |
mecho " Adds or delets a ICA session." |
mecho " Adds or delets a ICA session." |
40 |
mecho " Available actions:" |
mecho " Available actions:" |
41 |
mecho " add - adds a new ica session" |
mecho " add - adds a new ica session" |
42 |
mecho " del - deletes ica session with file name [file]" |
mecho " del - deletes ica session with name [name]" |
43 |
mecho " if no [file] given, all sessions will be deleted" |
mecho " if no [name] given, all sessions will be deleted" |
44 |
mecho |
mecho |
45 |
mecho " Available modes:" |
mecho " Available modes:" |
46 |
mecho " fullscreen - fullscreen session" |
mecho " fullscreen - fullscreen session" |
57 |
|
|
58 |
set_citrix_session() |
set_citrix_session() |
59 |
{ |
{ |
60 |
local action="$1" |
local action="${CLASS_ARGV[0]}" |
61 |
local name="$2" |
local name="${CLASS_ARGV[1]}" |
62 |
local session="$3" |
local session="${CLASS_ARGV[2]}" |
63 |
local mode="$4" |
local mode="${CLASS_ARGV[3]}" |
64 |
local user="$5" |
local user="${CLASS_ARGV[4]}" |
65 |
local domain="$6" |
local domain="${CLASS_ARGV[5]}" |
66 |
local password="$7" |
local password="${CLASS_ARGV[6]}" |
67 |
local serverlist |
local serverlist="${CLASS_ARGV[7]}" |
|
local server |
|
|
local server_num |
|
|
local icafile |
|
|
local CONFIG |
|
68 |
local i |
local i |
69 |
|
local opts |
70 |
|
|
71 |
[[ -z ${action} ]] && help_citrix_session && return 1 |
[[ -z ${action} ]] && help_citrix_session && return 1 |
|
[[ -z ${name} ]] && help_citrix_session && return 1 |
|
72 |
|
|
73 |
case "${action}" in |
case "${action}" in |
74 |
add) |
add) |
75 |
|
# requires name |
76 |
|
[[ -z ${name} ]] && help_citrix_session && return 1 |
77 |
# action 'add' need mode too |
# action 'add' need mode too |
78 |
[[ -z ${mode} ]] && help_citrix_session && return 1 |
[[ -z ${mode} ]] && help_citrix_session && return 1 |
79 |
# and session |
# and session |
84 |
fullscreen) ;; |
fullscreen) ;; |
85 |
seamless) ;; |
seamless) ;; |
86 |
*x*) ;; |
*x*) ;; |
87 |
*) help_citrix_session && return 1 |
*) help_citrix_session && return 1 ;; |
88 |
esac |
esac |
89 |
|
|
90 |
icafile="${MCORE_CONFIG_PATH}/citrix/ica/${name}.ica" |
if [[ -n ${serverlist} ]] |
91 |
CONFIG="${MROOT}/${icafile}" |
then |
92 |
clearconfig |
opts="--serverlist '${serverlist}'" |
93 |
|
fi |
|
addconfig '[WFClient]' |
|
|
addconfig 'Version=2' |
|
|
|
|
|
serverlist=$(NOCOLORS=true get_citrix_serverlist) |
|
|
declare -i i=0 |
|
|
for server in ${serverlist} |
|
|
do |
|
|
(( i++ )) |
|
|
server_num="${i}" |
|
|
[[ ${i} -eq 1 ]] && server_num="" |
|
|
addconfig "TcpBrowserAddress${server_num}=${server}" |
|
|
done |
|
|
addconfig 'ScreenPercent=0' |
|
|
addconfig '[ApplicationServers]' |
|
|
addconfig "${session}=" |
|
|
addconfig "[${session}]" |
|
|
addconfig "Address=${session}" |
|
|
addconfig "InitialProgram=#${session}" |
|
|
|
|
|
# mapping table xorg -> citrix |
|
|
# citrix 1 = 16 colors |
|
|
# citrix 2 = 256 colors |
|
|
# citrix 4 = 16 bit |
|
|
# citrix 8 = 32 bit |
|
|
# try always 16 bit |
|
|
addconfig "DesiredColor=4" |
|
|
|
|
|
addconfig 'TransportDriver=TCP/IP' |
|
|
addconfig 'WinStationDriver=ICA 3.0' |
|
|
|
|
|
[[ -n ${user} ]] && addconfig "Username=${user}" |
|
|
[[ -n ${domain} ]] && addconfig "Domain=${domain}" |
|
|
[[ -n ${password} ]] && addconfig "ClearPassword=${password}" |
|
|
|
|
|
# use the right display settings |
|
|
case "${mode}" in |
|
|
# fullscreen mode |
|
|
fullscreen) |
|
|
addconfig 'UseFullScreen=Yes' |
|
|
addconfig 'NoWindowManager=True' |
|
|
addconfig "DesiredHRES=65535" |
|
|
addconfig "DesiredVRES=65535" |
|
|
;; |
|
|
# seamless window mode |
|
|
seamless) |
|
|
addconfig 'TWIMode=On' |
|
|
;; |
|
|
# a desired resolution |
|
|
*x*) |
|
|
addconfig "DesiredHRES=${mode%x*}" |
|
|
addconfig "DesiredVRES=${mode#*x}" |
|
|
;; |
|
|
esac |
|
94 |
|
|
95 |
# generate fluxbox menu entry |
# create citrix session file |
96 |
set_fluxbox_menuitem add "${name}" "wfica ${icafile}" |
${MCORE_LIBDIR}/citrix-session \ |
97 |
|
--add \ |
98 |
|
--name "${name}" \ |
99 |
|
--session "${session}" \ |
100 |
|
--mode "${mode}" \ |
101 |
|
--user "${user}" \ |
102 |
|
--domain "${domain}" \ |
103 |
|
--password "${password}" \ |
104 |
|
${opts} |
105 |
;; |
;; |
106 |
|
|
107 |
del) |
del) |
108 |
if [ -f ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica/"${name}".ica ] |
if [[ -n ${name} ]] |
109 |
then |
then |
110 |
rm ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica/"${name}".ica |
${MCORE_LIBDIR}/citrix-session --del --name "${name}" |
111 |
set_fluxbox_menuitem del "${name}" |
else |
112 |
|
for i in $(NOCOLORS=1 ${MCORE_LIBDIR}/citrix-session --print) |
|
elif [[ -z ${file} ]] |
|
|
then |
|
|
# delete all items, needed to loop through every session |
|
|
# or we delete *all* fluxbox menuitem too |
|
|
for i in $(find ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica -type f) |
|
113 |
do |
do |
114 |
rm ${i} |
# basename |
115 |
set_fluxbox_menuitem del "$(basename ${i} .ica)" |
name="${i%.*}" |
116 |
|
${MCORE_LIBDIR}/citrix-session --del --name "${name}" |
117 |
done |
done |
118 |
fi |
fi |
119 |
;; |
;; |
124 |
|
|
125 |
get_citrix_session() |
get_citrix_session() |
126 |
{ |
{ |
127 |
local action="$1" |
local action="${CLASS_ARGV[0]}" |
|
local server="$2" |
|
|
local sessionlist |
|
|
local sessioncount |
|
|
local i |
|
|
local exclude |
|
128 |
|
|
129 |
[[ -z ${action} ]] && help_citrix_serverlist && return 1 |
[[ -z ${action} ]] && help_citrix_serverlist && return 1 |
130 |
|
|
131 |
case "${action}" in |
case "${action}" in |
132 |
print) list_files_in_directory ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica ;; |
print) ${MCORE_LIBDIR}/citrix-session --print ;; |
133 |
query) |
query) ${MCORE_LIBDIR}/citrix-session --query ;; |
|
[[ -n ${PNABROWSE_EXECUTABLE} ]] || eecho "\$PNABROWSE_EXECUTABLE not defined" |
|
|
[[ -n ${PNABROWSE_CITRIX_BROWSER} ]] || eecho "\$PNABROWSE_CITRIX_BROWSER not defined" |
|
|
if [ -x ${MROOT}/${PNABROWSE_EXECUTABLE} ] |
|
|
then |
|
|
if [[ -n ${PNABROWSE_SESSION_EXCLUDE} ]] |
|
|
then |
|
|
exclude="| grep -v '${PNABROWSE_SESSION_EXCLUDE}'" |
|
|
fi |
|
|
sessionlist=( $(${MROOT}/${PNABROWSE_EXECUTABLE} -A "${PNABROWSE_CITRIX_BROWSER}" ${exclude}) ) |
|
|
sessioncount="${#sessionlist[*]}" |
|
|
for (( i=0; i<sessioncount; i++)) |
|
|
do |
|
|
rvecho -n "${sessionlist[${i}]} " |
|
|
done |
|
|
rvecho |
|
|
else |
|
|
eecho "'${MROOT}/${PNABROWSE_EXECUTABLE}' executable not found." |
|
|
fi |
|
|
;; |
|
134 |
*) help_citrix_session && return 1 ;; |
*) help_citrix_session && return 1 ;; |
135 |
esac |
esac |
136 |
} |
} |
137 |
|
|
138 |
set_citrix_serverlist() |
set_citrix_serverlist() |
139 |
{ |
{ |
140 |
local action="$1" |
local action="${CLASS_ARGV[0]}" |
141 |
local server="$2" |
local server="${CLASS_ARGV[1]}" |
|
local CONFIG |
|
|
local serverlist |
|
|
local servercount |
|
142 |
local i |
local i |
|
local exclude |
|
143 |
|
|
144 |
[[ -z ${action} ]] && help_citrix_serverlist && return 1 |
[[ -z ${action} ]] && help_citrix_serverlist && return 1 |
145 |
|
|
146 |
case "${action}" in |
case "${action}" in |
147 |
add) |
add) ${MCORE_LIBDIR}/citrix-serverlist --add --server "${server}" ;; |
|
[[ -z ${server} ]] && help_citrix_serverlist && return 1 |
|
|
CONFIG="${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist/${server}" |
|
|
clearconfig |
|
|
addconfig "${server}" |
|
|
;; |
|
|
|
|
148 |
del) |
del) |
149 |
if [ ! -d ${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist ] |
if [[ -n ${server} ]] |
|
then |
|
|
eecho "'${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist' directory not found." |
|
|
elif [ -f ${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist/${server} ] |
|
|
then |
|
|
rm ${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist/"${server}" |
|
|
elif [[ -z ${server} ]] |
|
150 |
then |
then |
151 |
|
${MCORE_LIBDIR}/citrix-serverlist --del --server "${server}" |
152 |
|
else |
153 |
# delete all items |
# delete all items |
154 |
find ${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist -type f | xargs --no-run-if-empty rm |
for i in $(NOCOLORS=1 ${MCORE_LIBDIR}/citrix-serverlist --print) |
|
fi |
|
|
;; |
|
|
|
|
|
auto) |
|
|
if [ -x ${MROOT}/${PNABROWSE_EXECUTABLE} ] |
|
|
then |
|
|
if [[ -n ${PNABROWSE_SERVER_EXCLUDE} ]] |
|
|
then |
|
|
exclude="| grep -v '${PNABROWSE_SERVER_EXCLUDE}'" |
|
|
fi |
|
|
serverlist=( $(${MROOT}/${PNABROWSE_EXECUTABLE} -S ${PNABROWSE_CITRIX_BROWSER} ${exclude}) ) |
|
|
servercount="${#serverlist[*]}" |
|
|
for (( i=0; i<servercount; i++)) |
|
155 |
do |
do |
156 |
server="${serverlist[${i}]}" |
${MCORE_LIBDIR}/citrix-serverlist --del --server "${i}" |
|
CONFIG="${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist/${server}" |
|
|
clearconfig |
|
|
addconfig "${server}" |
|
157 |
done |
done |
|
else |
|
|
eecho "'${MROOT}/${PNABROWSE_SERVER_EXCLUDE}' executable not found." |
|
158 |
fi |
fi |
159 |
;; |
;; |
160 |
|
auto) ${MCORE_LIBDIR}/citrix-serverlist --auto ;; |
161 |
*) help_citrix_serverlist && return 1 ;; |
*) help_citrix_serverlist && return 1 ;; |
162 |
esac |
esac |
163 |
} |
} |
164 |
|
|
165 |
get_citrix_serverlist() |
get_citrix_serverlist() |
166 |
{ |
{ |
167 |
local action="$1" |
local action="${CLASS_ARGV[0]}" |
|
local server="$2" |
|
|
local serverlist |
|
|
local servercount |
|
|
local i |
|
|
local exclude |
|
168 |
|
|
169 |
[[ -z ${action} ]] && help_citrix_serverlist && return 1 |
[[ -z ${action} ]] && help_citrix_serverlist && return 1 |
170 |
|
|
171 |
case "${action}" in |
case "${action}" in |
172 |
print) |
print) ${MCORE_LIBDIR}/citrix-serverlist --print ;; |
173 |
list_files_in_directory ${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist ;; |
query) ${MCORE_LIBDIR}/citrix-serverlist --query ;; |
|
query) |
|
|
[[ -n ${PNABROWSE_EXECUTABLE} ]] || eecho "\$PNABROWSE_EXECUTABLE not defined" |
|
|
[[ -n ${PNABROWSE_CITRIX_BROWSER} ]] || eecho "\$PNABROWSE_CITRIX_BROWSER not defined" |
|
|
if [ -x ${MROOT}/${PNABROWSE_EXECUTABLE} ] |
|
|
then |
|
|
serverlist=( $(${MROOT}/${PNABROWSE_EXECUTABLE} -S ${PNABROWSE_CITRIX_BROWSER}) ) |
|
|
servercount="${#serverlist[*]}" |
|
|
for (( i=0; i<servercount; i++)) |
|
|
do |
|
|
rvecho -n "${serverlist[${i}]} " |
|
|
done |
|
|
rvecho |
|
|
else |
|
|
eecho "'${MROOT}/${PNABROWSE_EXECUTABLE}' executable not found." |
|
|
fi |
|
|
;; |
|
174 |
*) help_citrix_session && return 1 ;; |
*) help_citrix_session && return 1 ;; |
175 |
esac |
esac |
176 |
} |
} |