--- alx-src/trunk/alxconfig-ng/functions/config_sessions.sh 2005/09/06 07:44:47 324 +++ alx-src/branches/alxconf-060/functions/config_sessions.sh 2011/05/09 14:51:55 2001 @@ -1,4 +1,4 @@ -# $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_sessions.sh,v 1.14 2005-09-06 07:44:47 niro Exp $ +# $Id$ # configures ica-sessions on the host via mysql db settings get_sessions_settings() @@ -9,8 +9,7 @@ # -> 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}'") + all=$(mysqldo "select filename from cfg_sessions where serial='${ALX_SERIAL}'") # split'em up and put in an array (only if $all not zero) declare -i i=0 @@ -27,8 +26,7 @@ fi # get settings from database - ALX_PROGRAMS=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select name from cfg_other_menuitems where serial='${ALX_SERIAL}'") + ALX_PROGRAMS=$(mysqldo "select name from cfg_other_menuitems where serial='${ALX_SERIAL}'") export ALX_SESSIONS export ALX_PROGRAMS @@ -37,17 +35,28 @@ 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}'") + ALX_AUTOSTART=$(mysqldo "select session from cfg_autostart where serial='${ALX_SERIAL}'") export ALX_AUTOSTART } +get_screensaver_settings() +{ + ALX_SCRN_SAVER=$(mysqldo "select screensaver from cfg_screensaver where serial='${ALX_SERIAL}'") + ALX_SCRN_TIMEOUT=$(mysqldo "select timeout from cfg_screensaver where serial='${ALX_SERIAL}'") + ALX_SCRN_PASSWD=$(mysqldo "select password from cfg_screensaver where serial='${ALX_SERIAL}'") + + export ALX_SCRN_SAVER + export ALX_SCRN_TIMEOUT + export ALX_SCRN_PASSWD +} + generate_ica_session_files() { local all_ids local i local x + local browser_address_num local server local ses_session local ses_filename @@ -58,33 +67,21 @@ local ses_colors # 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}'") + all_ids=$(mysqldo "select id from cfg_sessions where serial='${ALX_SERIAL}'") for i in ${all_ids} do # get settings - ses_session=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select session from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") - - ses_filename=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select filename from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") - - ses_username=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select username from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") - - ses_domain=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select domain from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") - - ses_password=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select password from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") - - ses_browseradrs=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select browseradrs from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") + ses_session=$(mysqldo "select session from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") + ses_filename=$(mysqldo "select filename from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") + ses_username=$(mysqldo "select username from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") + ses_domain=$(mysqldo "select domain from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") + ses_password=$(mysqldo "select password from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") + ses_browseradrs=$(mysqldo "select browseradrs from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") # get the right colors - ses_colors=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select depth from cfg_graphic where serial='${ALX_SERIAL}'") + ses_colors=$(mysqldo "select depth from cfg_graphic where serial='${ALX_SERIAL}'") + # convert to ica session file values case ${ses_colors} in 24) ses_colors="8";; 16) ses_colors="4";; @@ -101,17 +98,21 @@ for server in ${ses_browseradrs} do (( x++ )) - echo "TcpBrowserAddress${x}=${server}" >> ${ALX_ICA_SESSIONS}/${ses_filename} + browser_address_num="${x}" + # 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} 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} @@ -183,24 +184,13 @@ unset workdir unset icon - name=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select name from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'") - - exec=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select exec from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'") - - workdir=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select workdir from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'") - - icon=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select icon from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'") - - # debug only - #echo "DEBUG: ${x}: name:'${name}' exec:'${exec}' workdir:'${workdir}' ic$ + name=$(mysqldo "select name from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'") + exec=$(mysqldo "select exec from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'") + workdir=$(mysqldo "select workdir from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'") + icon=$(mysqldo "select icon from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'") # now echo config line for fluxbox-menu # make it "configureable" :P - #[ -n "${workdir}" ] && workdir="cd ${workdir};" [ -n "${workdir}" ] && workdir="--workdir ${workdir}" [ -n "${icon}" ] && icon="<${icon}>" @@ -252,8 +242,8 @@ [ -z "${command}" ] && return 1 # use some defaults for icon, dest, {x,y}res - [ -z "${xres}" ] && xres=20 - [ -z "${yres}" ] && xres=20 + [ -z "${xres}" ] && xres=30 + [ -z "${yres}" ] && xres=30 [ -z "${dest}" ] && dest="${ALX_UNPRIV_HOME}/.xtdesktop/${name}.lnk" if [ -z "${icon}" ] || [ ! -f "${icon}" ] then @@ -293,8 +283,7 @@ local progsh_path # get the resolution - res=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select resolution from cfg_graphic where serial='${ALX_SERIAL}'") + res=$(mysqldo "select resolution from cfg_graphic where serial='${ALX_SERIAL}'") # split res to x & y xres="$(echo ${res} | cut -dx -f1)" @@ -314,8 +303,8 @@ # default settings - declare -i x=20 - declare -i y=20 + declare -i x=30 + declare -i y=30 # first all ica sessions local count=${#ALX_SESSIONS[*]} @@ -332,25 +321,25 @@ # new line if x > xres if [ ${x} -ge ${xres} ];then - x=20 + x=30 y=$((${y} + 80)) fi # new row if y > yres if [ ${y} -ge ${yres} ];then x=$((${x} + 120)) - y=20 + y=30 # re-check x - [ ${x} -ge ${xres} ] && x=20 + [ ${x} -ge ${xres} ] && x=30 fi # ica icons # get basename (.ica must be suffix) basename_item="$(basename ${item} .ica)" generate_icon \ - --name "${item}" \ - --command "wfica ${ALX_ICA_SESSIONS}/${item}" \ + --name "${basename_item}" \ + --command "nice -n 19 wfica ${ALX_ICA_SESSIONS}/${item}" \ --icon "${ALX_SESSIONS_ICONS}/${basename_item}.png" \ --dest "${ALX_UNPRIV_HOME}/.xtdesktop/${basename_item}.lnk" \ --xres "${x}" \ @@ -372,17 +361,17 @@ # new line if x > xres if [ ${x} -ge ${xres} ];then - x=20 + x=30 y=$((${y} + 80)) fi # new row if y > yres if [ ${y} -ge ${yres} ];then x=$((${x} + 120)) - y=20 + y=30 # re-check x - [ ${x} -ge ${xres} ] && x=20 + [ ${x} -ge ${xres} ] && x=30 fi generate_icon \ @@ -405,8 +394,7 @@ local osversion osversion="$(< /etc/mageversion)" - hostname=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ - "select hostname from cfg_network where serial='${ALX_SERIAL}'") + hostname=$(mysqldo "select hostname from cfg_network where serial='${ALX_SERIAL}'") sysinfo="Hostname: ${hostname} Serial: #${ALX_SERIAL} OS: alx-${osversion} Kernel: $(uname -r)" # now get the right position: @@ -437,20 +425,12 @@ # first of all get the vars get_sessions_settings get_autostart_settings + get_screensaver_settings local count=${#ALX_SESSIONS[*]} local icon local i - # 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 @@ -467,15 +447,31 @@ cat ${ALX_SKELETONS}/fluxbox/apps \ > ${ALX_UNPRIV_HOME}/.fluxbox/apps + # add screensaver + if [[ -n ${ALX_SCRN_SAVER} ]] && [[ -n ${ALX_SCRN_TIMEOUT} ]] + then + local ALX_PASSWD_CMD + + if [[ -z ${ALX_SCRN_PASSWD} ]] || [[ ${ALX_SCRN_PASSWD} = NULL ]] + then + ALX_PASSWD_CMD="-nolock" + else + ALX_PASSWD_CMD="-cpasswd $(openssl passwd ${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 + fi + # add autostart session if [[ ${ALX_AUTOSTART} != "" ]] then - echo "[startup] {wfica ${ALX_ICA_SESSIONS}/${ALX_AUTOSTART}}" \ + echo "[startup] {nohup nice -n 19 wfica ${ALX_ICA_SESSIONS}/${ALX_AUTOSTART} &}" \ >> ${ALX_UNPRIV_HOME}/.fluxbox/apps fi # fluxbox hotkeys - cat ${ALX_SKELETONS}/fluxbox/apps \ + cat ${ALX_SKELETONS}/fluxbox/keys \ > ${ALX_UNPRIV_HOME}/.fluxbox/keys # fluxbox menu header @@ -494,7 +490,7 @@ for (( i=0; i < count; i++ )) do [ -n "${ALX_SESSIONS[${i}]}" ] && \ - echo "[exec] ($(basename ${ALX_SESSIONS[${i}]} .ica)) {wfica ${ALX_ICA_SESSIONS}/${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 done @@ -515,10 +511,14 @@ 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}/.xtdesktop - chmod 0644 ${ALX_UNPRIV_HOME}/.xtdeskrc + chmod 0755 ${ALX_UNPRIV_HOME}/.xtdesktop + chmod 0644 ${ALX_UNPRIV_HOME}/.xtdeskrc # unset vars unset ALX_SESSIONS unset ALX_PROGRAMS + unset ALX_SCRN_SAVER + unset ALX_SCRN_TIMEOUT + unset ALX_SCRN_PASSWD } +