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" |
64 |
local user="${CLASS_ARGV[4]}" |
local user="${CLASS_ARGV[4]}" |
65 |
local domain="${CLASS_ARGV[5]}" |
local domain="${CLASS_ARGV[5]}" |
66 |
local password="${CLASS_ARGV[6]}" |
local password="${CLASS_ARGV[6]}" |
|
local serverlist |
|
|
local server |
|
|
local server_num |
|
|
local icafile |
|
|
local CONFIG |
|
67 |
local i |
local i |
68 |
|
|
69 |
[[ -z ${action} ]] && help_citrix_session && return 1 |
[[ -z ${action} ]] && help_citrix_session && return 1 |
|
[[ -z ${name} ]] && help_citrix_session && return 1 |
|
70 |
|
|
71 |
case "${action}" in |
case "${action}" in |
72 |
add) |
add) |
73 |
|
# requires name |
74 |
|
[[ -z ${name} ]] && help_citrix_session && return 1 |
75 |
# action 'add' need mode too |
# action 'add' need mode too |
76 |
[[ -z ${mode} ]] && help_citrix_session && return 1 |
[[ -z ${mode} ]] && help_citrix_session && return 1 |
77 |
# and session |
# and session |
85 |
*) help_citrix_session && return 1 |
*) help_citrix_session && return 1 |
86 |
esac |
esac |
87 |
|
|
88 |
icafile="${MCORE_CONFIG_PATH}/citrix/ica/${name}.ica" |
# create citrix session file |
89 |
CONFIG="${MROOT}/${icafile}" |
${MCORE_LIBDIR}/citrix-session \ |
90 |
clearconfig |
--add \ |
91 |
|
--name "${name}" \ |
92 |
addconfig '[WFClient]' |
--session "${session}" \ |
93 |
addconfig 'Version=2' |
--mode "${mode}" \ |
94 |
|
--user "${user}" \ |
95 |
serverlist=$(NOCOLORS=true get_citrix_serverlist) |
--domain "${domain}" \ |
96 |
declare -i i=0 |
--password "${password}" |
|
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 |
|
97 |
|
|
98 |
# generate fluxbox menu entry |
# generate fluxbox menu entry |
99 |
set_fluxbox_menuitem add "${name}" "wfica ${icafile}" |
set_fluxbox_menuitem add "${name}" "wfica ${icafile}" |
100 |
;; |
;; |
101 |
|
|
102 |
del) |
del) |
103 |
if [ -f ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica/"${name}".ica ] |
if [[ -n "${name}" ]] |
104 |
then |
then |
105 |
rm ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica/"${name}".ica |
${MCORE_LIBDIR}/citrix-session --del --name "${name}" |
106 |
set_fluxbox_menuitem del "${name}" |
set_fluxbox_menuitem del "${name}" |
107 |
|
else |
108 |
elif [[ -z ${file} ]] |
for i in $(NOCOLORS=true ${MCORE_LIBDIR}/citrix-session --print) |
|
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) |
|
109 |
do |
do |
110 |
rm ${i} |
${MCORE_LIBDIR}/citrix-session --del --name "${i}" |
111 |
set_fluxbox_menuitem del "$(basename ${i} .ica)" |
set_fluxbox_menuitem del "${name}" |
112 |
done |
done |
113 |
fi |
done |
114 |
;; |
;; |
115 |
|
|
116 |
*) help_citrix_session && return 1 ;; |
*) help_citrix_session && return 1 ;; |
120 |
get_citrix_session() |
get_citrix_session() |
121 |
{ |
{ |
122 |
local action="${CLASS_ARGV[0]}" |
local action="${CLASS_ARGV[0]}" |
|
local server="${CLASS_ARGV[1]}" |
|
|
local sessionlist |
|
|
local sessioncount |
|
|
local i |
|
|
local exclude |
|
123 |
|
|
124 |
[[ -z ${action} ]] && help_citrix_serverlist && return 1 |
[[ -z ${action} ]] && help_citrix_serverlist && return 1 |
125 |
|
|
126 |
case "${action}" in |
case "${action}" in |
127 |
print) list_files_in_directory ${MROOT}/${MCORE_CONFIG_PATH}/citrix/ica ;; |
print) citrix-session --print ;; |
128 |
query) |
query) 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 |
|
|
eval sessionlist=( $(eval ${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 |
|
|
;; |
|
129 |
*) help_citrix_session && return 1 ;; |
*) help_citrix_session && return 1 ;; |
130 |
esac |
esac |
131 |
} |
} |
134 |
{ |
{ |
135 |
local action="${CLASS_ARGV[0]}" |
local action="${CLASS_ARGV[0]}" |
136 |
local server="${CLASS_ARGV[1]}" |
local server="${CLASS_ARGV[1]}" |
|
local CONFIG |
|
|
local serverlist |
|
|
local servercount |
|
137 |
local i |
local i |
|
local exclude |
|
138 |
|
|
139 |
[[ -z ${action} ]] && help_citrix_serverlist && return 1 |
[[ -z ${action} ]] && help_citrix_serverlist && return 1 |
140 |
|
|
141 |
case "${action}" in |
case "${action}" in |
142 |
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}" |
|
|
;; |
|
|
|
|
143 |
del) |
del) |
144 |
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} ]] |
|
145 |
then |
then |
146 |
|
${MCORE_LIBDIR}/citrix-serverlist --del --server "${server}" |
147 |
|
else |
148 |
# delete all items |
# delete all items |
149 |
find ${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist -type f | xargs --no-run-if-empty rm |
for i in $(NOCOLORS=true ${MCORE_LIBDIR}/citrix-serverlist --print) |
|
fi |
|
|
;; |
|
|
|
|
|
auto) |
|
|
[[ -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_SERVER_EXCLUDE} ]] |
|
|
then |
|
|
exclude="| grep -v '${PNABROWSE_SERVER_EXCLUDE}'" |
|
|
fi |
|
|
eval serverlist=( $(eval ${MROOT}/${PNABROWSE_EXECUTABLE} -S ${PNABROWSE_CITRIX_BROWSER} ${exclude}) ) |
|
|
servercount="${#serverlist[*]}" |
|
|
for (( i=0; i<servercount; i++)) |
|
150 |
do |
do |
151 |
server="${serverlist[${i}]}" |
${MCORE_LIBDIR}/citrix-serverlist --del --server "${i}" |
|
CONFIG="${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist/${server}" |
|
|
clearconfig |
|
|
addconfig "${server}" |
|
152 |
done |
done |
|
else |
|
|
eecho "'${MROOT}/${PNABROWSE_SERVER_EXCLUDE}' executable not found." |
|
153 |
fi |
fi |
154 |
;; |
;; |
155 |
|
auto) ${MCORE_LIBDIR}/citrix-serverlist --auto ;; |
156 |
*) help_citrix_serverlist && return 1 ;; |
*) help_citrix_serverlist && return 1 ;; |
157 |
esac |
esac |
158 |
} |
} |
160 |
get_citrix_serverlist() |
get_citrix_serverlist() |
161 |
{ |
{ |
162 |
local action="${CLASS_ARGV[0]}" |
local action="${CLASS_ARGV[0]}" |
|
local server="${CLASS_ARGV[1]}" |
|
|
local serverlist |
|
|
local servercount |
|
|
local i |
|
|
local exclude |
|
163 |
|
|
164 |
[[ -z ${action} ]] && help_citrix_serverlist && return 1 |
[[ -z ${action} ]] && help_citrix_serverlist && return 1 |
165 |
|
|
166 |
case "${action}" in |
case "${action}" in |
167 |
print) |
print) citrix-serverlist --print ;; |
168 |
list_files_in_directory ${MROOT}/${MCORE_CONFIG_PATH}/citrix/serverlist ;; |
query) 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 |
|
|
if [[ -n ${PNABROWSE_SERVER_EXCLUDE} ]] |
|
|
then |
|
|
exclude="| grep -v '${PNABROWSE_SERVER_EXCLUDE}'" |
|
|
fi |
|
|
eval serverlist=( $(eval ${MROOT}/${PNABROWSE_EXECUTABLE} -S ${PNABROWSE_CITRIX_BROWSER} ${exclude}) ) |
|
|
servercount="${#serverlist[*]}" |
|
|
for (( i=0; i<servercount; i++)) |
|
|
do |
|
|
rvecho -n "${serverlist[${i}]};" |
|
|
done |
|
|
rvecho |
|
|
else |
|
|
eecho "'${MROOT}/${PNABROWSE_EXECUTABLE}' executable not found." |
|
|
fi |
|
|
;; |
|
169 |
*) help_citrix_session && return 1 ;; |
*) help_citrix_session && return 1 ;; |
170 |
esac |
esac |
171 |
} |
} |