Magellan Linux

Contents of /alx-src/trunk/alxconfig-ng/functions/config_sessions.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 271 - (show annotations) (download) (as text)
Thu Apr 21 08:46:44 2005 UTC (19 years ago) by niro
File MIME type: application/x-sh
File size: 6543 byte(s)
set desired colors to 8 (24bit)

1 # $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_sessions.sh,v 1.6 2005-04-21 08:46:44 niro Exp $
2 # configures ica-sessions on the host via mysql db settings
3
4 get_sessions_settings()
5 {
6 local x i all count
7
8 #all arrays:
9 # -> session1 session2 ... sessionN
10
11 #get settings from database
12 all=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \
13 "select filename from cfg_sessions where serial='${ALX_SERIAL}'")
14 #"select session from cfg_sessions where serial='${ALX_SERIAL}'")
15
16 #split'em up and put in an array (only if $all not zero)
17 declare -i i=0
18 if [ -n "${all}" ]
19 then
20 for x in ${all}
21 do
22 ALX_SESSIONS[${i}]=${x}
23 ((i++))
24 done
25 count=${i}
26 else
27 count=0
28 fi
29
30 export ALX_SESSIONS
31 }
32
33 get_autostart_settings()
34 {
35 #get settings from database
36 ALX_AUTOSTART=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \
37 "select session from cfg_autostart where serial='${ALX_SERIAL}'")
38
39 export ALX_SESSIONS
40 }
41
42 generate_ica_session_files()
43 {
44 local all_ids
45 local i
46 local x
47 local k
48 local server
49 local ses_session
50 local ses_filename
51 local ses_username
52 local ses_domain
53 local ses_password
54 local ses_browseradrs
55
56 #get settings from database
57 all_ids=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \
58 "select id from cfg_sessions where serial='${ALX_SERIAL}'")
59
60 declare -i x=0
61 for i in ${all_ids}
62 do
63 # get settings
64 ses_session[${x}]=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \
65 "select session from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'")
66
67 ses_filename[${x}]=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \
68 "select filename from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'")
69
70 ses_username[${x}]=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \
71 "select username from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'")
72
73 ses_domain[${x}]=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \
74 "select domain from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'")
75
76 ses_password[${x}]=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \
77 "select password from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'")
78
79 ses_browseradrs[${x}]=$(mysql_command ${SQL_USER} ${SQL_PASS} ${SQL_HOST} ${SQL_DB} \
80 "select browseradrs from cfg_sessions where serial='${ALX_SERIAL}' and id='${i}'")
81
82 # write session files
83 echo '[WFClient]' > ${ALX_ICA_SESSIONS}/${ses_filename}
84 echo 'Version=2' >> ${ALX_ICA_SESSIONS}/${ses_filename}
85 OLD_IFS="$IFS"
86 IFS=";"
87 declare -i k=0
88 for server in ${ses_browseradrs[${x}]}
89 do
90 (( k++ ))
91 echo "TcpBrowserAddress${k}=${server}" >> ${ALX_ICA_SESSIONS}/${ses_filename}
92 done
93 IFS="${OLD_IFS}"
94 unset k
95 unset OLD_IFS
96
97 echo 'ScreenPercent=0' >> ${ALX_ICA_SESSIONS}/${ses_filename}
98
99 echo '[ApplicationServers]' >> ${ALX_ICA_SESSIONS}/${ses_filename}
100 echo "${ses_session[${x}]}=" >> ${ALX_ICA_SESSIONS}/${ses_filename}
101
102 echo "[${ses_session[${x}]}]" >> ${ALX_ICA_SESSIONS}/${ses_filename}
103 echo "Address=${ses_session[${x}]}" >> ${ALX_ICA_SESSIONS}/${ses_filename}
104 echo "InitialProgram=#${ses_session[${x}]}" >> ${ALX_ICA_SESSIONS}/${ses_filename}
105 echo 'DesiredColor=8' >> ${ALX_ICA_SESSIONS}/${ses_filename}
106 echo 'TransportDriver=TCP/IP' >> ${ALX_ICA_SESSIONS}/${ses_filename}
107 echo 'WinStationDriver=ICA 3.0' >> ${ALX_ICA_SESSIONS}/${ses_filename}
108 echo "ClearPassword=${ses_password[${x}]}" >> ${ALX_ICA_SESSIONS}/${ses_filename}
109 echo "Username=${ses_username[${x}]}" >> ${ALX_ICA_SESSIONS}/${ses_filename}
110 echo "Domain=${ses_domain[${x}]}" >> ${ALX_ICA_SESSIONS}/${ses_filename}
111 echo 'UseFullScreen=Yes' >> ${ALX_ICA_SESSIONS}/${ses_filename}
112 echo 'NoWindowManager=True' >> ${ALX_ICA_SESSIONS}/${ses_filename}
113 done
114
115 (( x++ ))
116 }
117
118 config_sessions()
119 {
120 # generate ica session files
121 generate_ica_session_files
122
123 #first of all get the vars
124 get_sessions_settings
125 get_autostart_settings
126
127 local count=${#ALX_SESSIONS[*]}
128 local icon
129
130 # DEBUG
131 # declare -i i=0
132 # echo count=${count}
133 # echo "Number of new sessions: ${count}"
134 # for ((i=0; i < count; i++))
135 # do
136 # echo "${i} - ${ALX_SESSIONS[${i}]}"
137 # done
138
139 # now setup fluxbox for user station
140
141 # create a fresh fluxbox directory
142 [ -d ${ALX_UNPRIV_HOME}/.fluxbox ] && rm -rf ${ALX_UNPRIV_HOME}/.fluxbox
143 install -d ${ALX_UNPRIV_HOME}/.fluxbox
144
145 # now generate fluxbox config files
146
147 # fluxbox main config
148 cat ${ALX_SKELETONS}/fluxbox/init \
149 > ${ALX_UNPRIV_HOME}/.fluxbox/init
150
151 # fluxbox autostart
152 cat ${ALX_SKELETONS}/fluxbox/apps \
153 > ${ALX_UNPRIV_HOME}/.fluxbox/apps
154
155 # add autostart session
156 if [[ ${ALX_AUTOSTART} != "" ]]
157 then
158 echo "[startup] {wfica ${ALX_ICA_SESSIONS}/${ALX_AUTOSTART}}" \
159 >> ${ALX_UNPRIV_HOME}/.fluxbox/apps
160 fi
161
162 # fluxbox hotkeys
163 cat ${ALX_SKELETONS}/fluxbox/apps \
164 > ${ALX_UNPRIV_HOME}/.fluxbox/keys
165
166 # fluxbox menu header
167 cat ${ALX_SKELETONS}/fluxbox/menu.header \
168 > ${ALX_UNPRIV_HOME}/.fluxbox/menu
169
170 # add a newline (maybe there is no crlf in the header)
171 echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
172
173 # fluxbox menu sessions
174 for (( i=0; i < count; i++ ))
175 do
176 echo "[exec] ($(basename ${ALX_SESSIONS[${i}]} .ica)) {wfica ${ALX_ICA_SESSIONS}/${ALX_SESSIONS[${i}]}}" \
177 >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
178 done
179
180 # fluxbox menu footer
181 cat ${ALX_SKELETONS}/fluxbox/menu.footer \
182 >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
183
184 # add a newline (maybe there is no crlf in the footer)
185 echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu
186
187 # now we generate the desktop icons
188 cat ${ALX_SKELETONS}/idesk/ideskrc \
189 > ${ALX_UNPRIV_HOME}/.ideskrc
190
191 # whipe out old stuff and install a fresh directory
192 [ -d ${ALX_UNPRIV_HOME}/.idesktop ] && rm -rf ${ALX_UNPRIV_HOME}/.idesktop
193 install -d ${ALX_UNPRIV_HOME}/.idesktop
194
195 local name
196 for (( i=0; i < count; i++ ))
197 do
198 name="$(basename ${ALX_SESSIONS[${i}]} .ica)"
199
200 if [ -f ${ALX_SESSIONS_ICONS}/${name}.png ]
201 then
202 icon="${ALX_SESSIONS_ICONS}/${name}.png"
203 else
204 icon="${ALX_SESSIONS_ICONS}/default.png"
205 fi
206
207 echo "table Icon
208 Caption: ${name}
209 Command: wfica ${ALX_ICA_SESSIONS}/${name}.ica
210 Icon: ${icon}
211 end" > ${ALX_UNPRIV_HOME}/.idesktop/${name}.lnk
212 done
213
214 # set correct permissions
215 chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}
216 chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox
217 chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox
218 chmod 0755 ${ALX_UNPRIV_HOME}/.idesktop
219 chmod 0644 ${ALX_UNPRIV_HOME}/.ideskrc
220
221
222 # unset vars
223 unset ALX_SESSIONS
224 }