1 |
# $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_sessions.sh,v 1.15 2005-09-06 08:43:16 niro Exp $ |
# $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_sessions.sh,v 1.18 2006-01-26 19:55:53 niro Exp $ |
2 |
# configures ica-sessions on the host via mysql db settings |
# configures ica-sessions on the host via mysql db settings |
3 |
|
|
4 |
get_sessions_settings() |
get_sessions_settings() |
9 |
# -> session1 session2 ... sessionN |
# -> session1 session2 ... sessionN |
10 |
|
|
11 |
# get settings from database |
# get settings from database |
12 |
all=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ |
all=$(mysqldo "select filename from cfg_sessions where serial='${ALX_SERIAL}'") |
|
"select filename from cfg_sessions where serial='${ALX_SERIAL}'") |
|
13 |
|
|
14 |
# split'em up and put in an array (only if $all not zero) |
# split'em up and put in an array (only if $all not zero) |
15 |
declare -i i=0 |
declare -i i=0 |
26 |
fi |
fi |
27 |
|
|
28 |
# get settings from database |
# get settings from database |
29 |
ALX_PROGRAMS=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ |
ALX_PROGRAMS=$(mysqldo "select name from cfg_other_menuitems where serial='${ALX_SERIAL}'") |
|
"select name from cfg_other_menuitems where serial='${ALX_SERIAL}'") |
|
30 |
|
|
31 |
export ALX_SESSIONS |
export ALX_SESSIONS |
32 |
export ALX_PROGRAMS |
export ALX_PROGRAMS |
35 |
get_autostart_settings() |
get_autostart_settings() |
36 |
{ |
{ |
37 |
# get settings from database |
# get settings from database |
38 |
ALX_AUTOSTART=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ |
ALX_AUTOSTART=$(mysqldo "select session from cfg_autostart where serial='${ALX_SERIAL}'") |
|
"select session from cfg_autostart where serial='${ALX_SERIAL}'") |
|
39 |
|
|
40 |
export ALX_AUTOSTART |
export ALX_AUTOSTART |
41 |
} |
} |
42 |
|
|
43 |
|
get_screensaver_settings() |
44 |
|
{ |
45 |
|
ALX_SCRN_SAVER=$(mysqldo "select screensaver from cfg_screensaver where serial='${ALX_SERIAL}'") |
46 |
|
ALX_SCRN_TIMEOUT=$(mysqldo "select timeout from cfg_screensaver where serial='${ALX_SERIAL}'") |
47 |
|
ALX_SCRN_PASSWD=$(mysqldo "select password from cfg_screensaver where serial='${ALX_SERIAL}'") |
48 |
|
|
49 |
|
export ALX_SCRN_SAVER |
50 |
|
export ALX_SCRN_TIMEOUT |
51 |
|
export ALX_SCRN_PASSWD |
52 |
|
} |
53 |
|
|
54 |
generate_ica_session_files() |
generate_ica_session_files() |
55 |
{ |
{ |
56 |
local all_ids |
local all_ids |
57 |
local i |
local i |
58 |
local x |
local x |
59 |
|
local browser_address_num |
60 |
local server |
local server |
61 |
local ses_session |
local ses_session |
62 |
local ses_filename |
local ses_filename |
67 |
local ses_colors |
local ses_colors |
68 |
|
|
69 |
# get settings from database |
# get settings from database |
70 |
all_ids=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ |
all_ids=$(mysqldo "select id from cfg_sessions where serial='${ALX_SERIAL}'") |
|
"select id from cfg_sessions where serial='${ALX_SERIAL}'") |
|
71 |
|
|
72 |
for i in ${all_ids} |
for i in ${all_ids} |
73 |
do |
do |
74 |
# get settings |
# get settings |
75 |
ses_session=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ |
ses_session=$(mysqldo "select session from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") |
76 |
"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}'") |
77 |
|
ses_username=$(mysqldo "select username from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") |
78 |
ses_filename=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ |
ses_domain=$(mysqldo "select domain from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'") |
79 |
"select filename 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}'") |
80 |
|
ses_browseradrs=$(mysqldo "select browseradrs 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}'") |
|
81 |
|
|
82 |
# get the right colors |
# get the right colors |
83 |
ses_colors=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ |
ses_colors=$(mysqldo "select depth from cfg_graphic where serial='${ALX_SERIAL}'") |
84 |
"select depth from cfg_graphic where serial='${ALX_SERIAL}'") |
# convert to ica session file values |
85 |
case ${ses_colors} in |
case ${ses_colors} in |
86 |
24) ses_colors="8";; |
24) ses_colors="8";; |
87 |
16) ses_colors="4";; |
16) ses_colors="4";; |
98 |
for server in ${ses_browseradrs} |
for server in ${ses_browseradrs} |
99 |
do |
do |
100 |
(( x++ )) |
(( x++ )) |
101 |
echo "TcpBrowserAddress${x}=${server}" >> ${ALX_ICA_SESSIONS}/${ses_filename} |
browser_address_num="${x}" |
102 |
|
# support newer ica-clients: |
103 |
|
# the first address must be named TcpBrowserAddress, but not TcpBrowserAddress1 !! |
104 |
|
[[ ${x} -eq 1 ]] && browser_address_num="" |
105 |
|
echo "TcpBrowserAddress${browser_address_num}=${server}" >> ${ALX_ICA_SESSIONS}/${ses_filename} |
106 |
done |
done |
107 |
IFS="${OLD_IFS}" |
IFS="${OLD_IFS}" |
108 |
unset x |
unset x |
109 |
unset OLD_IFS |
unset OLD_IFS |
110 |
|
|
111 |
echo 'ScreenPercent=0' >> ${ALX_ICA_SESSIONS}/${ses_filename} |
echo 'ScreenPercent=0' >> ${ALX_ICA_SESSIONS}/${ses_filename} |
112 |
|
|
113 |
echo '[ApplicationServers]' >> ${ALX_ICA_SESSIONS}/${ses_filename} |
echo '[ApplicationServers]' >> ${ALX_ICA_SESSIONS}/${ses_filename} |
114 |
echo "${ses_session}=" >> ${ALX_ICA_SESSIONS}/${ses_filename} |
echo "${ses_session}=" >> ${ALX_ICA_SESSIONS}/${ses_filename} |
115 |
|
|
116 |
echo "[${ses_session}]" >> ${ALX_ICA_SESSIONS}/${ses_filename} |
echo "[${ses_session}]" >> ${ALX_ICA_SESSIONS}/${ses_filename} |
117 |
echo "Address=${ses_session}" >> ${ALX_ICA_SESSIONS}/${ses_filename} |
echo "Address=${ses_session}" >> ${ALX_ICA_SESSIONS}/${ses_filename} |
118 |
echo "InitialProgram=#${ses_session}" >> ${ALX_ICA_SESSIONS}/${ses_filename} |
echo "InitialProgram=#${ses_session}" >> ${ALX_ICA_SESSIONS}/${ses_filename} |
184 |
unset workdir |
unset workdir |
185 |
unset icon |
unset icon |
186 |
|
|
187 |
name=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ |
name=$(mysqldo "select name from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'") |
188 |
"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}'") |
189 |
|
workdir=$(mysqldo "select workdir from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'") |
190 |
exec=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ |
icon=$(mysqldo "select icon from cfg_other_menuitems where serial='${ALX_SERIAL}' and name='${x}'") |
|
"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$ |
|
191 |
|
|
192 |
# now echo config line for fluxbox-menu |
# now echo config line for fluxbox-menu |
193 |
# make it "configureable" :P |
# make it "configureable" :P |
|
#[ -n "${workdir}" ] && workdir="cd ${workdir};" |
|
194 |
[ -n "${workdir}" ] && workdir="--workdir ${workdir}" |
[ -n "${workdir}" ] && workdir="--workdir ${workdir}" |
195 |
[ -n "${icon}" ] && icon="<${icon}>" |
[ -n "${icon}" ] && icon="<${icon}>" |
196 |
|
|
242 |
[ -z "${command}" ] && return 1 |
[ -z "${command}" ] && return 1 |
243 |
|
|
244 |
# use some defaults for icon, dest, {x,y}res |
# use some defaults for icon, dest, {x,y}res |
245 |
[ -z "${xres}" ] && xres=20 |
[ -z "${xres}" ] && xres=30 |
246 |
[ -z "${yres}" ] && xres=20 |
[ -z "${yres}" ] && xres=30 |
247 |
[ -z "${dest}" ] && dest="${ALX_UNPRIV_HOME}/.xtdesktop/${name}.lnk" |
[ -z "${dest}" ] && dest="${ALX_UNPRIV_HOME}/.xtdesktop/${name}.lnk" |
248 |
if [ -z "${icon}" ] || [ ! -f "${icon}" ] |
if [ -z "${icon}" ] || [ ! -f "${icon}" ] |
249 |
then |
then |
283 |
local progsh_path |
local progsh_path |
284 |
|
|
285 |
# get the resolution |
# get the resolution |
286 |
res=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ |
res=$(mysqldo "select resolution from cfg_graphic where serial='${ALX_SERIAL}'") |
|
"select resolution from cfg_graphic where serial='${ALX_SERIAL}'") |
|
287 |
|
|
288 |
# split res to x & y |
# split res to x & y |
289 |
xres="$(echo ${res} | cut -dx -f1)" |
xres="$(echo ${res} | cut -dx -f1)" |
303 |
|
|
304 |
|
|
305 |
# default settings |
# default settings |
306 |
declare -i x=20 |
declare -i x=30 |
307 |
declare -i y=20 |
declare -i y=30 |
308 |
|
|
309 |
# first all ica sessions |
# first all ica sessions |
310 |
local count=${#ALX_SESSIONS[*]} |
local count=${#ALX_SESSIONS[*]} |
321 |
|
|
322 |
# new line if x > xres |
# new line if x > xres |
323 |
if [ ${x} -ge ${xres} ];then |
if [ ${x} -ge ${xres} ];then |
324 |
x=20 |
x=30 |
325 |
y=$((${y} + 80)) |
y=$((${y} + 80)) |
326 |
fi |
fi |
327 |
|
|
328 |
# new row if y > yres |
# new row if y > yres |
329 |
if [ ${y} -ge ${yres} ];then |
if [ ${y} -ge ${yres} ];then |
330 |
x=$((${x} + 120)) |
x=$((${x} + 120)) |
331 |
y=20 |
y=30 |
332 |
|
|
333 |
# re-check x |
# re-check x |
334 |
[ ${x} -ge ${xres} ] && x=20 |
[ ${x} -ge ${xres} ] && x=30 |
335 |
fi |
fi |
336 |
|
|
337 |
# ica icons |
# ica icons |
339 |
basename_item="$(basename ${item} .ica)" |
basename_item="$(basename ${item} .ica)" |
340 |
generate_icon \ |
generate_icon \ |
341 |
--name "${basename_item}" \ |
--name "${basename_item}" \ |
342 |
--command "wfica ${ALX_ICA_SESSIONS}/${item}" \ |
--command "numlockx on && nice -n 19 wfica ${ALX_ICA_SESSIONS}/${item}" \ |
343 |
--icon "${ALX_SESSIONS_ICONS}/${basename_item}.png" \ |
--icon "${ALX_SESSIONS_ICONS}/${basename_item}.png" \ |
344 |
--dest "${ALX_UNPRIV_HOME}/.xtdesktop/${basename_item}.lnk" \ |
--dest "${ALX_UNPRIV_HOME}/.xtdesktop/${basename_item}.lnk" \ |
345 |
--xres "${x}" \ |
--xres "${x}" \ |
361 |
|
|
362 |
# new line if x > xres |
# new line if x > xres |
363 |
if [ ${x} -ge ${xres} ];then |
if [ ${x} -ge ${xres} ];then |
364 |
x=20 |
x=30 |
365 |
y=$((${y} + 80)) |
y=$((${y} + 80)) |
366 |
fi |
fi |
367 |
|
|
368 |
# new row if y > yres |
# new row if y > yres |
369 |
if [ ${y} -ge ${yres} ];then |
if [ ${y} -ge ${yres} ];then |
370 |
x=$((${x} + 120)) |
x=$((${x} + 120)) |
371 |
y=20 |
y=30 |
372 |
|
|
373 |
# re-check x |
# re-check x |
374 |
[ ${x} -ge ${xres} ] && x=20 |
[ ${x} -ge ${xres} ] && x=30 |
375 |
fi |
fi |
376 |
|
|
377 |
generate_icon \ |
generate_icon \ |
394 |
local osversion |
local osversion |
395 |
|
|
396 |
osversion="$(< /etc/mageversion)" |
osversion="$(< /etc/mageversion)" |
397 |
hostname=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \ |
hostname=$(mysqldo "select hostname from cfg_network where serial='${ALX_SERIAL}'") |
|
"select hostname from cfg_network where serial='${ALX_SERIAL}'") |
|
398 |
sysinfo="Hostname: ${hostname} Serial: #${ALX_SERIAL} OS: alx-${osversion} Kernel: $(uname -r)" |
sysinfo="Hostname: ${hostname} Serial: #${ALX_SERIAL} OS: alx-${osversion} Kernel: $(uname -r)" |
399 |
|
|
400 |
# now get the right position: |
# now get the right position: |
425 |
# first of all get the vars |
# first of all get the vars |
426 |
get_sessions_settings |
get_sessions_settings |
427 |
get_autostart_settings |
get_autostart_settings |
428 |
|
get_screensaver_settings |
429 |
|
|
430 |
local count=${#ALX_SESSIONS[*]} |
local count=${#ALX_SESSIONS[*]} |
431 |
local icon |
local icon |
432 |
local i |
local i |
433 |
|
|
|
# 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 |
|
|
|
|
434 |
# now setup fluxbox for user station |
# now setup fluxbox for user station |
435 |
|
|
436 |
# create a fresh fluxbox directory |
# create a fresh fluxbox directory |
447 |
cat ${ALX_SKELETONS}/fluxbox/apps \ |
cat ${ALX_SKELETONS}/fluxbox/apps \ |
448 |
> ${ALX_UNPRIV_HOME}/.fluxbox/apps |
> ${ALX_UNPRIV_HOME}/.fluxbox/apps |
449 |
|
|
450 |
|
# add screensaver |
451 |
|
if [[ -n ${ALX_SCRN_SAVER} ]] && [[ -n ${ALX_SCRN_TIMEOUT} ]] |
452 |
|
then |
453 |
|
local ALX_PASSWD_CMD |
454 |
|
|
455 |
|
if [[ -z ${ALX_SCRN_PASSWD} ]] || [[ ${ALX_SCRN_PASSWD} = NULL ]] |
456 |
|
then |
457 |
|
ALX_PASSWD_CMD="-nolock" |
458 |
|
else |
459 |
|
ALX_PASSWD_CMD="-cpasswd $(openssl passwd ${ALX_SCRN_PASSWD})" |
460 |
|
fi |
461 |
|
|
462 |
|
echo "[startup] {nohup xautolock -time ${ALX_SCRN_TIMEOUT} -locker 'xlock -mode ${ALX_SCRN_SAVER} ${ALX_PASSWD_CMD}' > /dev/null &}" \ |
463 |
|
>> ${ALX_UNPRIV_HOME}/.fluxbox/apps |
464 |
|
fi |
465 |
|
|
466 |
# add autostart session |
# add autostart session |
467 |
if [[ ${ALX_AUTOSTART} != "" ]] |
if [[ ${ALX_AUTOSTART} != "" ]] |
468 |
then |
then |
469 |
echo "[startup] {wfica ${ALX_ICA_SESSIONS}/${ALX_AUTOSTART}}" \ |
echo "[startup] {nice -n 19 wfica ${ALX_ICA_SESSIONS}/${ALX_AUTOSTART}}" \ |
470 |
>> ${ALX_UNPRIV_HOME}/.fluxbox/apps |
>> ${ALX_UNPRIV_HOME}/.fluxbox/apps |
471 |
fi |
fi |
472 |
|
|
473 |
# fluxbox hotkeys |
# fluxbox hotkeys |
474 |
cat ${ALX_SKELETONS}/fluxbox/apps \ |
cat ${ALX_SKELETONS}/fluxbox/keys \ |
475 |
> ${ALX_UNPRIV_HOME}/.fluxbox/keys |
> ${ALX_UNPRIV_HOME}/.fluxbox/keys |
476 |
|
|
477 |
# fluxbox menu header |
# fluxbox menu header |
490 |
for (( i=0; i < count; i++ )) |
for (( i=0; i < count; i++ )) |
491 |
do |
do |
492 |
[ -n "${ALX_SESSIONS[${i}]}" ] && \ |
[ -n "${ALX_SESSIONS[${i}]}" ] && \ |
493 |
echo "[exec] ($(basename ${ALX_SESSIONS[${i}]} .ica)) {wfica ${ALX_ICA_SESSIONS}/${ALX_SESSIONS[${i}]}}" \ |
echo "[exec] ($(basename ${ALX_SESSIONS[${i}]} .ica)) {numlockx on && nice -n 19 wfica ${ALX_ICA_SESSIONS}/${ALX_SESSIONS[${i}]}}" \ |
494 |
>> ${ALX_UNPRIV_HOME}/.fluxbox/menu |
>> ${ALX_UNPRIV_HOME}/.fluxbox/menu |
495 |
done |
done |
496 |
|
|
511 |
chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME} |
chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME} |
512 |
chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox |
chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox |
513 |
chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox |
chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox |
514 |
chmod 0755 ${ALX_UNPRIV_HOME}/.xtdesktop |
chmod 0755 ${ALX_UNPRIV_HOME}/.xtdesktop |
515 |
chmod 0644 ${ALX_UNPRIV_HOME}/.xtdeskrc |
chmod 0644 ${ALX_UNPRIV_HOME}/.xtdeskrc |
516 |
|
|
517 |
# unset vars |
# unset vars |
518 |
unset ALX_SESSIONS |
unset ALX_SESSIONS |
519 |
unset ALX_PROGRAMS |
unset ALX_PROGRAMS |
520 |
|
unset ALX_SCRN_SAVER |
521 |
|
unset ALX_SCRN_TIMEOUT |
522 |
|
unset ALX_SCRN_PASSWD |
523 |
} |
} |
524 |
|
|