Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 246 - (hide annotations) (download) (as text)
Wed Apr 13 16:09:53 2005 UTC (19 years, 1 month ago) by niro
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     }