# $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_sessions.sh,v 1.6 2005-04-21 08:46:44 niro Exp $ # configures ica-sessions on the host via mysql db settings get_sessions_settings() { local x i all count #all arrays: # -> session1 session2 ... sessionN #get settings from database all=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ "select filename from cfg_sessions where serial='${ALX_SERIAL}'") #"select session from cfg_sessions where serial='${ALX_SERIAL}'") #split'em up and put in an array (only if $all not zero) declare -i i=0 if [ -n "${all}" ] then for x in ${all} do ALX_SESSIONS[${i}]=${x} ((i++)) done count=${i} else count=0 fi export ALX_SESSIONS } get_autostart_settings() { #get settings from database ALX_AUTOSTART=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ "select session from cfg_autostart where serial='${ALX_SERIAL}'") export ALX_SESSIONS } generate_ica_session_files() { local all_ids local i local x local k local server local ses_session local ses_filename local ses_username local ses_domain local ses_password local ses_browseradrs #get settings from database all_ids=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ "select id from cfg_sessions where serial='${ALX_SERIAL}'") declare -i x=0 for i in ${all_ids} do # get settings ses_session[${x}]=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ "select session from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") ses_filename[${x}]=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ "select filename from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") ses_username[${x}]=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ "select username from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") ses_domain[${x}]=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ "select domain from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") ses_password[${x}]=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ "select password from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") ses_browseradrs[${x}]=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ "select browseradrs from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") # write session files echo '[WFClient]' > ${ALX_ICA_SESSIONS}/${ses_filename} echo 'Version=2' >> ${ALX_ICA_SESSIONS}/${ses_filename} OLD_IFS="$IFS" IFS=";" declare -i k=0 for server in ${ses_browseradrs[${x}]} do (( k++ )) echo "TcpBrowserAddress${k}=${server}" >> ${ALX_ICA_SESSIONS}/${ses_filename} done IFS="${OLD_IFS}" unset k unset OLD_IFS echo 'ScreenPercent=0' >> ${ALX_ICA_SESSIONS}/${ses_filename} echo '[ApplicationServers]' >> ${ALX_ICA_SESSIONS}/${ses_filename} echo "${ses_session[${x}]}=" >> ${ALX_ICA_SESSIONS}/${ses_filename} echo "[${ses_session[${x}]}]" >> ${ALX_ICA_SESSIONS}/${ses_filename} echo "Address=${ses_session[${x}]}" >> ${ALX_ICA_SESSIONS}/${ses_filename} echo "InitialProgram=#${ses_session[${x}]}" >> ${ALX_ICA_SESSIONS}/${ses_filename} echo 'DesiredColor=8' >> ${ALX_ICA_SESSIONS}/${ses_filename} echo 'TransportDriver=TCP/IP' >> ${ALX_ICA_SESSIONS}/${ses_filename} echo 'WinStationDriver=ICA 3.0' >> ${ALX_ICA_SESSIONS}/${ses_filename} echo "ClearPassword=${ses_password[${x}]}" >> ${ALX_ICA_SESSIONS}/${ses_filename} echo "Username=${ses_username[${x}]}" >> ${ALX_ICA_SESSIONS}/${ses_filename} echo "Domain=${ses_domain[${x}]}" >> ${ALX_ICA_SESSIONS}/${ses_filename} echo 'UseFullScreen=Yes' >> ${ALX_ICA_SESSIONS}/${ses_filename} echo 'NoWindowManager=True' >> ${ALX_ICA_SESSIONS}/${ses_filename} done (( x++ )) } config_sessions() { # generate ica session files generate_ica_session_files #first of all get the vars get_sessions_settings get_autostart_settings local count=${#ALX_SESSIONS[*]} local icon # DEBUG # declare -i i=0 # echo count=${count} # echo "Number of new sessions: ${count}" # for ((i=0; i < count; i++)) # do # echo "${i} - ${ALX_SESSIONS[${i}]}" # done # now setup fluxbox for user station # create a fresh fluxbox directory [ -d ${ALX_UNPRIV_HOME}/.fluxbox ] && rm -rf ${ALX_UNPRIV_HOME}/.fluxbox install -d ${ALX_UNPRIV_HOME}/.fluxbox # now generate fluxbox config files # fluxbox main config cat ${ALX_SKELETONS}/fluxbox/init \ > ${ALX_UNPRIV_HOME}/.fluxbox/init # fluxbox autostart cat ${ALX_SKELETONS}/fluxbox/apps \ > ${ALX_UNPRIV_HOME}/.fluxbox/apps # add autostart session if [[ ${ALX_AUTOSTART} != "" ]] then echo "[startup] {wfica ${ALX_ICA_SESSIONS}/${ALX_AUTOSTART}}" \ >> ${ALX_UNPRIV_HOME}/.fluxbox/apps fi # fluxbox hotkeys cat ${ALX_SKELETONS}/fluxbox/apps \ > ${ALX_UNPRIV_HOME}/.fluxbox/keys # fluxbox menu header cat ${ALX_SKELETONS}/fluxbox/menu.header \ > ${ALX_UNPRIV_HOME}/.fluxbox/menu # add a newline (maybe there is no crlf in the header) echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu # fluxbox menu sessions for (( i=0; i < count; i++ )) do echo "[exec] ($(basename ${ALX_SESSIONS[${i}]} .ica)) {wfica ${ALX_ICA_SESSIONS}/${ALX_SESSIONS[${i}]}}" \ >> ${ALX_UNPRIV_HOME}/.fluxbox/menu done # fluxbox menu footer cat ${ALX_SKELETONS}/fluxbox/menu.footer \ >> ${ALX_UNPRIV_HOME}/.fluxbox/menu # add a newline (maybe there is no crlf in the footer) echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu # now we generate the desktop icons cat ${ALX_SKELETONS}/idesk/ideskrc \ > ${ALX_UNPRIV_HOME}/.ideskrc # whipe out old stuff and install a fresh directory [ -d ${ALX_UNPRIV_HOME}/.idesktop ] && rm -rf ${ALX_UNPRIV_HOME}/.idesktop install -d ${ALX_UNPRIV_HOME}/.idesktop local name for (( i=0; i < count; i++ )) do name="$(basename ${ALX_SESSIONS[${i}]} .ica)" if [ -f ${ALX_SESSIONS_ICONS}/${name}.png ] then icon="${ALX_SESSIONS_ICONS}/${name}.png" else icon="${ALX_SESSIONS_ICONS}/default.png" fi echo "table Icon Caption: ${name} Command: wfica ${ALX_ICA_SESSIONS}/${name}.ica Icon: ${icon} end" > ${ALX_UNPRIV_HOME}/.idesktop/${name}.lnk done # set correct permissions chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME} chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox chmod 0755 ${ALX_UNPRIV_HOME}/.idesktop chmod 0644 ${ALX_UNPRIV_HOME}/.ideskrc # unset vars unset ALX_SESSIONS }