rev |
line source |
pankso@42
|
1 #!/bin/sh
|
pankso@42
|
2 #
|
pankso@42
|
3 # System settings CGI interface: user, locale, keyboard, date. Since we
|
paul@205
|
4 # don't have multiple pages here there is only one case used to get command
|
paul@205
|
5 # values and the full content is followed directly.
|
pankso@42
|
6 #
|
al@419
|
7 # Copyright (C) 2011-2015 SliTaz GNU/Linux - BSD License
|
pankso@42
|
8 #
|
pankso@42
|
9
|
al@419
|
10
|
pankso@42
|
11 # Common functions from libtazpanel
|
al@419
|
12
|
pankso@42
|
13 . lib/libtazpanel
|
pankso@42
|
14 get_config
|
pascal@81
|
15 header
|
pankso@42
|
16
|
al@443
|
17 TITLE=$(_ 'TazPanel - Settings')
|
pankso@42
|
18
|
al@419
|
19
|
pascal@336
|
20 # Get system database. LDAP compatible.
|
al@419
|
21
|
al@437
|
22 getdb() {
|
pascal@336
|
23 getent $1 2>/dev/null || cat /etc/$1
|
pascal@336
|
24 }
|
pascal@336
|
25
|
al@437
|
26 listdb() {
|
pascal@336
|
27 for item in $(getdb $1 | cut -d ":" -f 1); do
|
pascal@336
|
28 echo "<option>$item</option>\n"
|
pascal@336
|
29 done
|
pascal@336
|
30 }
|
pascal@336
|
31
|
al@419
|
32
|
al@419
|
33
|
al@419
|
34
|
al@419
|
35
|
pankso@42
|
36 #
|
pankso@42
|
37 # Commands executed before page loading.
|
pankso@42
|
38 #
|
pankso@42
|
39
|
pascal@81
|
40 case " $(GET) " in
|
pascal@115
|
41 *\ do\ *)
|
al@419
|
42 users=$(echo $QUERY_STRING | awk 'BEGIN{RS="&";FS="="}{if($1=="user") print $2}')
|
al@419
|
43 groups=$(echo $QUERY_STRING | awk 'BEGIN{RS="&";FS="="}{if($1=="group")print $2}')
|
al@419
|
44
|
al@419
|
45 case $(GET do) in
|
al@419
|
46
|
al@419
|
47 # Groups page
|
al@419
|
48 delgroups)
|
al@419
|
49 for i in $groups; do delgroup $i; done ;;
|
al@419
|
50 addgroup)
|
al@419
|
51 addgroup $groups ;;
|
al@419
|
52 addmember)
|
al@419
|
53 addgroup $(GET member) $groups ;;
|
al@419
|
54 delmember)
|
al@419
|
55 delgroup $(GET member) $groups ;;
|
al@419
|
56
|
al@419
|
57 # Users page
|
al@419
|
58 delusers)
|
al@419
|
59 for i in $users; do deluser $i; done ;;
|
al@419
|
60 lockusers)
|
al@419
|
61 for i in $users; do passwd -l $i | log; done ;;
|
al@419
|
62 unlockusers)
|
al@419
|
63 for i in $users; do passwd -u $i | log; done ;;
|
al@419
|
64 chpasswd)
|
al@419
|
65 echo "$users:$(GET password)" | chpasswd -m | log ;;
|
al@419
|
66 adduser)
|
al@419
|
67 if [ -n "$users" ]; then
|
al@419
|
68 name=$(GET name); name=${name:-SliTaz User}
|
al@419
|
69 adduser -D -s /bin/sh -g "$name" -G users -h /home/$users $users
|
al@419
|
70 echo "$user:$(GET passwd)" | chpasswd -m | log
|
al@419
|
71 for i in audio cdrom floppy video tty; do addgroup $users $i; done
|
al@419
|
72 fi ;;
|
al@419
|
73
|
al@419
|
74 # System time
|
al@419
|
75 settz)
|
al@419
|
76 GET tz > /etc/TZ;;
|
al@419
|
77 date) # normalize to two digits
|
al@419
|
78 date $(printf '%02d%02d%02d%02d%d.%02d' "$(GET month)" "$(GET day)" "$(GET hour)" "$(GET min)" "$(GET year)" "$(GET sec)") >/dev/null;;
|
al@419
|
79 rdate)
|
al@419
|
80 rdate -s tick.greyware.com ;;
|
al@419
|
81 hwclock)
|
al@419
|
82 hwclock -w -u ;;
|
al@419
|
83
|
al@419
|
84 esac
|
al@419
|
85 ;;
|
al@419
|
86
|
al@419
|
87
|
pascal@81
|
88 *\ gen_locale\ *)
|
pascal@81
|
89 new_locale=$(GET gen_locale) ;;
|
pascal@141
|
90 *\ gen_keymap\ *)
|
pascal@141
|
91 new_keymap=$(GET gen_keymap) ;;
|
pascal@142
|
92 *\ apply_xorg_kbd\ *)
|
pascal@142
|
93 sed -i "s/XkbLayout.*/XkbLayout \" \"$(GET apply_xorg_kbd)\"/" \
|
pascal@142
|
94 /etc/X11/xorg.conf.d/40-Keyboard.conf ;;
|
pankso@110
|
95 *\ style*)
|
pankso@110
|
96 sed -i s/'^STYLE.*'/"STYLE=\"$(GET style)\""/ $CONFIG
|
al@292
|
97 . $CONFIG ;;
|
pankso@42
|
98 esac
|
pankso@42
|
99
|
al@419
|
100
|
al@419
|
101
|
al@419
|
102
|
al@419
|
103
|
pankso@42
|
104 #
|
pankso@42
|
105 # Default xHTML content
|
pankso@42
|
106 #
|
al@419
|
107
|
pankso@42
|
108 xhtml_header
|
al@437
|
109 check_root_tazpanel
|
pankso@67
|
110
|
pankso@110
|
111 case " $(GET) " in
|
pascal@336
|
112 *\ group*)
|
pascal@336
|
113 #
|
pascal@336
|
114 # Groups management
|
pascal@336
|
115 #
|
pascal@336
|
116 cat <<EOT
|
al@443
|
117 <h2 id="groups">$(_ 'Manage groups')</h2>
|
pascal@336
|
118
|
pascal@336
|
119
|
al@419
|
120 <section>
|
al@419
|
121 <form class="wide">
|
al@419
|
122 <header>
|
al@419
|
123 <input type="hidden" name="groups"/>
|
al@443
|
124 <!-- $(_ 'Selection:') -->
|
al@443
|
125 <button name="do" value="delgroups" data-icon="delete">$(_ 'Delete group')</button>
|
al@419
|
126 </header>
|
al@419
|
127
|
al@419
|
128 <div class="scroll">
|
al@419
|
129 <table class="wide zebra scroll">
|
al@419
|
130 <thead>
|
al@419
|
131 <tr class="thead">
|
al@443
|
132 <td>$(_ 'Group')</td>
|
al@443
|
133 <td>$(_ 'Group ID')</td>
|
al@443
|
134 <td>$(_ 'Members')</td>
|
al@419
|
135 </tr>
|
al@419
|
136 </thead>
|
al@419
|
137 <tbody>
|
pascal@336
|
138 EOT
|
al@419
|
139 for group in $(getdb group | cut -d ":" -f 1); do
|
pascal@336
|
140 IFS=':'
|
pascal@336
|
141 set -- $(getdb group | grep "^$group:")
|
pascal@336
|
142 unset IFS
|
pascal@336
|
143 gid=$3
|
pascal@336
|
144 members=$4
|
pascal@336
|
145 cat <<EOT
|
al@419
|
146 <tr>
|
al@419
|
147 <td><input type="checkbox" name="group" value="$group" id="$group"/>
|
al@419
|
148 <label for="$group" data-icon="group">$group</label></td>
|
al@419
|
149 <td>$gid</td>
|
al@419
|
150 <td>${members//,/, }</td>
|
al@419
|
151 </tr>
|
pascal@336
|
152 EOT
|
pascal@336
|
153 done
|
al@419
|
154 cat <<EOT
|
al@419
|
155 </tbody>
|
al@419
|
156 </table>
|
al@419
|
157 </div>
|
al@419
|
158 </form>
|
al@419
|
159 </section>
|
al@419
|
160
|
pascal@336
|
161
|
pascal@336
|
162 <section>
|
al@443
|
163 <header>$(_ 'Add a new group')</header>
|
al@419
|
164 <form>
|
al@419
|
165 <input type="hidden" name="groups"/>
|
al@419
|
166 <table>
|
al@443
|
167 <tr><td>$(_ 'Group name:')</td>
|
al@419
|
168 <td><input type="text" name="group"/></td>
|
al@419
|
169 </tr>
|
al@419
|
170 <tr><td colspan="2">
|
al@443
|
171 <button type="submit" name="do" value="addgroup" data-icon="add">$(_ 'Create group')</button>
|
al@419
|
172 </td></tr>
|
al@419
|
173 </table>
|
al@419
|
174 </form>
|
pascal@336
|
175 </section>
|
pascal@336
|
176
|
al@419
|
177
|
pascal@336
|
178 <section>
|
al@443
|
179 <header>$(_ 'Manage group membership')</header>
|
al@419
|
180 <form>
|
al@419
|
181 <input type="hidden" name="groups"/>
|
al@419
|
182 <table>
|
al@419
|
183 <tr>
|
al@443
|
184 <td>$(_ 'Group name:')</td>
|
al@419
|
185 <td><select name="group">$(listdb group)</select></td>
|
al@443
|
186 <td>$(_ 'User name:')</td>
|
al@419
|
187 <td><select name="member">$(listdb passwd)</select></td>
|
al@419
|
188 </tr>
|
al@419
|
189 <tr>
|
al@419
|
190 <td colspan="2">
|
al@443
|
191 <button name="do" value="addmember" data-icon="add">$(_ 'Add user')</button>
|
al@419
|
192 </td>
|
al@419
|
193 <td colspan="2">
|
al@443
|
194 <button name="do" value="delmember" data-icon="delete">$(_ 'Remove user')</button>
|
al@419
|
195 </td>
|
al@419
|
196 </tr>
|
al@419
|
197 </table>
|
al@419
|
198 </form>
|
pascal@336
|
199 </section>
|
pascal@336
|
200
|
pascal@336
|
201 EOT
|
pascal@336
|
202 ;;
|
pascal@336
|
203
|
al@419
|
204
|
pankso@110
|
205 *\ user*)
|
pankso@110
|
206 #
|
pankso@110
|
207 # Users management
|
pankso@110
|
208 #
|
pankso@110
|
209 cat <<EOT
|
al@443
|
210 <h2 id="users">$(_ 'Manage users')</h2>
|
al@303
|
211
|
al@419
|
212 <section>
|
al@419
|
213 <form class="wide">
|
al@419
|
214 <header>
|
al@443
|
215 <!--$(_ 'Selection:')-->
|
al@443
|
216 <button name="do" value="delusers" data-icon="delete">$(_ 'Delete user')</button>
|
al@443
|
217 <button name="do" value="lockusers" data-icon="lock" >$(_ 'Lock user' )</button>
|
al@443
|
218 <button name="do" value="unlockusers" data-icon="unlock">$(_ 'Unlock user')</button>
|
al@419
|
219 </header>
|
al@303
|
220
|
al@419
|
221 <table class="wide zebra center">
|
al@419
|
222 <thead>
|
al@419
|
223 <tr>
|
al@443
|
224 <td>$(_ 'Login')</td>
|
al@443
|
225 <td>$(_ 'User ID')</td>
|
al@443
|
226 <td>$(_ 'Name')</td>
|
al@443
|
227 <td>$(_ 'Home')</td>
|
al@443
|
228 <td>$(_ 'Shell')</td>
|
al@419
|
229 </tr>
|
al@419
|
230 </thead>
|
al@419
|
231 </tbody>
|
pascal@115
|
232 EOT
|
al@419
|
233 for login in $(getdb passwd | cut -d ":" -f 1); do
|
pascal@115
|
234 if [ -d /home/$login ]; then
|
pascal@115
|
235 colorlogin=$login
|
pascal@115
|
236 grep -qs "^$login:!" /etc/shadow &&
|
pascal@115
|
237 colorlogin="<span style='color: red;'>$login</span>"
|
pascal@115
|
238 IFS=':'
|
pascal@336
|
239 set -- $(getdb passwd | grep "^$login:")
|
pascal@115
|
240 unset IFS
|
pascal@115
|
241 cat <<EOT
|
pascal@115
|
242 <tr>
|
al@419
|
243 <td style="white-space: nowrap">
|
al@419
|
244 <input type="checkbox" name="user" value="$login" id="$login"/>
|
al@419
|
245 <label for="$login" data-icon="user">$colorlogin</label></td>
|
al@419
|
246 <td>$3:$4</td>
|
al@419
|
247 <td>$(echo $5 | sed s/,.*//)</td>
|
al@419
|
248 <td>$6</td>
|
al@419
|
249 <td>$7</td>
|
pascal@115
|
250 </tr>
|
pascal@115
|
251 EOT
|
pankso@110
|
252 fi
|
pankso@110
|
253 done
|
al@419
|
254 cat <<EOT
|
al@419
|
255 </tbody>
|
al@419
|
256 </table>
|
al@303
|
257 EOT
|
al@419
|
258 cat <<EOT
|
al@419
|
259 <footer>
|
al@419
|
260 <div>
|
al@443
|
261 $(_ 'Password:')
|
al@419
|
262 <input type="password" name="password"/>
|
al@443
|
263 <button type="submit" name="do" value="chpasswd" data-icon="ok">$(_ 'Change password')</button>
|
al@419
|
264 </div>
|
al@419
|
265 </footer>
|
al@419
|
266 </form>
|
al@419
|
267 </section>
|
al@419
|
268
|
pankso@42
|
269
|
al@312
|
270 <section>
|
al@443
|
271 <header>$(_ 'Add a new user')</header>
|
al@303
|
272
|
al@419
|
273 <form>
|
al@419
|
274 <input type="hidden" name="users"/>
|
al@419
|
275 <table class="summary">
|
al@443
|
276 <tr><td>$(_ 'User login:')</td>
|
al@419
|
277 <td><input type="text" name="user" size="30" pattern="[a-z]*"/></td></tr>
|
al@443
|
278 <tr><td>$(_ 'User name:')</td>
|
al@419
|
279 <td><input type="text" name="name" size="30"/></td></tr>
|
al@443
|
280 <tr><td>$(_ 'User password:')</td>
|
al@419
|
281 <td><input type="password" name="passwd" size="30"/></td></tr>
|
al@419
|
282 </table>
|
al@419
|
283
|
al@419
|
284 <footer>
|
al@443
|
285 <button type="submit" name="do" value="adduser" data-icon="add">$(_ 'Create user')</button>
|
al@419
|
286 </footer>
|
al@419
|
287 </form>
|
al@312
|
288 </section>
|
al@470
|
289 EOT
|
pascal@147
|
290
|
al@470
|
291 # `who` output is empty in the Live mode
|
al@470
|
292 if [ -n "$(who)" ]; then
|
al@470
|
293 cat <<EOT
|
al@312
|
294 <section>
|
al@443
|
295 <header>$(_ 'Current user sessions')</header>
|
al@419
|
296 <pre>$(who)</pre>
|
al@312
|
297 </section>
|
al@470
|
298 EOT
|
al@470
|
299 fi
|
al@303
|
300
|
al@470
|
301 # `last` output is empty (just header) in the Live mode
|
al@470
|
302 if [ "$(last | wc -l)" != "1" ]; then
|
al@470
|
303 cat <<EOT
|
al@312
|
304 <section>
|
al@443
|
305 <header>$(_ 'Last user sessions')</header>
|
al@419
|
306 <div class="scroll"><pre>$(last)</pre></div>
|
al@312
|
307 </section>
|
pankso@42
|
308 EOT
|
al@470
|
309 fi
|
pankso@110
|
310 ;;
|
al@313
|
311
|
al@313
|
312
|
al@313
|
313 *\ locale*)
|
al@313
|
314 #
|
al@313
|
315 # Choose locale
|
al@313
|
316 #
|
al@443
|
317 LOADING_MSG="$(_ 'Please wait...')"; loading_msg
|
al@419
|
318
|
al@313
|
319 cur_loc=$(locale | grep LANG | cut -d= -f2)
|
al@419
|
320 cat <<EOT
|
al@443
|
321 <h2 id="locale">$(_ 'Choose locale')</h2>
|
al@313
|
322
|
al@419
|
323 <section>
|
al@443
|
324 <header>$(_ 'Current locale settings:')</header>
|
al@419
|
325 <div>
|
al@419
|
326 <pre>$(locale)</pre>
|
al@419
|
327 </div>
|
al@419
|
328 </section>
|
al@313
|
329
|
al@419
|
330 <section>
|
al@443
|
331 <header>$(_ 'Locales that are currently installed on the machine:')</header>
|
al@419
|
332 <div>
|
al@419
|
333 <pre>$(locale -a)</pre>
|
al@419
|
334 </div>
|
al@419
|
335 </section>
|
al@318
|
336 EOT
|
al@313
|
337
|
al@318
|
338 is_installed "glibc-locale"
|
al@318
|
339 [ $? = 1 ] &&
|
al@443
|
340 msg tip $(_ \
|
paul@319
|
341 "Can't see your language?<br/>You can \
|
pascal@441
|
342 <a href='pkgs.cgi?do=Install&glibc-locale'>install glibc-locale</a> \
|
paul@319
|
343 to see a larger list of available locales.")
|
al@318
|
344
|
al@313
|
345
|
al@419
|
346 cat <<EOT
|
al@419
|
347 <section>
|
al@443
|
348 <header>$(_ 'Available locales:')</header>
|
al@419
|
349 <form class="wide">
|
al@419
|
350 <table class="wide zebra">
|
al@419
|
351 <thead>
|
al@443
|
352 <tr><td>$(_ 'Code')</td>
|
al@443
|
353 <td>$(_ 'Language')</td>
|
al@443
|
354 <td>$(_ 'Territory')</td>
|
al@443
|
355 <td>$(_ 'Description')</td>
|
al@419
|
356 </tr>
|
al@419
|
357 </thead>
|
al@419
|
358 <tbody>
|
al@313
|
359 EOT
|
al@419
|
360 for locale in $(find /usr/share/i18n/locales -type f | sort); do
|
al@313
|
361 locale_name=$(basename $locale)
|
al@313
|
362 locale_title=$(grep -m 1 -e '^ *title' $locale | cut -d'"' -f2)
|
al@313
|
363 if [ -n "$locale_title" ]; then
|
al@419
|
364 sel=''; [ "$locale_name" == "$cur_loc" ] && sel='checked="checked"'
|
al@419
|
365 cat <<EOT
|
al@419
|
366 <tr>
|
al@419
|
367 <td>
|
al@419
|
368 <input type="radio" name="gen_locale" value="$locale_name" $sel id="$locale_name"/>
|
al@419
|
369 <label for="$locale_name">$locale_name</label>
|
al@419
|
370 </td>
|
al@419
|
371 <td>$(gettext -d iso_639 "$(grep -m 1 -e '^ *language' $locale | cut -d '"' -f2)")</td>
|
al@419
|
372 <td>$(gettext -d iso_3166 "$(grep -m 1 -e '^ *territory' $locale | cut -d '"' -f2)")</td>
|
al@419
|
373 <td>$locale_title</td>
|
al@419
|
374 </tr>
|
al@313
|
375 EOT
|
al@313
|
376 fi
|
al@313
|
377 done
|
al@419
|
378 cat <<EOT
|
al@419
|
379 </tbody>
|
al@419
|
380 </table>
|
al@419
|
381
|
al@419
|
382 <footer>
|
al@443
|
383 <button type="submit" data-icon="ok">$(_ 'Activate')</button>
|
al@419
|
384 </footer>
|
al@419
|
385 </form>
|
al@419
|
386 </section>
|
al@313
|
387 EOT
|
al@313
|
388 ;;
|
al@313
|
389
|
al@313
|
390
|
pankso@110
|
391 *)
|
pankso@110
|
392 #
|
paul@385
|
393 # Default system settings page
|
pankso@110
|
394 #
|
al@422
|
395
|
al@419
|
396 cat <<EOT
|
al@443
|
397 <h2>$(_ 'System settings')</h2>
|
al@419
|
398
|
al@443
|
399 <p>$(_ 'Manage system time, users or language settings')<p>
|
al@419
|
400
|
al@419
|
401 <form><!--
|
al@443
|
402 --><button name="users" data-icon="user" >$(_ 'Manage users' )</button><!--
|
al@443
|
403 --><button name="groups" data-icon="group">$(_ 'Manage groups')</button>
|
al@419
|
404 </form>
|
pankso@42
|
405
|
al@312
|
406 <section>
|
al@443
|
407 <header>$(_ 'System time')</header>
|
al@419
|
408 <div>
|
al@419
|
409 <form class="wide">
|
al@443
|
410 <fieldset><legend>$(_ 'Time zone:')</legend>
|
al@419
|
411 <select name="tz">
|
al@419
|
412 $(cd /usr/share/zoneinfo; find * -type f ! -name '*.tab' | sort | \
|
al@419
|
413 awk -vtz="$(cat /etc/TZ)" \
|
al@419
|
414 '{printf("<option%s>%s</option>", ($1 == tz)?" selected":"", $1)}')
|
al@419
|
415 </select>
|
al@443
|
416 <button name="do" value="settz" data-icon="ok">$(_ 'Change')</button>
|
al@419
|
417 </fieldset>
|
al@437
|
418
|
al@443
|
419 <fieldset><legend>$(_ 'System time:')</legend>
|
al@419
|
420 $(date | sed 's|[0-9][0-9]:[0-9:]*|<span id="time">&</span>|')
|
al@443
|
421 <button name="do" value="rdate" data-icon="sync">$(_ 'Sync online')</button>
|
al@419
|
422 </fieldset>
|
al@437
|
423
|
al@443
|
424 <fieldset id="hwclock1"><legend>$(_ 'Hardware clock:')</legend>
|
al@419
|
425 $(hwclock -ur | sed 's|0.000000 seconds||')
|
al@443
|
426 <button name="do" value="hwclock" id="hwclock" data-icon="clock">$(_ 'Set hardware clock')</button>
|
al@419
|
427 </fieldset>
|
al@437
|
428
|
al@443
|
429 <fieldset><legend>$(_ 'Set date')</legend>
|
al@419
|
430 <input type="number" name="day" value="$(date +%d)" min="1" max="31" size="4" required/>
|
al@419
|
431 <select name="month" value="$(date +%m)">
|
al@419
|
432 $(for i in $(seq 12); do
|
al@437
|
433 sel=''; [ "$i" == "$(date +%-m)" ] && sel=' selected'
|
al@437
|
434 printf "<option value=\"%s\"$sel>%s</option>" $(date -d $i.01-01:01 '+%m %B')
|
al@419
|
435 done)
|
al@419
|
436 </select>
|
al@419
|
437 <input type="number" name="year" value="$(date +%Y)" min="2015" max="2030" size="6" required/>
|
al@419
|
438 - <input type="number" name="hour" value="$(date +%H)" min="0" max="23" size="4" required/><!--
|
al@419
|
439 -->:<input type="number" name="min" value="$(date +%M)" min="0" max="59" size="4" required/><!--
|
al@419
|
440 -->:<input type="number" name="sec" value="00" min="0" max="59" size="4" required/>
|
al@443
|
441 <button name="do" value="date" data-icon="ok">$(_ 'Set date')</button>
|
al@419
|
442 </fieldset>
|
al@419
|
443 </form>
|
al@419
|
444 </div>
|
al@303
|
445
|
al@419
|
446 <script type="text/javascript">
|
al@419
|
447 // Live time on page
|
al@419
|
448 Date.prototype.timeNow = function() {
|
al@419
|
449 return ((this.getHours() < 10)?"0":"") + this.getHours() + ":" + ((this.getMinutes() < 10)?"0":"") + this.getMinutes() + ":" + ((this.getSeconds() < 10)?"0":"") + this.getSeconds();
|
al@419
|
450 }
|
al@419
|
451 setInterval(function(){document.getElementById('time').innerText = new Date().timeNow()}, 1000);
|
al@437
|
452
|
al@437
|
453 //document.getElementById('hwclock').disabled = 'disabled';
|
al@419
|
454 </script>
|
al@312
|
455 </section>
|
pankso@110
|
456 EOT
|
al@419
|
457
|
al@419
|
458
|
pankso@110
|
459 #
|
pankso@110
|
460 # Locale settings
|
pankso@110
|
461 #
|
al@419
|
462 cat <<EOT
|
al@312
|
463 <section>
|
al@443
|
464 <header id="locale">$(_ 'System language')</header>
|
al@419
|
465 <div>
|
al@419
|
466 <form>
|
pankso@42
|
467 EOT
|
pankso@42
|
468 # Check if a new locale was requested
|
pankso@42
|
469 if [ -n "$new_locale" ]; then
|
pankso@42
|
470 rm -rf /usr/lib/locale/$new_locale
|
pankso@42
|
471 localedef -i $new_locale -c -f UTF-8 \
|
pankso@42
|
472 /usr/lib/locale/$new_locale
|
pankso@42
|
473 # System configuration
|
pankso@42
|
474 echo "LANG=$new_locale" > /etc/locale.conf
|
pankso@42
|
475 echo "LC_ALL=$new_locale" >> /etc/locale.conf
|
al@443
|
476 msg warn "$(_ \
|
al@443
|
477 'You must logout and login again to your current session to use %s locale.' $new_locale)"
|
pankso@42
|
478 else
|
al@419
|
479 cat <<EOT
|
al@443
|
480 $(_ 'Current system locale:')
|
al@419
|
481 <strong>$(locale | grep LANG | cut -d= -f2)</strong>
|
al@443
|
482 <button name="locale" data-icon="locale">$(_ 'Change')</button>
|
al@419
|
483 EOT
|
pankso@42
|
484 fi
|
al@419
|
485 cat <<EOT
|
al@419
|
486 </div>
|
al@419
|
487 </form>
|
al@312
|
488 </section>
|
pankso@110
|
489
|
al@419
|
490
|
al@312
|
491 <section>
|
al@443
|
492 <header id="keymap">$(_ 'Keyboard layout')</header>
|
al@419
|
493 <div>
|
pascal@141
|
494 EOT
|
pascal@141
|
495 # Check if a new keymap was requested
|
pascal@141
|
496 if [ -n "$new_keymap" ]; then
|
pascal@141
|
497 echo "$new_keymap" > /etc/keymap.conf
|
pascal@141
|
498 if [ -x /bin/loadkeys ]; then
|
pascal@141
|
499 loadkeys $new_keymap
|
pascal@141
|
500 else
|
pascal@141
|
501 loadkmap < /usr/share/kmap/$new_keymap.kmap
|
pascal@141
|
502 fi
|
pascal@141
|
503 fi
|
al@419
|
504
|
pascal@142
|
505 keymap=$(cat /etc/keymap.conf)
|
al@443
|
506 _ 'Current console keymap: %s' $keymap
|
pascal@142
|
507 if [ -n "$keymap" ]; then
|
pascal@142
|
508 case "$keymap" in
|
pascal@142
|
509 fr_CH*)
|
pascal@142
|
510 keymap="ch" ;;
|
pascal@142
|
511 ru)
|
al@419
|
512 keymap="us,ru" ;;
|
pascal@142
|
513 slovene)
|
pascal@142
|
514 keymap=si ;;
|
pascal@142
|
515 *)
|
pascal@142
|
516 keymap=${keymap%-lat*}
|
pascal@142
|
517 keymap=${keymap%-abnt2} ;;
|
pascal@142
|
518 esac
|
pascal@142
|
519 keyboard_config=/etc/X11/xorg.conf.d/40-Keyboard.conf
|
al@419
|
520 cat <<EOT
|
al@419
|
521 <form id="settings"></form>
|
al@419
|
522 <form id="index" action="index.cgi"></form>
|
al@419
|
523 <br/>
|
al@443
|
524 $(_ 'Suggested keymap for Xorg:') $keymap
|
al@443
|
525 <button form="settings" name="apply_xorg_kbd" value="$keymap" data-icon="ok">$(_ 'Activate')</button>
|
al@443
|
526 <button form="index" name="file" value="$keyboard_config" data-icon="edit">$(_ 'Edit')</button>
|
al@419
|
527 <br/>
|
pascal@142
|
528 EOT
|
pascal@142
|
529 fi
|
al@419
|
530 cat <<EOT
|
al@419
|
531 <form>
|
al@443
|
532 $(_ 'Available keymaps:')
|
al@419
|
533 <select name="gen_keymap">
|
al@419
|
534 $(list_keymaps)
|
al@419
|
535 </select>
|
al@443
|
536 <button type="submit" data-icon="ok">$(_ 'Activate')</button>
|
al@419
|
537 </form>
|
al@419
|
538 </div>
|
al@312
|
539 </section>
|
pascal@141
|
540
|
al@419
|
541
|
al@312
|
542 <section>
|
al@443
|
543 <header>$(_ 'Panel configuration')</header>
|
al@419
|
544 <div>
|
al@419
|
545 <form class="wide">
|
al@443
|
546 <fieldset><legend>$(_ 'Style:')</legend>
|
al@419
|
547 <select name="style">$(list_styles)</select>
|
al@443
|
548 <button data-icon="ok">$(_ 'Activate')</button>
|
al@419
|
549 </fieldset>
|
al@419
|
550 </form>
|
al@419
|
551
|
al@443
|
552 <fieldset><legend>$(_ 'Configuration files:')</legend>
|
al@443
|
553 <button form="index" name="file" value="$CONFIG" data-icon="edit">$(_ 'Panel')</button>
|
al@443
|
554 <button form="index" name="file" value="$HTTPD_CONF" data-icon="edit">$(_ 'Server')</button>
|
al@419
|
555 </fieldset>
|
al@419
|
556
|
al@443
|
557 <p>$(_ 'TazPanel provides a debugging mode and page:')
|
pascal@441
|
558 <a href="index.cgi?debug">debug</a>
|
pankso@110
|
559 </p>
|
al@419
|
560 </div>
|
al@312
|
561 </section>
|
pankso@42
|
562 EOT
|
pankso@110
|
563 ;;
|
pankso@110
|
564 esac
|
pankso@42
|
565
|
pankso@42
|
566 xhtml_footer
|
pankso@42
|
567 exit 0
|