7 |
echo "${var//\ /_}" |
echo "${var//\ /_}" |
8 |
} |
} |
9 |
|
|
10 |
|
sanitize_store() |
11 |
|
{ |
12 |
|
local var="$@" |
13 |
|
echo "$(fix_whitespaces ${var})" | sed -e 's:\::_:g' -e 's:\/:_:g' | tr '[A-Z]' '[a-z]' |
14 |
|
} |
15 |
|
|
16 |
# helper function to create citrix session files |
# helper function to create citrix session files |
17 |
generate_ica_session_file() |
generate_ica_session_file() |
18 |
{ |
{ |
39 |
--domain) shift; ses_domain="$1" ;; |
--domain) shift; ses_domain="$1" ;; |
40 |
--server) shift; ses_browseradrs="$1" ;; |
--server) shift; ses_browseradrs="$1" ;; |
41 |
--colordepth) shift; ses_colors="$1" ;; |
--colordepth) shift; ses_colors="$1" ;; |
42 |
esac |
esac |
43 |
shift |
shift |
44 |
done |
done |
45 |
|
|
65 |
# the first address must be named TcpBrowserAddress, but not TcpBrowserAddress1 !! |
# the first address must be named TcpBrowserAddress, but not TcpBrowserAddress1 !! |
66 |
[[ ${i} -eq 1 ]] && num="" |
[[ ${i} -eq 1 ]] && num="" |
67 |
addconfig "TcpBrowserAddress${num}=${server}" |
addconfig "TcpBrowserAddress${num}=${server}" |
68 |
|
addconfig "HttpBrowserAddress${num}=${server}" |
69 |
done |
done |
70 |
|
|
71 |
addconfig 'ScreenPercent=0' |
addconfig 'ScreenPercent=0' |
92 |
addconfig 'NoWindowManager=True' |
addconfig 'NoWindowManager=True' |
93 |
} |
} |
94 |
|
|
95 |
|
generate_storefront_sh() |
96 |
|
{ |
97 |
|
local server |
98 |
|
local ses_session |
99 |
|
local ses_filename |
100 |
|
local ses_username |
101 |
|
local ses_domain |
102 |
|
local ses_password |
103 |
|
local ses_browseradrs |
104 |
|
local method |
105 |
|
local ses_method |
106 |
|
local name |
107 |
|
|
108 |
|
# very basic getops |
109 |
|
for i in $* |
110 |
|
do |
111 |
|
case $1 in |
112 |
|
--session) shift; ses_session="$1" ;; |
113 |
|
--filename) shift; ses_filename="$1" ;; |
114 |
|
--username) shift; ses_username="$1" ;; |
115 |
|
--password) shift; ses_password="$1" ;; |
116 |
|
--domain) shift; ses_domain="$1" ;; |
117 |
|
--server) shift; ses_browseradrs="$1" ;; |
118 |
|
--method) shift; method="$1" ;; |
119 |
|
esac |
120 |
|
shift |
121 |
|
done |
122 |
|
|
123 |
|
# abort if name, dest or exec not given |
124 |
|
[[ -z ${ses_filename} ]] && return 1 |
125 |
|
[[ -z ${ses_username} ]] && return 1 |
126 |
|
[[ -z ${ses_password} ]] && return 1 |
127 |
|
[[ -z ${ses_domain} ]] && return 1 |
128 |
|
[[ -z ${ses_browseradrs} ]] && return 1 |
129 |
|
|
130 |
|
case "${method}" in |
131 |
|
enumerate) |
132 |
|
ses_method="${method}" |
133 |
|
name="store-enumerate" |
134 |
|
;; |
135 |
|
launch) |
136 |
|
ses_method="${method}" |
137 |
|
name="${ses_session}" |
138 |
|
[[ -z ${ses_session} ]] && return 1 |
139 |
|
;; |
140 |
|
*) echo "generate_storefront_sh(): wrong method given, either 'launch' or 'enumerate' are allowed." |
141 |
|
return 1 |
142 |
|
;; |
143 |
|
esac |
144 |
|
|
145 |
|
generate_program_sh \ |
146 |
|
--name "${name}" \ |
147 |
|
--exec "storefront-resolver" \ |
148 |
|
--param "${method} '${ses_username}' '${ses_password}' '${ses_domain}' '${ses_session}'" \ |
149 |
|
--dest "${ALX_UNPRIV_HOME}/.alxprogs/$(fix_whitespaces ${ses_filename})" \ |
150 |
|
--environment "STORE=${ses_browseradrs}" |
151 |
|
} |
152 |
|
|
153 |
# generates a sh file to start programs |
# generates a sh file to start programs |
154 |
generate_program_sh() |
generate_program_sh() |
155 |
{ |
{ |
169 |
--param|-p) shift; param="$1" ;; |
--param|-p) shift; param="$1" ;; |
170 |
--dest|-d) shift; dest="$1" ;; |
--dest|-d) shift; dest="$1" ;; |
171 |
--workdir|-w) shift; workdir="$1" ;; |
--workdir|-w) shift; workdir="$1" ;; |
172 |
esac |
--environment|-e) shift; environment="$1" ;; |
173 |
|
esac |
174 |
shift |
shift |
175 |
done |
done |
176 |
|
|
181 |
|
|
182 |
CONFIG="${dest}" |
CONFIG="${dest}" |
183 |
addconfig "#!/bin/sh" |
addconfig "#!/bin/sh" |
184 |
[ -n "${workdir}" ] && addconfig "cd ${workdir}" |
[[ -n ${environment} ]] && addconfig "export ${environment}" |
185 |
|
[[ -n ${workdir} ]] && addconfig "cd ${workdir}" |
186 |
addconfig "exec ${exec} ${param}" |
addconfig "exec ${exec} ${param}" |
187 |
|
|
188 |
chmod 0755 "${dest}" |
chmod 0755 "${dest}" |
216 |
--icon-width|-w) shift; iwidth="$1" ;; |
--icon-width|-w) shift; iwidth="$1" ;; |
217 |
--icon-height|-h) shift; iheight="$1" ;; |
--icon-height|-h) shift; iheight="$1" ;; |
218 |
--default-icon) shift; deficon="$1" ;; |
--default-icon) shift; deficon="$1" ;; |
219 |
esac |
esac |
220 |
shift |
shift |
221 |
done |
done |
222 |
|
|
330 |
|
|
331 |
generate_icon \ |
generate_icon \ |
332 |
--name "${cfg_sessions_session}" \ |
--name "${cfg_sessions_session}" \ |
333 |
--command "wfica-launcher ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_sessions_filename})" \ |
--command "${progsh_path}/$(fix_whitespaces ${cfg_sessions_filename})" \ |
334 |
--icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${cfg_sessions_session}).png" \ |
--icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${cfg_sessions_session}).png" \ |
335 |
--dest "${dest}/$(fix_whitespaces ${cfg_sessions_session}).lnk" \ |
--dest "${dest}/$(fix_whitespaces ${cfg_sessions_session}).lnk" \ |
336 |
--xres "${x}" \ |
--xres "${x}" \ |
367 |
generate_icon \ |
generate_icon \ |
368 |
--name "${cfg_other_menuitems_name}" \ |
--name "${cfg_other_menuitems_name}" \ |
369 |
--command "${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})" \ |
--command "${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})" \ |
370 |
--icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${cfg_other_menuitems_name}).png" \ |
--icon "${ALX_SESSIONS_ICONS}/$(fix_whitespaces ${cfg_other_menuitems_icon}).png" \ |
371 |
--dest "${dest}/$(fix_whitespaces ${cfg_other_menuitems_name}).lnk" \ |
--dest "${dest}/$(fix_whitespaces ${cfg_other_menuitems_name}).lnk" \ |
372 |
--xres "${x}" \ |
--xres "${x}" \ |
373 |
--yres "${y}" \ |
--yres "${y}" \ |
504 |
local fbinit |
local fbinit |
505 |
local fbkeys |
local fbkeys |
506 |
local progsh_path |
local progsh_path |
507 |
|
local storefront_enumerate=0 |
508 |
|
local storefront_store |
509 |
|
local _store |
510 |
|
local all_storefront_stores="" |
511 |
|
|
512 |
progsh_path="${ALX_UNPRIV_HOME}/.alxprogs" |
progsh_path="${ALX_UNPRIV_HOME}/.alxprogs" |
513 |
|
|
587 |
fi |
fi |
588 |
done |
done |
589 |
|
|
|
# add autostart session |
|
|
if [[ ! -z ${cfg_autostart_session} ]] |
|
|
then |
|
|
# sleep one second to wait until busybox is fully initialized and the screen is really centered |
|
|
addconfig "[startup] {sleep 1 && wfica-launcher ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_autostart_session}) &}" |
|
|
fi |
|
|
|
|
590 |
# fluxbox hotkeys |
# fluxbox hotkeys |
591 |
if [ -f ${ALX_SKELETONS}/fluxbox/keys ] |
if [ -f ${ALX_SKELETONS}/fluxbox/keys ] |
592 |
then |
then |
608 |
# add a newline (maybe there is no crlf in the header) |
# add a newline (maybe there is no crlf in the header) |
609 |
addconfig |
addconfig |
610 |
|
|
611 |
|
# delete all progs |
612 |
|
[ -d ${progsh_path} ] && rm -rf ${progsh_path} |
613 |
|
install -d ${progsh_path} |
614 |
|
|
615 |
# first generate session files |
# first generate session files |
616 |
for i in ${all_ses_ids} |
for i in ${all_ses_ids} |
617 |
do |
do |
618 |
evaluate_table cfg_sessions "where serial='${ALX_SERIAL}' and id='${i}'" |
evaluate_table cfg_sessions "where serial='${ALX_SERIAL}' and id='${i}'" |
619 |
generate_ica_session_file \ |
|
620 |
--session "${cfg_sessions_session}" \ |
# generate STOREFRONT/PNABROWSE compatible session |
621 |
--filename "$(fix_whitespaces ${cfg_sessions_filename})" \ |
case "${cfg_sessions_browseradrs}" in |
622 |
--username "${cfg_sessions_username}" \ |
"http://"*|"https://"* ) |
623 |
--password "${cfg_sessions_password}" \ |
# run storefront_enumerate on startup to get all available sessions |
624 |
--domain "${cfg_sessions_domain}" \ |
storefront_enumerate=1 |
625 |
--server "${cfg_sessions_browseradrs}" \ |
storefront_store="$(sanitize_store ${cfg_sessions_browseradrs})" |
626 |
--colordepth "${cfg_graphic_depth}" |
store_found=0 |
627 |
|
for _store in ${all_storefront_stores} |
628 |
|
do |
629 |
|
if [[ ${storefront_store} = ${_store} ]] |
630 |
|
then |
631 |
|
store_found=1 |
632 |
|
fi |
633 |
|
done |
634 |
|
if [[ ${store_found} = 0 ]] |
635 |
|
then |
636 |
|
all_storefront_stores="${all_storefront_stores} ${storefront_store}" |
637 |
|
generate_storefront_sh \ |
638 |
|
--method "enumerate" \ |
639 |
|
--filename "store-enumerate_${storefront_store}_.sh" \ |
640 |
|
--username "${cfg_sessions_username}" \ |
641 |
|
--password "${cfg_sessions_password}" \ |
642 |
|
--domain "${cfg_sessions_domain}" \ |
643 |
|
--server "${cfg_sessions_browseradrs}" |
644 |
|
fi |
645 |
|
|
646 |
|
# generate STOREFRONT/PNABROWSE compatible session |
647 |
|
generate_storefront_sh \ |
648 |
|
--method "launch" \ |
649 |
|
--session "${cfg_sessions_session}" \ |
650 |
|
--filename "$(fix_whitespaces ${cfg_sessions_filename})" \ |
651 |
|
--username "${cfg_sessions_username}" \ |
652 |
|
--password "${cfg_sessions_password}" \ |
653 |
|
--domain "${cfg_sessions_domain}" \ |
654 |
|
--server "${cfg_sessions_browseradrs}" |
655 |
|
;; |
656 |
|
*) |
657 |
|
# generate ICA compatible session |
658 |
|
generate_ica_session_file \ |
659 |
|
--session "${cfg_sessions_session}" \ |
660 |
|
--filename "$(fix_whitespaces ${cfg_sessions_filename})" \ |
661 |
|
--username "${cfg_sessions_username}" \ |
662 |
|
--password "${cfg_sessions_password}" \ |
663 |
|
--domain "${cfg_sessions_domain}" \ |
664 |
|
--server "${cfg_sessions_browseradrs}" \ |
665 |
|
--colordepth "${cfg_graphic_depth}" |
666 |
|
# gen prog startup wrapper |
667 |
|
generate_program_sh \ |
668 |
|
--name "$(fix_whitespaces ${cfg_sessions_filename})" \ |
669 |
|
--exec "wfica-launcher" \ |
670 |
|
--param "${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_sessions_filename})" \ |
671 |
|
--dest "${progsh_path}/$(fix_whitespaces ${cfg_sessions_filename})" \ |
672 |
|
"${workdir}" |
673 |
|
;; |
674 |
|
esac |
675 |
|
|
676 |
# fluxbox menusession |
# fluxbox menusession |
677 |
addconfig "[exec] (${cfg_sessions_session}) {wfica-launcher ${ALX_ICA_SESSIONS}/$(fix_whitespaces ${cfg_sessions_filename})}" |
addconfig "[exec] (${cfg_sessions_session}) {${progsh_path}/$(fix_whitespaces ${cfg_sessions_filename})}" |
678 |
done |
done |
679 |
|
if [[ ${storefront_enumerate} = 1 ]] |
680 |
# delete all progs |
then |
681 |
[ -d ${progsh_path} ] && rm -rf ${progsh_path} |
for _store in ${all_storefront_stores} |
682 |
install -d ${progsh_path} |
do |
683 |
|
CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/apps" |
684 |
|
addconfig "[startup] {${progsh_path}/store-enumerate_${_store}_.sh &}" |
685 |
|
done |
686 |
|
fi |
687 |
|
|
688 |
# add other menuitems |
# add other menuitems |
689 |
for i in ${all_other_ids} |
for i in ${all_other_ids} |
709 |
--dest "${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})" \ |
--dest "${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})" \ |
710 |
"${workdir}" |
"${workdir}" |
711 |
|
|
712 |
|
CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/menu" |
713 |
addconfig "[exec] (${cfg_other_menuitems_name}) {${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})} ${cfg_other_menuitems_icon}" |
addconfig "[exec] (${cfg_other_menuitems_name}) {${progsh_path}/$(fix_whitespaces ${cfg_other_menuitems_name})} ${cfg_other_menuitems_icon}" |
714 |
done |
done |
715 |
|
|
744 |
--dest "${progsh_path}/$(fix_whitespaces ${PLUGIN_MENUITEM_NAME})" \ |
--dest "${progsh_path}/$(fix_whitespaces ${PLUGIN_MENUITEM_NAME})" \ |
745 |
"${workdir}" |
"${workdir}" |
746 |
|
|
747 |
|
CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/menu" |
748 |
addconfig "[exec] (${PLUGIN_MENUITEM_NAME}) {${progsh_path}/$(fix_whitespaces ${PLUGIN_MENUITEM_NAME})} ${PLUGIN_MENUITEM_ICON}" |
addconfig "[exec] (${PLUGIN_MENUITEM_NAME}) {${progsh_path}/$(fix_whitespaces ${PLUGIN_MENUITEM_NAME})} ${PLUGIN_MENUITEM_ICON}" |
749 |
fi |
fi |
750 |
|
|
756 |
unset PLUGIN_MENUITEM_ICON |
unset PLUGIN_MENUITEM_ICON |
757 |
done |
done |
758 |
|
|
759 |
|
# add autostart session |
760 |
|
if [[ ! -z ${cfg_autostart_session} ]] |
761 |
|
then |
762 |
|
CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/apps" |
763 |
|
# sleep one second to wait until busybox is fully initialized and the screen is really centered |
764 |
|
addconfig "[startup] {sleep 1 && ${progsh_path}/$(fix_whitespaces ${cfg_autostart_session}) &}" |
765 |
|
fi |
766 |
|
|
767 |
# fluxbox menu footer |
# fluxbox menu footer |
768 |
cat ${ALX_SKELETONS}/fluxbox/menu.footer >> ${ALX_UNPRIV_HOME}/.fluxbox/menu |
CONFIG="${ALX_UNPRIV_HOME}/.fluxbox/menu" |
769 |
|
cat ${ALX_SKELETONS}/fluxbox/menu.footer >> ${CONFIG} |
770 |
# add a newline (maybe there is no crlf in the footer) |
# add a newline (maybe there is no crlf in the footer) |
771 |
addconfig |
addconfig |
772 |
|
|