--- alx-src/branches/alxconf-060/functions/config_sessions.sh 2011/05/09 14:51:55 2001 +++ alx-src/branches/alxconf-060/functions/config_sessions.sh 2011/05/11 09:11:02 2035 @@ -65,6 +65,7 @@ local ses_password local ses_browseradrs local ses_colors + local CONFIG # get settings from database all_ids=$(mysqldo "select id from cfg_sessions where serial='${ALX_SERIAL}'") @@ -90,8 +91,11 @@ esac # write session files - echo '[WFClient]' > ${ALX_ICA_SESSIONS}/${ses_filename} - echo 'Version=2' >> ${ALX_ICA_SESSIONS}/${ses_filename} + CONFIG=${ALX_ICA_SESSIONS}/${ses_filename} + clearconfig + + addconfig '[WFClient]' + addconfig 'Version=2' OLD_IFS="$IFS" IFS=";" declare -i x=0 @@ -102,28 +106,26 @@ # support newer ica-clients: # the first address must be named TcpBrowserAddress, but not TcpBrowserAddress1 !! [[ ${x} -eq 1 ]] && browser_address_num="" - echo "TcpBrowserAddress${browser_address_num}=${server}" >> ${ALX_ICA_SESSIONS}/${ses_filename} + addconfig "TcpBrowserAddress${browser_address_num}=${server}" done IFS="${OLD_IFS}" unset x unset OLD_IFS - echo 'ScreenPercent=0' >> ${ALX_ICA_SESSIONS}/${ses_filename} - - echo '[ApplicationServers]' >> ${ALX_ICA_SESSIONS}/${ses_filename} - echo "${ses_session}=" >> ${ALX_ICA_SESSIONS}/${ses_filename} - - echo "[${ses_session}]" >> ${ALX_ICA_SESSIONS}/${ses_filename} - echo "Address=${ses_session}" >> ${ALX_ICA_SESSIONS}/${ses_filename} - echo "InitialProgram=#${ses_session}" >> ${ALX_ICA_SESSIONS}/${ses_filename} - echo "DesiredColor=${ses_colors}" >> ${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}" >> ${ALX_ICA_SESSIONS}/${ses_filename} - echo "Username=${ses_username}" >> ${ALX_ICA_SESSIONS}/${ses_filename} - echo "Domain=${ses_domain}" >> ${ALX_ICA_SESSIONS}/${ses_filename} - echo 'UseFullScreen=Yes' >> ${ALX_ICA_SESSIONS}/${ses_filename} - echo 'NoWindowManager=True' >> ${ALX_ICA_SESSIONS}/${ses_filename} + addconfig 'ScreenPercent=0' + addconfig '[ApplicationServers]' + addconfig "${ses_session}=" + addconfig "[${ses_session}]" + addconfig "Address=${ses_session}" + addconfig "InitialProgram=#${ses_session}" + addconfig "DesiredColor=${ses_colors}" + addconfig 'TransportDriver=TCP/IP' + addconfig 'WinStationDriver=ICA 3.0' + addconfig "ClearPassword=${ses_password}" + addconfig "Username=${ses_username}" + addconfig "Domain=${ses_domain}" + addconfig 'UseFullScreen=Yes' + addconfig 'NoWindowManager=True' done } @@ -134,6 +136,7 @@ local name local exec local workdir + local CONFIG # very basic getops for i in $* @@ -152,9 +155,10 @@ [ -z "${exec}" ] && return 1 [ -z "${dest}" ] && return 1 - echo "#!/bin/sh" > ${dest} - [ -n "${workdir}" ] && echo "cd ${workdir}" >> ${dest} - echo "exec ${exec}" >> ${dest} + CONFIG=${dest} + addconfig "#!/bin/sh" + [ -n "${workdir}" ] && addconfig "cd ${workdir}" + addconfig "exec ${exec}" chmod 0755 ${dest} } @@ -217,6 +221,7 @@ local iwidth local iheight local deficon + local CONFIG # very basic getops for i in $* @@ -238,36 +243,39 @@ # some sanity checks : # abort if name or command not given - [ -z "${name}" ] && return 1 - [ -z "${command}" ] && return 1 + [[ -z ${name} ]] && return 1 + [[ -z ${command} ]] && return 1 # use some defaults for icon, dest, {x,y}res - [ -z "${xres}" ] && xres=30 - [ -z "${yres}" ] && xres=30 - [ -z "${dest}" ] && dest="${ALX_UNPRIV_HOME}/.xtdesktop/${name}.lnk" - if [ -z "${icon}" ] || [ ! -f "${icon}" ] + [[ -z ${xres} ]] && xres=30 + [[ -z ${yres} ]] && xres=30 + [[ -z ${dest} ]] && dest="${ALX_UNPRIV_HOME}/.xtdesktop/${name}.lnk" + if [[ -z ${icon} ]] || [ ! -f ${icon} ] then # if no default icon is given use default.png - [ -z "${deficon}" ] && deficon="default.png" + [[ -z ${deficon} ]] && deficon="default.png" icon="${ALX_SESSIONS_ICONS}/${deficon}" fi - echo "table Icon" > ${dest} - echo " Type: Program" >> ${dest} - echo " Caption: ${name}" >> ${dest} - echo " Command: ${command}" >> ${dest} - echo " Icon: ${icon}" >> ${dest} - echo " X: ${xres}" >> ${dest} - echo " Y: ${yres}" >> ${dest} + CONFIG=${dest} + clearconfig + + addconfig 'table Icon' + addconfig ' Type: Program' + addconfig " Caption: ${name}" + addconfig " Command: ${command}" + addconfig " Icon: ${icon}" + addconfig " X: ${xres}" + addconfig " Y: ${yres}" # add these only if not zero - if [ -n "${iwidth}" ] && [ -n "${iheight}" ] + if [[ ! -z ${iwidth} ]] && [[ ! -z ${iheight} ]] then - echo " IconWidth: ${iwidth}" >> ${dest} - echo " IconHeight: ${iheight}" >> ${dest} + addconfig " IconWidth: ${iwidth}" + addconfig " IconHeight: ${iheight}" fi - echo "end" >> ${dest} + addconfig 'end' } generate_all_desktop_icons() @@ -317,16 +325,18 @@ for item in ${icon_list} do # abort if empty - [ -z "${item}" ] && continue + [[ -z ${item} ]] && continue # new line if x > xres - if [ ${x} -ge ${xres} ];then + if [ ${x} -ge ${xres} ] + then x=30 y=$((${y} + 80)) fi # new row if y > yres - if [ ${y} -ge ${yres} ];then + if [ ${y} -ge ${yres} ] + then x=$((${x} + 120)) y=30 @@ -357,16 +367,18 @@ for item in ${icon_list} do # abort if empty - [ -z "${item}" ] && continue + [[ -z ${item} ]] && continue # new line if x > xres - if [ ${x} -ge ${xres} ];then + if [ ${x} -ge ${xres} ] + then x=30 y=$((${y} + 80)) fi # new row if y > yres - if [ ${y} -ge ${yres} ];then + if [ ${y} -ge ${yres} ] + then x=$((${x} + 120)) y=30 @@ -430,6 +442,7 @@ local count=${#ALX_SESSIONS[*]} local icon local i + local CONFIG # now setup fluxbox for user station @@ -447,8 +460,9 @@ cat ${ALX_SKELETONS}/fluxbox/apps \ > ${ALX_UNPRIV_HOME}/.fluxbox/apps + CONFIG=${ALX_UNPRIV_HOME}/.fluxbox/apps # add screensaver - if [[ -n ${ALX_SCRN_SAVER} ]] && [[ -n ${ALX_SCRN_TIMEOUT} ]] + if [[ ! -z ${ALX_SCRN_SAVER} ]] && [[ ! -z ${ALX_SCRN_TIMEOUT} ]] then local ALX_PASSWD_CMD @@ -456,53 +470,52 @@ then ALX_PASSWD_CMD="-nolock" else - ALX_PASSWD_CMD="-cpasswd $(openssl passwd ${ALX_SCRN_PASSWD})" + ALX_PASSWD_CMD="-cpasswd $(cryptpw -m des ${ALX_SCRN_PASSWD})" fi - echo "[startup] {nohup xautolock -time ${ALX_SCRN_TIMEOUT} -locker 'xlock -mode ${ALX_SCRN_SAVER} ${ALX_PASSWD_CMD}' > /dev/null &}" \ - >> ${ALX_UNPRIV_HOME}/.fluxbox/apps + addconfig "[startup] {nohup xautolock -time ${ALX_SCRN_TIMEOUT} -locker 'xlock -mode ${ALX_SCRN_SAVER} ${ALX_PASSWD_CMD}' > /dev/null &}" fi # add autostart session - if [[ ${ALX_AUTOSTART} != "" ]] + if [[ ! -z ${ALX_AUTOSTART} ]] then - echo "[startup] {nohup nice -n 19 wfica ${ALX_ICA_SESSIONS}/${ALX_AUTOSTART} &}" \ - >> ${ALX_UNPRIV_HOME}/.fluxbox/apps + addconfig "[startup] {nohup nice -n 19 wfica ${ALX_ICA_SESSIONS}/${ALX_AUTOSTART} &}" fi # fluxbox hotkeys - cat ${ALX_SKELETONS}/fluxbox/keys \ - > ${ALX_UNPRIV_HOME}/.fluxbox/keys + cat ${ALX_SKELETONS}/fluxbox/keys > ${ALX_UNPRIV_HOME}/.fluxbox/keys + + # generate a fluxbox menu + CONFIG=${ALX_UNPRIV_HOME}/.fluxbox/menu + clearconfig # fluxbox menu header - cat ${ALX_SKELETONS}/fluxbox/menu.header \ - > ${ALX_UNPRIV_HOME}/.fluxbox/menu + cat ${ALX_SKELETONS}/fluxbox/menu.header >> ${ALX_UNPRIV_HOME}/.fluxbox/menu # now fix it with proper messages :P local ver="$(< /etc/mageversion)" - sed -i "s:@CHANGEME@:alx-${ver} #${ALX_SERIAL}:g" \ - ${ALX_UNPRIV_HOME}/.fluxbox/menu + sed -i "s:@CHANGEME@:alx-${ver} #${ALX_SERIAL}:g" ${ALX_UNPRIV_HOME}/.fluxbox/menu # add a newline (maybe there is no crlf in the header) - echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu + addconfig # fluxbox menu sessions for (( i=0; i < count; i++ )) do - [ -n "${ALX_SESSIONS[${i}]}" ] && \ - echo "[exec] ($(basename ${ALX_SESSIONS[${i}]} .ica)) {nice -n 19 wfica ${ALX_ICA_SESSIONS}/${ALX_SESSIONS[${i}]}}" \ - >> ${ALX_UNPRIV_HOME}/.fluxbox/menu + if [[ ! -z ${ALX_SESSIONS[${i}]} ]] + then + addconfig "[exec] ($(basename ${ALX_SESSIONS[${i}]} .ica)) {nice -n 19 wfica ${ALX_ICA_SESSIONS}/${ALX_SESSIONS[${i}]}}" + fi done # add other menuitems - get_other_menuitems >> ${ALX_UNPRIV_HOME}/.fluxbox/menu + addconfig $(get_other_menuitems) # fluxbox menu footer - cat ${ALX_SKELETONS}/fluxbox/menu.footer \ - >> ${ALX_UNPRIV_HOME}/.fluxbox/menu + 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 + addconfig # now it's a good time to generate *all* icons :) generate_all_desktop_icons @@ -521,4 +534,3 @@ unset ALX_SCRN_TIMEOUT unset ALX_SCRN_PASSWD } -