tazpanel view settings.cgi @ rev 312

add visual sections to pages
author Aleksej Bobylev <al.bobylev@gmail.com>
date Thu May 17 14:52:15 2012 +0300 (2012-05-17)
parents 3e9acc16f728
children f7ff0751c098
line source
1 #!/bin/sh
2 #
3 # System settings CGI interface: user, locale, keyboard, date. Since we
4 # don't have multiple pages here there is only one case used to get command
5 # values and the full content is followed directly.
6 #
7 # Copyright (C) 2011 SliTaz GNU/Linux - BSD License
8 #
10 # Common functions from libtazpanel
11 . lib/libtazpanel
12 get_config
13 header
15 TITLE=$(gettext 'TazPanel - Settings')
17 #
18 # Commands executed before page loading.
19 #
21 case " $(GET) " in
22 *\ do\ *)
23 # Assume no array support in httpd_helper.sh ;^)
24 users=""
25 IFS="&"
26 for i in $QUERY_STRING ; do
27 case "$i" in
28 user=*) users="$users ${i#user=}" ;;
29 esac
30 done
31 unset IFS
32 for cmd in "Delete user" "Lock user" "Unlock user" \
33 "Change password" ; do
34 [ "$(GET do)" == "$(gettext "$cmd")" ] || continue # BUGGY
35 for user in $users ; do
36 case "$cmd" in
37 Delete*) deluser $user ;;
38 Lock*) passwd -l $user | log ;;
39 Unlock*) passwd -u $user | log ;;
40 Change*) echo "$user:$(GET password)" | chpasswd -m | log ;;
41 esac
42 done
43 done ;;
44 *\ adduser\ *)
45 #
46 # Manage system user accounts
47 #
48 user=$(GET adduser)
49 passwd=$(GET passwd)
50 if [ -n "$user" ]; then
51 adduser -D -s /bin/sh -g "SliTaz User" -G users -h /home/$user $user
52 echo "$user:$passwd" | chpasswd -m | log
53 for g in audio cdrom floppy video tty
54 do
55 addgroup $user $g
56 done
57 fi ;;
58 *\ gen_locale\ *)
59 new_locale=$(GET gen_locale) ;;
60 *\ gen_keymap\ *)
61 new_keymap=$(GET gen_keymap) ;;
62 *\ apply_xorg_kbd\ *)
63 sed -i "s/XkbLayout.*/XkbLayout \" \"$(GET apply_xorg_kbd)\"/" \
64 /etc/X11/xorg.conf.d/40-Keyboard.conf ;;
65 *\ rdate\ *)
66 rdate -s tick.greyware.com ;;
67 *\ hwclock\ *)
68 hwclock -w -u ;;
69 *\ panel_pass*)
70 sed -i s@/:root:.*@/:root:$(GET panel_pass)@ $HTTPD_CONF ;;
71 *\ style*)
72 sed -i s/'^STYLE.*'/"STYLE=\"$(GET style)\""/ $CONFIG
73 . $CONFIG ;;
74 esac
76 #
77 # Default xHTML content
78 #
79 xhtml_header
81 case " $(GET) " in
82 *\ user*)
83 #
84 # Users management
85 #
86 cat <<EOT
87 <h3 id="users">$(gettext 'Manage users')</h3>
89 <form method="get" action="$SCRIPT_NAME">
90 <div id="actions">
91 <div class="float-left">
92 $(gettext 'Selection:')
93 <input type="submit" name="do" value="$(gettext 'Delete user')" />
94 <input type="submit" name="do" value="$(gettext 'Lock user')" />
95 <input type="submit" name="do" value="$(gettext 'Unlock user')" />
96 </div>
97 </div>
99 <table class="zebra outbox">
100 <thead>
101 <tr class="thead">
102 <td>$(gettext 'Login')</td>
103 <td>$(gettext 'User ID')</td>
104 <td>$(gettext 'Name')</td>
105 <td>$(gettext 'Home')</td>
106 <td>$(gettext 'Shell')</td>
107 </tr>
108 </thead>
109 </tbody>
110 EOT
111 for login in `cat /etc/passwd | cut -d ":" -f 1`
112 do
113 if [ -d /home/$login ]; then
114 colorlogin=$login
115 grep -qs "^$login:!" /etc/shadow &&
116 colorlogin="<span style='color: red;'>$login</span>"
117 IFS=':'
118 set -- $(grep "^$login:" /etc/passwd)
119 unset IFS
120 uid=$3
121 gid=$4
122 name="$(echo $5 | sed s/,.*//)"
123 home="$6"
124 shell=$7
125 cat <<EOT
126 <tr>
127 <td><input type='checkbox' name='user' value='$login' />
128 <img src='$IMAGES/user.png' />$colorlogin</td>
129 <td>$uid:$gid</td>
130 <td>$name</td>
131 <td>$home</td>
132 <td>$shell</td>
133 </tr>
134 EOT
135 fi
136 done
137 cat << EOT
138 </tbody>
139 </table>
140 EOT
141 cat << EOT
142 <p>
143 $(gettext 'Password:')
144 <input type="password" name="password" />
145 <input type="submit" name="do" value="$(gettext 'Change password')" />
146 </p>
147 </form>
149 <section>
150 <h4>$(gettext 'Add a new user')</h4>
152 <form method="get" action="$SCRIPT_NAME">
153 <input type="hidden" name="user" />
154 <table>
155 <tr><td>$(gettext 'User login:')</td>
156 <td><input type="text" name="adduser" size="30" /></td></tr>
157 <tr><td>$(gettext 'User password:')</td>
158 <td><input type="password" name="passwd" size="30" /></td></tr>
159 <tr><td colspan="2">
160 <input type="submit" value="$(gettext 'Create user')" /></td></tr>
161 </table>
162 </form>
163 </section>
165 <section>
166 <h4>$(gettext 'Current user sessions')</h4>
168 <pre>$(who)</pre>
169 </section>
171 <section>
172 <h4>$(gettext 'Last user sessions')</h4>
174 <pre>$(last)</pre>
175 </section>
176 EOT
177 ;;
178 *)
179 #
180 # Defaut system settings page
181 #
182 cat << EOT
183 <div id="wrapper">
184 <h2>$(gettext 'System settings')</h2>
185 <p>$(gettext 'Manage system time, users or language settings')<p>
186 </div>
187 <div id="actions">
188 <a class="button" href="$SCRIPT_NAME?users">
189 <img src="$IMAGES/users.png" />$(gettext 'Manage users')</a>
190 </div>
192 <section>
193 <h3>$(gettext 'System time')</h3>
195 <table>
196 <tr><td>$(gettext 'Time zome:')</td><td>$(cat /etc/TZ)</td></tr>
197 <tr><td>$(gettext 'System time:')</td><td>$(date)</td></tr>
198 <tr><td>$(gettext 'Hardware clock:')</td><td>$(hwclock -r)</tr>
199 </table>
200 <a class="button" href="$SCRIPT_NAME?rdate">$(gettext 'Sync online')</a>
201 <a class="button" href="$SCRIPT_NAME?hwclock">$(gettext 'Set hardware clock')</a>
202 </section>
203 EOT
204 #
205 # Locale settings
206 #
207 cat << EOT
208 <section>
209 <h3 id="locale">$(gettext 'System language')</h3>
210 <p>
211 EOT
212 # Check if a new locale was requested
213 if [ -n "$new_locale" ]; then
214 rm -rf /usr/lib/locale/$new_locale
215 localedef -i $new_locale -c -f UTF-8 \
216 /usr/lib/locale/$new_locale
217 # System configuration
218 echo "LANG=$new_locale" > /etc/locale.conf
219 echo "LC_ALL=$new_locale" >> /etc/locale.conf
220 eval_gettext "You must logout and login again to your current \
221 session to use \$new_locale locale."
222 else
223 gettext 'Current system locales:'
224 locale -a
225 fi
226 cat << EOT
227 </p>
228 <form method="get" action="$SCRIPT_NAME">
229 $(gettext 'Available locales:')
230 <select name="gen_locale">
231 <option value="en_US">en__US</options>
232 $(list_locales)
233 </select>
234 <input type="submit" value="$(gettext 'Activate')" />
235 </form>
236 </section>
238 <section>
239 <h3 id="keymap">$(gettext 'Console keymap')</h3>
240 <p>
241 EOT
242 # Check if a new keymap was requested
243 if [ -n "$new_keymap" ]; then
244 echo "$new_keymap" > /etc/keymap.conf
245 if [ -x /bin/loadkeys ]; then
246 loadkeys $new_keymap
247 else
248 loadkmap < /usr/share/kmap/$new_keymap.kmap
249 fi
250 fi
251 keymap=$(cat /etc/keymap.conf)
252 eval_gettext 'Current console keymap: $keymap'
253 echo "</p>"
254 if [ -n "$keymap" ]; then
255 case "$keymap" in
256 fr_CH*)
257 keymap="ch" ;;
258 ru)
259 keymap="us,ru(winkeys)" ;;
260 slovene)
261 keymap=si ;;
262 *)
263 keymap=${keymap%-lat*}
264 keymap=${keymap%-abnt2} ;;
265 esac
266 keyboard_config=/etc/X11/xorg.conf.d/40-Keyboard.conf
267 cat << EOT
268 <form method="get" action="$SCRIPT_NAME">
269 $(gettext 'Suggested keymap for Xorg:')
270 <input type="submit" name "apply_xorg_kbd" value="$keymap" />
271 <a class="button" href="index.cgi?file=$keyboard_config">
272 <img src="$IMAGES/edit.png" />$(gettext 'Edit')</a>
273 </form>
274 EOT
275 fi
276 cat << EOT
277 <form method="get" action="$SCRIPT_NAME">
278 $(gettext 'Available keymaps:')
279 <select name="gen_keymap">
280 $(list_keymaps)
281 </select>
282 <input type="submit" value="$(gettext 'Activate')" />
283 </form>
284 </section>
286 <section>
287 <h2>$(gettext 'Panel configuration')</h2>
289 <form method="get" action="$SCRIPT_NAME">
290 <p>
291 $(gettext 'Style:')
292 <select name="style">
293 $(list_styles)
294 </select>
295 <input type="submit" value="$(gettext 'Activate')" />
296 </p>
297 </form>
298 <form method="get" action="$SCRIPT_NAME">
299 <p>
300 $(gettext 'Panel password:')
301 <input type="password" name="panel_pass"/>
302 <input type="submit" value="$(gettext 'Change')" />
303 </p>
304 </form>
305 <p>
306 $(gettext 'Configuration files:')
307 <a class="button" href="index.cgi?file=$CONFIG">
308 <img src="$IMAGES/edit.png" />$(gettext 'Panel')</a>
309 <a class="button" href="index.cgi?file=$HTTPD_CONF">
310 <img src="$IMAGES/edit.png" />$(gettext 'Server')</a>
311 </p>
312 <p>
313 $(gettext 'TazPanel provides a debuging mode and page:')
314 <a href="/index.cgi?debug">debug</a>
315 </p>
316 </section>
317 EOT
318 ;;
319 esac
321 xhtml_footer
322 exit 0