Annotation of /alx-src/branches/alxconf_20060908/functions/config_sessions.sh
Parent Directory | Revision Log
Revision 246 -
(hide annotations)
(download)
(as text)
Wed Apr 13 16:09:53 2005 UTC (19 years, 5 months ago) by niro
Original Path: alx-src/trunk/alxconfig-ng/functions/config_sessions.sh
File MIME type: application/x-sh
File size: 6543 byte(s)
Wed Apr 13 16:09:53 2005 UTC (19 years, 5 months ago) by niro
Original Path: alx-src/trunk/alxconfig-ng/functions/config_sessions.sh
File MIME type: application/x-sh
File size: 6543 byte(s)
added session autload and ica-session creation
1 | niro | 246 | # $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/functions/config_sessions.sh,v 1.5 2005-04-13 16:09:53 niro Exp $ |
2 | niro | 236 | # 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 | niro | 246 | "select filename from cfg_sessions where serial='${ALX_SERIAL}'") |
14 | #"select session from cfg_sessions where serial='${ALX_SERIAL}'") | ||
15 | niro | 236 | |
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 | niro | 246 | 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=3' >> ${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 | niro | 236 | config_sessions() |
119 | { | ||
120 | niro | 246 | # generate ica session files |
121 | generate_ica_session_files | ||
122 | |||
123 | niro | 236 | #first of all get the vars |
124 | get_sessions_settings | ||
125 | niro | 246 | get_autostart_settings |
126 | niro | 236 | |
127 | local count=${#ALX_SESSIONS[*]} | ||
128 | local icon | ||
129 | |||
130 | # DEBUG | ||
131 | niro | 241 | # 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 | niro | 236 | |
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 | niro | 246 | # 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 | niro | 236 | # 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 | niro | 239 | # add a newline (maybe there is no crlf in the header) |
171 | echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu | ||
172 | |||
173 | niro | 236 | # fluxbox menu sessions |
174 | for (( i=0; i < count; i++ )) | ||
175 | do | ||
176 | niro | 239 | echo "[exec] ($(basename ${ALX_SESSIONS[${i}]} .ica)) {wfica ${ALX_ICA_SESSIONS}/${ALX_SESSIONS[${i}]}}" \ |
177 | niro | 236 | >> ${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 | niro | 239 | # add a newline (maybe there is no crlf in the footer) |
185 | echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu | ||
186 | niro | 236 | |
187 | # now we generate the desktop icons | ||
188 | cat ${ALX_SKELETONS}/idesk/ideskrc \ | ||
189 | niro | 237 | > ${ALX_UNPRIV_HOME}/.ideskrc |
190 | niro | 236 | |
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 | niro | 239 | Command: wfica ${ALX_ICA_SESSIONS}/${name}.ica |
210 | niro | 236 | 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 | } |