Magellan Linux

Diff of /alx-src/branches/alxconf-060/functions/config_sessions.sh

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6763 by niro, Tue Jul 21 09:22:02 2015 UTC revision 6780 by niro, Tue Jul 21 14:47:40 2015 UTC
# Line 7  fix_whitespaces() Line 7  fix_whitespaces()
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  {  {
# Line 86  generate_ica_session_file() Line 92  generate_ica_session_file()
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  {  {
# Line 105  generate_program_sh() Line 169  generate_program_sh()
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     --environment|-e)  shift; environment="$1" ;;
173   esac   esac
174   shift   shift
175   done   done
# Line 116  generate_program_sh() Line 181  generate_program_sh()
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}"
# Line 264  generate_all_desktop_icons() Line 330  generate_all_desktop_icons()
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}" \
# Line 438  config_sessions() Line 504  config_sessions()
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    
# Line 517  config_sessions() Line 587  config_sessions()
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
# Line 545  config_sessions() Line 608  config_sessions()
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}
# Line 590  config_sessions() Line 709  config_sessions()
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    
# Line 624  config_sessions() Line 744  config_sessions()
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    
# Line 635  config_sessions() Line 756  config_sessions()
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    

Legend:
Removed from v.6763  
changed lines
  Added in v.6780