Contents of /alx-src/branches/alxconf_20060908/functions/config_sessions.sh
Parent Directory | Revision Log
Revision 246 -
(show 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 | # $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 | # 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=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 | 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 | } |