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
|
pankso@42
|
15
|
al@443
|
16 TITLE=$(_ 'TazPanel - Settings')
|
pankso@42
|
17
|
al@419
|
18
|
pascal@336
|
19 # Get system database. LDAP compatible.
|
al@419
|
20
|
al@437
|
21 getdb() {
|
pascal@336
|
22 getent $1 2>/dev/null || cat /etc/$1
|
pascal@336
|
23 }
|
pascal@336
|
24
|
al@437
|
25 listdb() {
|
pascal@336
|
26 for item in $(getdb $1 | cut -d ":" -f 1); do
|
pascal@336
|
27 echo "<option>$item</option>\n"
|
pascal@336
|
28 done
|
pascal@336
|
29 }
|
pascal@336
|
30
|
al@476
|
31 restart_lxpanel() {
|
al@476
|
32 # `lxpanelctl restart` exists, but it breaks often leaving us without any panel
|
al@489
|
33 lxpanel_pid="$(ps -o comm,pid | fgrep lxpanel | awk '{print $2}')"
|
al@489
|
34 lxpanel_user="$(ps -o comm,user | fgrep lxpanel | awk '{print $2}')"
|
al@489
|
35 lxpanel_comm="$(ps -o pid,args | grep -e "^\ *$lxpanel_pid " | awk '{$1="";print}')"
|
al@489
|
36
|
al@489
|
37 if [ "$USER" == "$lxpanel_user" ]; then
|
al@489
|
38 kill $lxpanel_pid
|
al@489
|
39 DISPLAY=':0.0' XAUTHORITY='/var/run/slim.auth' $lxpanel_comm 1>/tmp/debug1 2>/tmp/debug2 &
|
al@489
|
40 fi
|
al@476
|
41 }
|
al@419
|
42
|
al@419
|
43
|
al@419
|
44
|
pankso@42
|
45 #
|
pankso@42
|
46 # Commands executed before page loading.
|
pankso@42
|
47 #
|
pankso@42
|
48
|
pascal@81
|
49 case " $(GET) " in
|
pascal@115
|
50 *\ do\ *)
|
al@419
|
51 users=$(echo $QUERY_STRING | awk 'BEGIN{RS="&";FS="="}{if($1=="user") print $2}')
|
al@419
|
52 groups=$(echo $QUERY_STRING | awk 'BEGIN{RS="&";FS="="}{if($1=="group")print $2}')
|
al@419
|
53
|
al@419
|
54 case $(GET do) in
|
al@419
|
55
|
al@419
|
56 # Groups page
|
al@419
|
57 delgroups)
|
al@419
|
58 for i in $groups; do delgroup $i; done ;;
|
al@419
|
59 addgroup)
|
al@419
|
60 addgroup $groups ;;
|
al@419
|
61 addmember)
|
al@419
|
62 addgroup $(GET member) $groups ;;
|
al@419
|
63 delmember)
|
al@419
|
64 delgroup $(GET member) $groups ;;
|
al@419
|
65
|
al@419
|
66 # Users page
|
al@419
|
67 delusers)
|
al@419
|
68 for i in $users; do deluser $i; done ;;
|
al@419
|
69 lockusers)
|
al@419
|
70 for i in $users; do passwd -l $i | log; done ;;
|
al@419
|
71 unlockusers)
|
al@419
|
72 for i in $users; do passwd -u $i | log; done ;;
|
al@419
|
73 chpasswd)
|
al@419
|
74 echo "$users:$(GET password)" | chpasswd -m | log ;;
|
al@419
|
75 adduser)
|
al@419
|
76 if [ -n "$users" ]; then
|
al@419
|
77 name=$(GET name); name=${name:-SliTaz User}
|
al@419
|
78 adduser -D -s /bin/sh -g "$name" -G users -h /home/$users $users
|
al@419
|
79 echo "$user:$(GET passwd)" | chpasswd -m | log
|
al@419
|
80 for i in audio cdrom floppy video tty; do addgroup $users $i; done
|
al@419
|
81 fi ;;
|
al@419
|
82
|
al@419
|
83 # System time
|
al@419
|
84 settz)
|
al@419
|
85 GET tz > /etc/TZ;;
|
al@419
|
86 date) # normalize to two digits
|
al@419
|
87 date $(printf '%02d%02d%02d%02d%d.%02d' "$(GET month)" "$(GET day)" "$(GET hour)" "$(GET min)" "$(GET year)" "$(GET sec)") >/dev/null;;
|
al@419
|
88 rdate)
|
al@419
|
89 rdate -s tick.greyware.com ;;
|
al@419
|
90 hwclock)
|
al@419
|
91 hwclock -w -u ;;
|
al@419
|
92
|
al@419
|
93 esac
|
al@419
|
94 ;;
|
al@419
|
95
|
al@419
|
96
|
pascal@81
|
97 *\ gen_locale\ *)
|
pascal@81
|
98 new_locale=$(GET gen_locale) ;;
|
pascal@141
|
99 *\ gen_keymap\ *)
|
pascal@141
|
100 new_keymap=$(GET gen_keymap) ;;
|
pascal@142
|
101 *\ apply_xorg_kbd\ *)
|
pascal@142
|
102 sed -i "s/XkbLayout.*/XkbLayout \" \"$(GET apply_xorg_kbd)\"/" \
|
pascal@142
|
103 /etc/X11/xorg.conf.d/40-Keyboard.conf ;;
|
pankso@110
|
104 *\ style*)
|
pankso@110
|
105 sed -i s/'^STYLE.*'/"STYLE=\"$(GET style)\""/ $CONFIG
|
al@292
|
106 . $CONFIG ;;
|
al@474
|
107
|
al@474
|
108
|
al@474
|
109 *\ tweak\ *)
|
al@474
|
110 HOME="$(awk -F: -vu=$REMOTE_USER '$1==u{print $6}' /etc/passwd)"
|
al@474
|
111 [ -z "$HOME" ] && exit 0
|
al@474
|
112
|
al@476
|
113 dd="$HOME/.local/share/desktop-directories"; sd="$dd/SliTazMenu.directory"
|
al@476
|
114
|
al@474
|
115 case $REMOTE_USER in
|
al@474
|
116 root) color=31; ind='#';;
|
al@474
|
117 *) color=32; ind='$';;
|
al@474
|
118 esac
|
al@474
|
119
|
al@474
|
120 case $(GET tweak) in
|
al@474
|
121 monochrome)
|
al@474
|
122 # PS1='\u@\h:\w\$ '
|
al@474
|
123 sed -i "s|^PS1=.*|PS1='\\\\u@\\\\h:\\\\w\\\\$ind '|" $HOME/.profile;;
|
al@474
|
124 colored)
|
al@474
|
125 # PS1='\[\e[0;32m\]\u@\h\[\e[0m\]:\[\e[0;33m\]\w\[\e[0m\]\$ '
|
al@474
|
126 sed -i "s|^PS1=.*|PS1='\\\\\\[\\\\e\[0;${color}m\\\\\\]\\\\u@\\\\h\\\\\\[\\\\e\\[0m\\\\\\]:\\\\\\[\\\\e\\[0;33m\\\\\\]\\\\w\\\\\\[\\\\e\\[0m\\\\\\]\\\\$ind '|" $HOME/.profile;;
|
al@474
|
127 slitaz-*)
|
al@474
|
128 lxpanel="$HOME/.config/lxpanel"
|
al@474
|
129 if [ ! -e "$lxpanel" ]; then
|
al@474
|
130 mkdir -p "$lxpanel"; cp /etc/lxpanel/default /etc/lxpanel/slitaz $lxpanel
|
al@474
|
131 fi
|
al@489
|
132
|
al@476
|
133 for panel in $(find $lxpanel -type f -iname panel); do
|
al@474
|
134 awk -vicon="/usr/share/pixmaps/$(GET tweak).png" '
|
al@474
|
135 BEGIN{ found = "0"; }
|
al@474
|
136 {
|
al@474
|
137 if ($1 == "Plugin") { found = "1"; }
|
al@474
|
138
|
al@474
|
139 if (found == "1" && $1 == "type") {
|
al@474
|
140 if ($3 == "menu") found = "2"; else found = "0";
|
al@474
|
141 }
|
al@474
|
142
|
al@474
|
143 if (found == "2" && $1 == "Plugin") { found = "0"; }
|
al@474
|
144
|
al@474
|
145 if (found == "2" && index($1, "image")) {
|
al@474
|
146 printf " image=%s\n", icon;
|
al@474
|
147 found = 0;
|
al@474
|
148 } else {
|
al@474
|
149 print;
|
al@474
|
150 }
|
al@474
|
151 }
|
al@474
|
152 ' $panel > $panel.new
|
al@474
|
153 mv -f $panel.new $panel
|
al@474
|
154 done
|
al@474
|
155
|
al@476
|
156 restart_lxpanel;;
|
al@474
|
157 menu-notext)
|
al@474
|
158 mkdir -p $dd
|
al@476
|
159 echo -e '[Desktop Entry]\nType=Directory\nName=' > $sd
|
al@476
|
160 restart_lxpanel;;
|
al@474
|
161 menu-text)
|
al@476
|
162 [ -f "$sd" ] && rm "$sd"
|
al@476
|
163 restart_lxpanel;;
|
al@474
|
164 esac
|
al@474
|
165 exit 0
|
al@474
|
166 ;;
|
al@474
|
167
|
al@474
|
168
|
al@474
|
169 *\ menuIcon\ *)
|
al@474
|
170 icon="/usr/share/pixmaps/$(GET menuIcon).png"
|
al@474
|
171 [ ! -r $icon ] && exit 0
|
al@474
|
172 header "Content-Type: image/png"; cat $icon; exit 0
|
al@474
|
173 ;;
|
pankso@42
|
174 esac
|
pankso@42
|
175
|
al@419
|
176
|
al@419
|
177
|
al@419
|
178
|
al@419
|
179
|
pankso@42
|
180 #
|
pankso@42
|
181 # Default xHTML content
|
pankso@42
|
182 #
|
al@419
|
183
|
al@474
|
184 header
|
pankso@42
|
185 xhtml_header
|
pankso@67
|
186
|
pankso@110
|
187 case " $(GET) " in
|
pascal@336
|
188 *\ group*)
|
pascal@336
|
189 #
|
pascal@336
|
190 # Groups management
|
pascal@336
|
191 #
|
al@474
|
192 check_root_tazpanel
|
al@474
|
193
|
pascal@336
|
194 cat <<EOT
|
al@443
|
195 <h2 id="groups">$(_ 'Manage groups')</h2>
|
pascal@336
|
196
|
pascal@336
|
197
|
al@419
|
198 <section>
|
al@419
|
199 <form class="wide">
|
al@419
|
200 <header>
|
al@419
|
201 <input type="hidden" name="groups"/>
|
al@443
|
202 <!-- $(_ 'Selection:') -->
|
al@443
|
203 <button name="do" value="delgroups" data-icon="delete">$(_ 'Delete group')</button>
|
al@419
|
204 </header>
|
al@419
|
205
|
al@419
|
206 <div class="scroll">
|
al@419
|
207 <table class="wide zebra scroll">
|
al@419
|
208 <thead>
|
al@419
|
209 <tr class="thead">
|
al@443
|
210 <td>$(_ 'Group')</td>
|
al@443
|
211 <td>$(_ 'Group ID')</td>
|
al@443
|
212 <td>$(_ 'Members')</td>
|
al@419
|
213 </tr>
|
al@419
|
214 </thead>
|
al@419
|
215 <tbody>
|
pascal@336
|
216 EOT
|
al@419
|
217 for group in $(getdb group | cut -d ":" -f 1); do
|
pascal@336
|
218 IFS=':'
|
pascal@336
|
219 set -- $(getdb group | grep "^$group:")
|
pascal@336
|
220 unset IFS
|
pascal@336
|
221 gid=$3
|
pascal@336
|
222 members=$4
|
pascal@336
|
223 cat <<EOT
|
al@419
|
224 <tr>
|
al@419
|
225 <td><input type="checkbox" name="group" value="$group" id="$group"/>
|
al@419
|
226 <label for="$group" data-icon="group">$group</label></td>
|
al@419
|
227 <td>$gid</td>
|
al@419
|
228 <td>${members//,/, }</td>
|
al@419
|
229 </tr>
|
pascal@336
|
230 EOT
|
pascal@336
|
231 done
|
al@419
|
232 cat <<EOT
|
al@419
|
233 </tbody>
|
al@419
|
234 </table>
|
al@419
|
235 </div>
|
al@419
|
236 </form>
|
al@419
|
237 </section>
|
al@419
|
238
|
pascal@336
|
239
|
pascal@336
|
240 <section>
|
al@443
|
241 <header>$(_ 'Add a new group')</header>
|
al@419
|
242 <form>
|
al@419
|
243 <input type="hidden" name="groups"/>
|
al@419
|
244 <table>
|
al@443
|
245 <tr><td>$(_ 'Group name:')</td>
|
al@419
|
246 <td><input type="text" name="group"/></td>
|
al@419
|
247 </tr>
|
al@419
|
248 <tr><td colspan="2">
|
al@443
|
249 <button type="submit" name="do" value="addgroup" data-icon="add">$(_ 'Create group')</button>
|
al@419
|
250 </td></tr>
|
al@419
|
251 </table>
|
al@419
|
252 </form>
|
pascal@336
|
253 </section>
|
pascal@336
|
254
|
al@419
|
255
|
pascal@336
|
256 <section>
|
al@443
|
257 <header>$(_ 'Manage group membership')</header>
|
al@419
|
258 <form>
|
al@419
|
259 <input type="hidden" name="groups"/>
|
al@419
|
260 <table>
|
al@419
|
261 <tr>
|
al@443
|
262 <td>$(_ 'Group name:')</td>
|
al@419
|
263 <td><select name="group">$(listdb group)</select></td>
|
al@443
|
264 <td>$(_ 'User name:')</td>
|
al@419
|
265 <td><select name="member">$(listdb passwd)</select></td>
|
al@419
|
266 </tr>
|
al@419
|
267 <tr>
|
al@419
|
268 <td colspan="2">
|
al@443
|
269 <button name="do" value="addmember" data-icon="add">$(_ 'Add user')</button>
|
al@419
|
270 </td>
|
al@419
|
271 <td colspan="2">
|
al@443
|
272 <button name="do" value="delmember" data-icon="delete">$(_ 'Remove user')</button>
|
al@419
|
273 </td>
|
al@419
|
274 </tr>
|
al@419
|
275 </table>
|
al@419
|
276 </form>
|
pascal@336
|
277 </section>
|
pascal@336
|
278
|
pascal@336
|
279 EOT
|
pascal@336
|
280 ;;
|
pascal@336
|
281
|
al@419
|
282
|
pankso@110
|
283 *\ user*)
|
pankso@110
|
284 #
|
pankso@110
|
285 # Users management
|
pankso@110
|
286 #
|
al@474
|
287 check_root_tazpanel
|
al@474
|
288
|
pankso@110
|
289 cat <<EOT
|
al@443
|
290 <h2 id="users">$(_ 'Manage users')</h2>
|
al@303
|
291
|
al@419
|
292 <section>
|
al@419
|
293 <form class="wide">
|
al@419
|
294 <header>
|
al@443
|
295 <!--$(_ 'Selection:')-->
|
al@443
|
296 <button name="do" value="delusers" data-icon="delete">$(_ 'Delete user')</button>
|
al@443
|
297 <button name="do" value="lockusers" data-icon="lock" >$(_ 'Lock user' )</button>
|
al@443
|
298 <button name="do" value="unlockusers" data-icon="unlock">$(_ 'Unlock user')</button>
|
al@419
|
299 </header>
|
al@303
|
300
|
al@419
|
301 <table class="wide zebra center">
|
al@419
|
302 <thead>
|
al@419
|
303 <tr>
|
al@443
|
304 <td>$(_ 'Login')</td>
|
al@443
|
305 <td>$(_ 'User ID')</td>
|
al@443
|
306 <td>$(_ 'Name')</td>
|
al@443
|
307 <td>$(_ 'Home')</td>
|
al@443
|
308 <td>$(_ 'Shell')</td>
|
al@419
|
309 </tr>
|
al@419
|
310 </thead>
|
al@419
|
311 </tbody>
|
pascal@115
|
312 EOT
|
al@419
|
313 for login in $(getdb passwd | cut -d ":" -f 1); do
|
pascal@115
|
314 if [ -d /home/$login ]; then
|
pascal@115
|
315 colorlogin=$login
|
pascal@115
|
316 grep -qs "^$login:!" /etc/shadow &&
|
pascal@115
|
317 colorlogin="<span style='color: red;'>$login</span>"
|
pascal@115
|
318 IFS=':'
|
pascal@336
|
319 set -- $(getdb passwd | grep "^$login:")
|
pascal@115
|
320 unset IFS
|
pascal@115
|
321 cat <<EOT
|
pascal@115
|
322 <tr>
|
al@419
|
323 <td style="white-space: nowrap">
|
al@419
|
324 <input type="checkbox" name="user" value="$login" id="$login"/>
|
al@419
|
325 <label for="$login" data-icon="user">$colorlogin</label></td>
|
al@419
|
326 <td>$3:$4</td>
|
al@419
|
327 <td>$(echo $5 | sed s/,.*//)</td>
|
al@419
|
328 <td>$6</td>
|
al@419
|
329 <td>$7</td>
|
pascal@115
|
330 </tr>
|
pascal@115
|
331 EOT
|
pankso@110
|
332 fi
|
pankso@110
|
333 done
|
al@419
|
334 cat <<EOT
|
al@419
|
335 </tbody>
|
al@419
|
336 </table>
|
al@303
|
337 EOT
|
al@419
|
338 cat <<EOT
|
al@419
|
339 <footer>
|
al@419
|
340 <div>
|
al@443
|
341 $(_ 'Password:')
|
al@419
|
342 <input type="password" name="password"/>
|
al@443
|
343 <button type="submit" name="do" value="chpasswd" data-icon="ok">$(_ 'Change password')</button>
|
al@419
|
344 </div>
|
al@419
|
345 </footer>
|
al@419
|
346 </form>
|
al@419
|
347 </section>
|
al@419
|
348
|
pankso@42
|
349
|
al@312
|
350 <section>
|
al@443
|
351 <header>$(_ 'Add a new user')</header>
|
al@303
|
352
|
al@419
|
353 <form>
|
al@419
|
354 <input type="hidden" name="users"/>
|
al@419
|
355 <table class="summary">
|
al@443
|
356 <tr><td>$(_ 'User login:')</td>
|
al@419
|
357 <td><input type="text" name="user" size="30" pattern="[a-z]*"/></td></tr>
|
al@443
|
358 <tr><td>$(_ 'User name:')</td>
|
al@419
|
359 <td><input type="text" name="name" size="30"/></td></tr>
|
al@443
|
360 <tr><td>$(_ 'User password:')</td>
|
al@419
|
361 <td><input type="password" name="passwd" size="30"/></td></tr>
|
al@419
|
362 </table>
|
al@419
|
363
|
al@419
|
364 <footer>
|
al@443
|
365 <button type="submit" name="do" value="adduser" data-icon="add">$(_ 'Create user')</button>
|
al@419
|
366 </footer>
|
al@419
|
367 </form>
|
al@312
|
368 </section>
|
al@470
|
369 EOT
|
pascal@147
|
370
|
al@470
|
371 # `who` output is empty in the Live mode
|
al@470
|
372 if [ -n "$(who)" ]; then
|
al@470
|
373 cat <<EOT
|
al@312
|
374 <section>
|
al@443
|
375 <header>$(_ 'Current user sessions')</header>
|
al@419
|
376 <pre>$(who)</pre>
|
al@312
|
377 </section>
|
al@470
|
378 EOT
|
al@470
|
379 fi
|
al@303
|
380
|
al@470
|
381 # `last` output is empty (just header) in the Live mode
|
al@470
|
382 if [ "$(last | wc -l)" != "1" ]; then
|
al@470
|
383 cat <<EOT
|
al@312
|
384 <section>
|
al@443
|
385 <header>$(_ 'Last user sessions')</header>
|
al@419
|
386 <div class="scroll"><pre>$(last)</pre></div>
|
al@312
|
387 </section>
|
pankso@42
|
388 EOT
|
al@470
|
389 fi
|
pankso@110
|
390 ;;
|
al@313
|
391
|
al@313
|
392
|
al@313
|
393 *\ locale*)
|
al@313
|
394 #
|
al@313
|
395 # Choose locale
|
al@313
|
396 #
|
al@474
|
397 check_root_tazpanel
|
al@474
|
398
|
al@443
|
399 LOADING_MSG="$(_ 'Please wait...')"; loading_msg
|
al@419
|
400
|
al@313
|
401 cur_loc=$(locale | grep LANG | cut -d= -f2)
|
al@419
|
402 cat <<EOT
|
al@443
|
403 <h2 id="locale">$(_ 'Choose locale')</h2>
|
al@313
|
404
|
al@419
|
405 <section>
|
al@443
|
406 <header>$(_ 'Current locale settings:')</header>
|
al@419
|
407 <div>
|
al@419
|
408 <pre>$(locale)</pre>
|
al@419
|
409 </div>
|
al@419
|
410 </section>
|
al@313
|
411
|
al@419
|
412 <section>
|
al@443
|
413 <header>$(_ 'Locales that are currently installed on the machine:')</header>
|
al@419
|
414 <div>
|
al@419
|
415 <pre>$(locale -a)</pre>
|
al@419
|
416 </div>
|
al@419
|
417 </section>
|
al@318
|
418 EOT
|
al@313
|
419
|
al@318
|
420 is_installed "glibc-locale"
|
al@318
|
421 [ $? = 1 ] &&
|
al@443
|
422 msg tip $(_ \
|
paul@319
|
423 "Can't see your language?<br/>You can \
|
pascal@441
|
424 <a href='pkgs.cgi?do=Install&glibc-locale'>install glibc-locale</a> \
|
paul@319
|
425 to see a larger list of available locales.")
|
al@318
|
426
|
al@313
|
427
|
al@419
|
428 cat <<EOT
|
al@419
|
429 <section>
|
al@443
|
430 <header>$(_ 'Available locales:')</header>
|
al@419
|
431 <form class="wide">
|
al@419
|
432 <table class="wide zebra">
|
al@419
|
433 <thead>
|
al@443
|
434 <tr><td>$(_ 'Code')</td>
|
al@443
|
435 <td>$(_ 'Language')</td>
|
al@443
|
436 <td>$(_ 'Territory')</td>
|
al@443
|
437 <td>$(_ 'Description')</td>
|
al@419
|
438 </tr>
|
al@419
|
439 </thead>
|
al@419
|
440 <tbody>
|
al@313
|
441 EOT
|
al@419
|
442 for locale in $(find /usr/share/i18n/locales -type f | sort); do
|
al@313
|
443 locale_name=$(basename $locale)
|
al@313
|
444 locale_title=$(grep -m 1 -e '^ *title' $locale | cut -d'"' -f2)
|
al@313
|
445 if [ -n "$locale_title" ]; then
|
al@419
|
446 sel=''; [ "$locale_name" == "$cur_loc" ] && sel='checked="checked"'
|
al@419
|
447 cat <<EOT
|
al@419
|
448 <tr>
|
al@419
|
449 <td>
|
al@419
|
450 <input type="radio" name="gen_locale" value="$locale_name" $sel id="$locale_name"/>
|
al@419
|
451 <label for="$locale_name">$locale_name</label>
|
al@419
|
452 </td>
|
al@419
|
453 <td>$(gettext -d iso_639 "$(grep -m 1 -e '^ *language' $locale | cut -d '"' -f2)")</td>
|
al@419
|
454 <td>$(gettext -d iso_3166 "$(grep -m 1 -e '^ *territory' $locale | cut -d '"' -f2)")</td>
|
al@419
|
455 <td>$locale_title</td>
|
al@419
|
456 </tr>
|
al@313
|
457 EOT
|
al@313
|
458 fi
|
al@313
|
459 done
|
al@419
|
460 cat <<EOT
|
al@419
|
461 </tbody>
|
al@419
|
462 </table>
|
al@419
|
463
|
al@419
|
464 <footer>
|
al@443
|
465 <button type="submit" data-icon="ok">$(_ 'Activate')</button>
|
al@419
|
466 </footer>
|
al@419
|
467 </form>
|
al@419
|
468 </section>
|
al@313
|
469 EOT
|
al@313
|
470 ;;
|
al@313
|
471
|
al@313
|
472
|
al@474
|
473 *\ tweaks\ *)
|
al@474
|
474 #
|
al@474
|
475 # Small tweaks for user
|
al@474
|
476 #
|
al@474
|
477
|
al@474
|
478 user="$REMOTE_USER"; host="$(hostname)"
|
al@474
|
479 HOME="$(awk -F: -vu=$user '$1==u{print $6}' /etc/passwd)"
|
al@474
|
480 font="${TERM_FONT:-monospace}"; palette=$(echo $TERM_PALETTE | tr A-Z a-z)
|
al@474
|
481 case $user in
|
al@474
|
482 root) color=31; ind="#";;
|
al@474
|
483 *) color=32; ind="$";;
|
al@474
|
484 esac
|
al@474
|
485
|
al@474
|
486 prompt_bw="$user@$host:/usr/bin$ind"
|
al@474
|
487 prompt_c="<span class=\"color$color\">$user@$host</span>:<span class=\"color33\">/usr/bin</span>$ind"
|
al@474
|
488 cursor="<span class=\"color47\">_</span>"
|
al@474
|
489 cat <<EOT
|
al@474
|
490 <script type="text/javascript">
|
al@474
|
491 function tweak(tweakName) {
|
al@474
|
492 // Send request to the server
|
al@474
|
493 var hiddenImg = document.createElement('IMG');
|
al@474
|
494 hiddenImg.src = "settings.cgi?tweak=" + tweakName;
|
al@474
|
495 }
|
al@474
|
496 </script>
|
al@474
|
497
|
al@474
|
498 <section>
|
al@474
|
499 <header>$(_ 'Small quick tweaks for user %s' "$user")</header>
|
al@474
|
500
|
al@474
|
501 <fieldset><legend>$(_ 'Terminal prompt')</legend>
|
al@474
|
502 <table class="wide">
|
al@474
|
503 <tr>
|
al@474
|
504 <td>
|
al@474
|
505 <label>
|
al@474
|
506 <input type="radio" name="termPrompt" onclick="tweak('monochrome')"/>
|
al@474
|
507 $(_ 'Monochrome')
|
al@474
|
508 </label>
|
al@474
|
509 <pre class="term $palette" style="font-family: '$font'; height: 5rem;">
|
al@474
|
510 $prompt_bw uname -r<br/>$(uname -r)<br/>$prompt_bw date<br/>$(date)<br/>$prompt_bw $cursor
|
al@474
|
511 </pre>
|
al@474
|
512 </td>
|
al@474
|
513 <td>
|
al@474
|
514 <label>
|
al@474
|
515 <input type="radio" name="termPrompt" onclick="tweak('colored')"/>
|
al@474
|
516 $(_ 'Colored')
|
al@474
|
517 </label>
|
al@474
|
518 <pre class="term $palette" style="font-family: '$font'; height: 5rem;">
|
al@474
|
519 $prompt_c uname -r<br/>$(uname -r)<br/>$prompt_c date<br/>$(date)<br/>$prompt_c $cursor
|
al@474
|
520 </pre>
|
al@474
|
521 </td>
|
al@474
|
522 </tr>
|
al@474
|
523 </table>
|
al@474
|
524
|
al@474
|
525 <p>$(_ 'Manual edit: %s' "<a data-icon=\"conf\" href="index.cgi?file=$HOME/.profile">~/.profile</a>")<br/>
|
al@474
|
526 $(_ 'To take effect: log out and log in to system or execute command in the terminal:')</p>
|
al@474
|
527
|
al@474
|
528 <pre>. ~/.profile</pre>
|
al@474
|
529 </fieldset>
|
al@474
|
530
|
al@474
|
531 <br/>
|
al@474
|
532
|
al@474
|
533 <fieldset>
|
al@474
|
534 <legend>$(_ 'Menu button appearance')</legend>
|
al@474
|
535 <table class="wide">
|
al@474
|
536 <tr>
|
al@474
|
537 <td style="vertical-align: top">
|
al@474
|
538 <fieldset>
|
al@474
|
539 <legend>$(_ 'Icon:')</legend>
|
al@474
|
540 <label>
|
al@474
|
541 <input type="radio" name="menuIcon" onclick="tweak('slitaz-menu-empty')"/>
|
al@474
|
542 $(_ 'Do not show')
|
al@474
|
543 </label><br/>
|
al@474
|
544 <label>
|
al@474
|
545 <input type="radio" name="menuIcon" onclick="tweak('slitaz-button-red')"/>
|
al@474
|
546 <img src="?menuIcon=slitaz-button-red"/>
|
al@474
|
547 </label><br/>
|
al@474
|
548 <label>
|
al@474
|
549 <input type="radio" name="menuIcon" onclick="tweak('slitaz-menu')"/>
|
al@474
|
550 <img src="?menuIcon=slitaz-menu"/>
|
al@474
|
551 </label><br/>
|
al@474
|
552 <label>
|
al@474
|
553 <input type="radio" name="menuIcon" onclick="tweak('slitaz-button')"/>
|
al@474
|
554 <img src="?menuIcon=slitaz-button"/>
|
al@474
|
555 </label>
|
al@474
|
556 </fieldset>
|
al@474
|
557 </td>
|
al@474
|
558 <td style="vertical-align: top">
|
al@474
|
559 <fieldset>
|
al@474
|
560 <legend>$(_ 'Text:')</legend>
|
al@474
|
561 <label>
|
al@474
|
562 <input type="radio" name="menuText" onclick="tweak('menu-notext')"/>
|
al@474
|
563 $(_ 'Do not show')
|
al@474
|
564 </label><br/>
|
al@474
|
565 <label>
|
al@474
|
566 <input type="radio" name="menuText" onclick="tweak('menu-text')"/>
|
al@474
|
567 $(_ 'Show text')
|
al@474
|
568 </label>
|
al@474
|
569 </fieldset>
|
al@474
|
570 </td>
|
al@474
|
571 </tr>
|
al@474
|
572 </table>
|
al@474
|
573 <p>$(_ 'Manual edit: %s' \
|
al@474
|
574 "<a data-icon=\"conf\" href=\"index.cgi?file=$HOME/.local/share/desktop-directories/SliTazMenu.directory\">~/.local/share/desktop-directories/SliTazMenu.directory</a>
|
al@474
|
575 $(
|
al@474
|
576 find $HOME/.config/lxpanel -type f -name panel | awk -vh="$HOME" \
|
al@474
|
577 '{ printf "<a data-icon=\"conf\" href=\"index.cgi?file=%s\">%s</a> ", $1, gensub(h, "~", "")}'
|
al@474
|
578 )")</p>
|
al@474
|
579 </fieldset>
|
al@474
|
580 </section>
|
al@474
|
581 EOT
|
al@474
|
582 ;;
|
al@474
|
583
|
al@474
|
584
|
pankso@110
|
585 *)
|
pankso@110
|
586 #
|
paul@385
|
587 # Default system settings page
|
pankso@110
|
588 #
|
al@474
|
589 check_root_tazpanel
|
al@422
|
590
|
al@419
|
591 cat <<EOT
|
al@443
|
592 <h2>$(_ 'System settings')</h2>
|
al@419
|
593
|
al@443
|
594 <p>$(_ 'Manage system time, users or language settings')<p>
|
al@419
|
595
|
al@419
|
596 <form><!--
|
al@443
|
597 --><button name="users" data-icon="user" >$(_ 'Manage users' )</button><!--
|
al@443
|
598 --><button name="groups" data-icon="group">$(_ 'Manage groups')</button>
|
al@419
|
599 </form>
|
pankso@42
|
600
|
al@312
|
601 <section>
|
al@443
|
602 <header>$(_ 'System time')</header>
|
al@419
|
603 <div>
|
al@419
|
604 <form class="wide">
|
al@443
|
605 <fieldset><legend>$(_ 'Time zone:')</legend>
|
al@419
|
606 <select name="tz">
|
al@419
|
607 $(cd /usr/share/zoneinfo; find * -type f ! -name '*.tab' | sort | \
|
al@419
|
608 awk -vtz="$(cat /etc/TZ)" \
|
al@419
|
609 '{printf("<option%s>%s</option>", ($1 == tz)?" selected":"", $1)}')
|
al@419
|
610 </select>
|
al@443
|
611 <button name="do" value="settz" data-icon="ok">$(_ 'Change')</button>
|
al@419
|
612 </fieldset>
|
al@437
|
613
|
al@443
|
614 <fieldset><legend>$(_ 'System time:')</legend>
|
al@419
|
615 $(date | sed 's|[0-9][0-9]:[0-9:]*|<span id="time">&</span>|')
|
al@443
|
616 <button name="do" value="rdate" data-icon="sync">$(_ 'Sync online')</button>
|
al@419
|
617 </fieldset>
|
al@437
|
618
|
al@443
|
619 <fieldset id="hwclock1"><legend>$(_ 'Hardware clock:')</legend>
|
al@419
|
620 $(hwclock -ur | sed 's|0.000000 seconds||')
|
al@443
|
621 <button name="do" value="hwclock" id="hwclock" data-icon="clock">$(_ 'Set hardware clock')</button>
|
al@419
|
622 </fieldset>
|
al@437
|
623
|
al@443
|
624 <fieldset><legend>$(_ 'Set date')</legend>
|
al@419
|
625 <input type="number" name="day" value="$(date +%d)" min="1" max="31" size="4" required/>
|
al@419
|
626 <select name="month" value="$(date +%m)">
|
al@419
|
627 $(for i in $(seq 12); do
|
al@437
|
628 sel=''; [ "$i" == "$(date +%-m)" ] && sel=' selected'
|
al@437
|
629 printf "<option value=\"%s\"$sel>%s</option>" $(date -d $i.01-01:01 '+%m %B')
|
al@419
|
630 done)
|
al@419
|
631 </select>
|
al@419
|
632 <input type="number" name="year" value="$(date +%Y)" min="2015" max="2030" size="6" required/>
|
al@419
|
633 - <input type="number" name="hour" value="$(date +%H)" min="0" max="23" size="4" required/><!--
|
al@419
|
634 -->:<input type="number" name="min" value="$(date +%M)" min="0" max="59" size="4" required/><!--
|
al@419
|
635 -->:<input type="number" name="sec" value="00" min="0" max="59" size="4" required/>
|
al@443
|
636 <button name="do" value="date" data-icon="ok">$(_ 'Set date')</button>
|
al@419
|
637 </fieldset>
|
al@419
|
638 </form>
|
al@419
|
639 </div>
|
al@303
|
640
|
al@419
|
641 <script type="text/javascript">
|
al@419
|
642 // Live time on page
|
al@419
|
643 Date.prototype.timeNow = function() {
|
al@419
|
644 return ((this.getHours() < 10)?"0":"") + this.getHours() + ":" + ((this.getMinutes() < 10)?"0":"") + this.getMinutes() + ":" + ((this.getSeconds() < 10)?"0":"") + this.getSeconds();
|
al@419
|
645 }
|
al@419
|
646 setInterval(function(){document.getElementById('time').innerText = new Date().timeNow()}, 1000);
|
al@437
|
647
|
al@437
|
648 //document.getElementById('hwclock').disabled = 'disabled';
|
al@419
|
649 </script>
|
al@312
|
650 </section>
|
pankso@110
|
651 EOT
|
al@419
|
652
|
al@419
|
653
|
pankso@110
|
654 #
|
pankso@110
|
655 # Locale settings
|
pankso@110
|
656 #
|
al@419
|
657 cat <<EOT
|
al@312
|
658 <section>
|
al@443
|
659 <header id="locale">$(_ 'System language')</header>
|
al@419
|
660 <div>
|
al@419
|
661 <form>
|
pankso@42
|
662 EOT
|
pankso@42
|
663 # Check if a new locale was requested
|
pankso@42
|
664 if [ -n "$new_locale" ]; then
|
pankso@42
|
665 rm -rf /usr/lib/locale/$new_locale
|
pankso@42
|
666 localedef -i $new_locale -c -f UTF-8 \
|
pankso@42
|
667 /usr/lib/locale/$new_locale
|
pankso@42
|
668 # System configuration
|
pankso@42
|
669 echo "LANG=$new_locale" > /etc/locale.conf
|
pankso@42
|
670 echo "LC_ALL=$new_locale" >> /etc/locale.conf
|
al@443
|
671 msg warn "$(_ \
|
al@443
|
672 'You must logout and login again to your current session to use %s locale.' $new_locale)"
|
pankso@42
|
673 else
|
al@419
|
674 cat <<EOT
|
al@443
|
675 $(_ 'Current system locale:')
|
al@419
|
676 <strong>$(locale | grep LANG | cut -d= -f2)</strong>
|
al@443
|
677 <button name="locale" data-icon="locale">$(_ 'Change')</button>
|
al@419
|
678 EOT
|
pankso@42
|
679 fi
|
al@419
|
680 cat <<EOT
|
al@419
|
681 </div>
|
al@419
|
682 </form>
|
al@312
|
683 </section>
|
pankso@110
|
684
|
al@419
|
685
|
al@312
|
686 <section>
|
al@443
|
687 <header id="keymap">$(_ 'Keyboard layout')</header>
|
al@419
|
688 <div>
|
pascal@141
|
689 EOT
|
pascal@141
|
690 # Check if a new keymap was requested
|
pascal@141
|
691 if [ -n "$new_keymap" ]; then
|
pascal@141
|
692 echo "$new_keymap" > /etc/keymap.conf
|
pascal@141
|
693 if [ -x /bin/loadkeys ]; then
|
pascal@141
|
694 loadkeys $new_keymap
|
pascal@141
|
695 else
|
pascal@141
|
696 loadkmap < /usr/share/kmap/$new_keymap.kmap
|
pascal@141
|
697 fi
|
pascal@141
|
698 fi
|
al@419
|
699
|
pascal@142
|
700 keymap=$(cat /etc/keymap.conf)
|
al@443
|
701 _ 'Current console keymap: %s' $keymap
|
pascal@142
|
702 if [ -n "$keymap" ]; then
|
pascal@142
|
703 case "$keymap" in
|
pascal@142
|
704 fr_CH*)
|
pascal@142
|
705 keymap="ch" ;;
|
pascal@142
|
706 ru)
|
al@419
|
707 keymap="us,ru" ;;
|
pascal@142
|
708 slovene)
|
pascal@142
|
709 keymap=si ;;
|
pascal@142
|
710 *)
|
pascal@142
|
711 keymap=${keymap%-lat*}
|
pascal@142
|
712 keymap=${keymap%-abnt2} ;;
|
pascal@142
|
713 esac
|
pascal@142
|
714 keyboard_config=/etc/X11/xorg.conf.d/40-Keyboard.conf
|
al@419
|
715 cat <<EOT
|
al@419
|
716 <form id="settings"></form>
|
al@419
|
717 <form id="index" action="index.cgi"></form>
|
al@419
|
718 <br/>
|
al@443
|
719 $(_ 'Suggested keymap for Xorg:') $keymap
|
al@443
|
720 <button form="settings" name="apply_xorg_kbd" value="$keymap" data-icon="ok">$(_ 'Activate')</button>
|
al@443
|
721 <button form="index" name="file" value="$keyboard_config" data-icon="edit">$(_ 'Edit')</button>
|
al@419
|
722 <br/>
|
pascal@142
|
723 EOT
|
pascal@142
|
724 fi
|
al@419
|
725 cat <<EOT
|
al@419
|
726 <form>
|
al@443
|
727 $(_ 'Available keymaps:')
|
al@419
|
728 <select name="gen_keymap">
|
al@419
|
729 $(list_keymaps)
|
al@419
|
730 </select>
|
al@443
|
731 <button type="submit" data-icon="ok">$(_ 'Activate')</button>
|
al@419
|
732 </form>
|
al@419
|
733 </div>
|
al@312
|
734 </section>
|
pascal@141
|
735
|
al@419
|
736
|
al@312
|
737 <section>
|
al@443
|
738 <header>$(_ 'Panel configuration')</header>
|
al@419
|
739 <div>
|
al@419
|
740 <form class="wide">
|
al@443
|
741 <fieldset><legend>$(_ 'Style:')</legend>
|
al@419
|
742 <select name="style">$(list_styles)</select>
|
al@443
|
743 <button data-icon="ok">$(_ 'Activate')</button>
|
al@419
|
744 </fieldset>
|
al@419
|
745 </form>
|
al@419
|
746
|
al@443
|
747 <fieldset><legend>$(_ 'Configuration files:')</legend>
|
al@443
|
748 <button form="index" name="file" value="$CONFIG" data-icon="edit">$(_ 'Panel')</button>
|
al@443
|
749 <button form="index" name="file" value="$HTTPD_CONF" data-icon="edit">$(_ 'Server')</button>
|
al@419
|
750 </fieldset>
|
al@419
|
751
|
al@443
|
752 <p>$(_ 'TazPanel provides a debugging mode and page:')
|
pascal@441
|
753 <a href="index.cgi?debug">debug</a>
|
pankso@110
|
754 </p>
|
al@419
|
755 </div>
|
al@312
|
756 </section>
|
pankso@42
|
757 EOT
|
pankso@110
|
758 ;;
|
pankso@110
|
759 esac
|
pankso@42
|
760
|
pankso@42
|
761 xhtml_footer
|
pankso@42
|
762 exit 0
|