tazpanel view settings.cgi @ rev 303

3 weeks forging ;) Some bugs fixed, maybe all i18n improved (please, recheck 'po's!), couple of new features added... Enjoy!
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri May 04 13:00:43 2012 +0300 (2012-05-04)
parents 72e9955ebdff
children 3e9acc16f728
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">
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 <h4>$(gettext 'Add a new user')</h4>
151 <form method="get" action="$SCRIPT_NAME">
152 <input type="hidden" name="user" />
153 <table>
154 <tr><td>$(gettext 'User login:')</td>
155 <td><input type="text" name="adduser" size="30" /></td></tr>
156 <tr><td>$(gettext 'User password:')</td>
157 <td><input type="password" name="passwd" size="30" /></td></tr>
158 <tr><td colspan="2">
159 <input type="submit" value="$(gettext 'Create user')" /></td></tr>
160 </table>
161 </form>
163 <h4>$(gettext 'Current user sessions')</h4>
165 <pre>$(who)</pre>
167 <h4>$(gettext 'Last user sessions')</h4>
169 <pre>$(last)</pre>
170 EOT
171 ;;
172 *)
173 #
174 # Defaut system settings page
175 #
176 cat << EOT
177 <div id="wrapper">
178 <h2>$(gettext 'System settings')</h2>
179 <p>$(gettext 'Manage system time, users or language settings')<p>
180 </div>
181 <div id="actions">
182 <a class="button" href="$SCRIPT_NAME?users">
183 <img src="$IMAGES/users.png" />$(gettext 'Manage users')</a>
184 </div>
186 <h3>$(gettext 'System time')</h3>
188 <table>
189 <tr><td>$(gettext 'Time zome:')</td><td>$(cat /etc/TZ)</td></tr>
190 <tr><td>$(gettext 'System time:')</td><td>$(date)</td></tr>
191 <tr><td>$(gettext 'Hardware clock:')</td><td>$(hwclock -r)</tr>
192 </table>
193 <a class="button" href="$SCRIPT_NAME?rdate">$(gettext 'Sync online')</a>
194 <a class="button" href="$SCRIPT_NAME?hwclock">$(gettext 'Set hardware clock')</a>
195 EOT
196 #
197 # Locale settings
198 #
199 cat << EOT
200 <h3 id="locale">$(gettext 'System language')</h3>
201 <p>
202 EOT
203 # Check if a new locale was requested
204 if [ -n "$new_locale" ]; then
205 rm -rf /usr/lib/locale/$new_locale
206 localedef -i $new_locale -c -f UTF-8 \
207 /usr/lib/locale/$new_locale
208 # System configuration
209 echo "LANG=$new_locale" > /etc/locale.conf
210 echo "LC_ALL=$new_locale" >> /etc/locale.conf
211 eval_gettext "You must logout and login again to your current \
212 session to use \$new_locale locale."
213 else
214 gettext 'Current system locales:'
215 locale -a
216 fi
217 cat << EOT
218 </p>
219 <form method="get" action="$SCRIPT_NAME">
220 $(gettext 'Available locales:')
221 <select name="gen_locale">
222 <option value="en_US">en__US</options>
223 $(list_locales)
224 </select>
225 <input type="submit" value="$(gettext 'Activate')" />
226 </form>
228 <h3 id="keymap">$(gettext 'Console keymap')</h3>
229 <p>
230 EOT
231 # Check if a new keymap was requested
232 if [ -n "$new_keymap" ]; then
233 echo "$new_keymap" > /etc/keymap.conf
234 if [ -x /bin/loadkeys ]; then
235 loadkeys $new_keymap
236 else
237 loadkmap < /usr/share/kmap/$new_keymap.kmap
238 fi
239 fi
240 keymap=$(cat /etc/keymap.conf)
241 eval_gettext 'Current console keymap: $keymap'
242 echo "</p>"
243 if [ -n "$keymap" ]; then
244 case "$keymap" in
245 fr_CH*)
246 keymap="ch" ;;
247 ru)
248 keymap="us,ru(winkeys)" ;;
249 slovene)
250 keymap=si ;;
251 *)
252 keymap=${keymap%-lat*}
253 keymap=${keymap%-abnt2} ;;
254 esac
255 keyboard_config=/etc/X11/xorg.conf.d/40-Keyboard.conf
256 cat << EOT
257 <form method="get" action="$SCRIPT_NAME">
258 $(gettext 'Suggested keymap for Xorg:')
259 <input type="submit" name "apply_xorg_kbd" value="$keymap" />
260 <a class="button" href="index.cgi?file=$keyboard_config">
261 <img src="$IMAGES/edit.png" />$(gettext 'Edit')</a>
262 </form>
263 EOT
264 fi
265 cat << EOT
266 <form method="get" action="$SCRIPT_NAME">
267 $(gettext 'Available keymaps:')
268 <select name="gen_keymap">
269 $(list_keymaps)
270 </select>
271 <input type="submit" value="$(gettext 'Activate')" />
272 </form>
274 <h2>$(gettext 'Panel configuration')</h2>
276 <form method="get" action="$SCRIPT_NAME">
277 <p>
278 $(gettext 'Style:')
279 <select name="style">
280 $(list_styles)
281 </select>
282 <input type="submit" value="$(gettext 'Activate')" />
283 </p>
284 </form>
285 <form method="get" action="$SCRIPT_NAME">
286 <p>
287 $(gettext 'Panel password:')
288 <input type="password" name="panel_pass"/>
289 <input type="submit" value="$(gettext 'Change')" />
290 </p>
291 </form>
292 <p>
293 $(gettext 'Configuration files:')
294 <a class="button" href="index.cgi?file=$CONFIG">
295 <img src="$IMAGES/edit.png" />$(gettext 'Panel')</a>
296 <a class="button" href="index.cgi?file=$HTTPD_CONF">
297 <img src="$IMAGES/edit.png" />$(gettext 'Server')</a>
298 </p>
299 <p>
300 $(gettext 'TazPanel provides a debuging mode and page:')
301 <a href="/index.cgi?debug">debug</a>
302 </p>
303 EOT
304 ;;
305 esac
307 xhtml_footer
308 exit 0