tazpanel view settings.cgi @ rev 288

live: make live usb into tazpanle, new input and button style
author Christophe Lincoln <pankso@slitaz.org>
date Mon Apr 02 11:22:06 2012 +0200 (2012-04-02)
parents 904ff00b951d
children 72e9955ebdff
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="- 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
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 <a name="users"></a>
88 <h3>`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>
98 EOT
99 table_start
100 cat << EOT
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 EOT
109 for login in `cat /etc/passwd | cut -d ":" -f 1`
110 do
111 if [ -d /home/$login ]; then
112 colorlogin=$login
113 grep -qs "^$login:!" /etc/shadow &&
114 colorlogin="<span style='color: red;'>$login</span>"
115 IFS=':'
116 set -- $(grep "^$login:" /etc/passwd)
117 unset IFS
118 uid=$3
119 gid=$4
120 name="$(echo $5 | sed s/,.*//)"
121 home="$6"
122 shell=$7
123 cat <<EOT
124 <tr>
125 <td><input type='checkbox' name='user' value='$login' />
126 <img src='$IMAGES/user.png' />$colorlogin</td>
127 <td>$uid:$gid</td>
128 <td>$name</td>
129 <td>$home</td>
130 <td>$shell</td>
131 </tr>
132 EOT
133 fi
134 done
135 table_end
136 cat << EOT
137 <p>
138 $(gettext "Password":)
139 <input type="password" name="password" />
140 <input type="submit" name="do" value="`gettext "Change password"`" />
141 </p>
142 </form>
144 <h4>`gettext "Add a new user"`</h4>
145 <form method="get" action="$SCRIPT_NAME">
146 <input type="hidden" name="user" />
147 <p>`gettext "User login:"`</p>
148 <p><input type="text" name="adduser" size="30" /></p>
149 <p>`gettext "User password:"`</p>
150 <p><input type="password" name="passwd" size="30" /></p>
151 <input type="submit" value="`gettext "Create user"`" />
152 </form>
154 <h4>`gettext "Current user sessions"`</h4>
155 <pre>
156 $(who)
157 </pre>
159 <h4>`gettext "Last user sessions"`</h4>
160 <pre>
161 $(last)
162 </pre>
163 EOT
164 ;;
165 *)
166 #
167 # Defaut system settings page
168 #
169 cat << EOT
170 <div id="wrapper">
171 <h2>$(gettext "System settings")</h2>
172 <p>$(gettext "Manage system time, users or language settings")<p>
173 </div>
174 <div id="actions">
175 <a class="button" href="$SCRIPT_NAME?users">
176 <img src="$IMAGES/users.png" />$(gettext "Manage users")</a>
177 </div>
179 <h3>`gettext "System time"`</h3>
180 <pre>
181 `gettext "Time zome :"` `cat /etc/TZ`
182 `gettext "System time :"` `date`
183 `gettext "Hardware clock :"` `hwclock -r`
184 </pre>
185 <a class="button" href="$SCRIPT_NAME?rdate">`gettext "Sync online"`</a>
186 <a class="button" href="$SCRIPT_NAME?hwclock">`gettext "Set hardware clock"`</a>
187 EOT
188 #
189 # Locale settings
190 #
191 cat << EOT
192 <a name="locale"></a>
193 <h3>`gettext "System language"`</h3>
194 <p>
195 EOT
196 # Check if a new locale was requested
197 if [ -n "$new_locale" ]; then
198 rm -rf /usr/lib/locale/$new_locale
199 localedef -i $new_locale -c -f UTF-8 \
200 /usr/lib/locale/$new_locale
201 # System configuration
202 echo "LANG=$new_locale" > /etc/locale.conf
203 echo "LC_ALL=$new_locale" >> /etc/locale.conf
204 eval_gettext "You must logout and login again to your current
205 session to use \$new_locale locale."
206 else
207 gettext "Current system locales: "
208 locale -a
209 fi
210 cat << EOT
211 </p>
212 <form method="get" action="$SCRIPT_NAME">
213 $(gettext "Available locales:")
214 <select name="gen_locale">
215 <option value="en_US">en_US</options>
216 $(list_locales)
217 </select>
218 <input type="submit" value="$(gettext "Activate")" />
219 </form>
221 <a name="keymap"></a>
222 <h3>`gettext "Console keymap"`</h3>
223 <p>
224 EOT
225 # Check if a new keymap was requested
226 if [ -n "$new_keymap" ]; then
227 echo "$new_keymap" > /etc/keymap.conf
228 if [ -x /bin/loadkeys ]; then
229 loadkeys $new_keymap
230 else
231 loadkmap < /usr/share/kmap/$new_keymap.kmap
232 fi
233 fi
234 gettext "Current console keymap: "
235 keymap=$(cat /etc/keymap.conf)
236 echo $keymap
237 echo "</p>"
238 if [ -n "$keymap" ]; then
239 case "$keymap" in
240 fr_CH*)
241 keymap="ch" ;;
242 ru)
243 keymap="us,ru(winkeys)" ;;
244 slovene)
245 keymap=si ;;
246 *)
247 keymap=${keymap%-lat*}
248 keymap=${keymap%-abnt2} ;;
249 esac
250 keyboard_config=/etc/X11/xorg.conf.d/40-Keyboard.conf
251 cat << EOT
252 <form method="get" action="$SCRIPT_NAME">
253 $(gettext "Suggested keymap for Xorg:")
254 <input type="submit" name "apply_xorg_kbd" value="$keymap" />
255 <a class="button" href="index.cgi?file=$keyboard_config">
256 <img src="$IMAGES/edit.png" />$(gettext "Edit")</a>
257 </form>
258 EOT
259 fi
260 cat << EOT
261 <form method="get" action="$SCRIPT_NAME">
262 $(gettext "Available keymaps:")
263 <select name="gen_keymap">
264 $(list_keymaps)
265 </select>
266 <input type="submit" value="$(gettext "Activate")" />
267 </form>
269 <h2>$(gettext "Panel configuration")</h2>
270 <form method="get" action="$SCRIPT_NAME">
271 <p>
272 $(gettext "Style:")
273 <select name="style">
274 $(list_styles)
275 </select>
276 <input type="submit" value="$(gettext "Activate")" />
277 </p>
278 </form>
279 <form method="get" action="$SCRIPT_NAME">
280 <p>
281 $(gettext "Panel password:")
282 <input type="password" name="panel_pass"/>
283 <input type="submit" value="$(gettext "Change")" />
284 </p>
285 </form>
286 <p>
287 $(gettext "Configuration files: ")
288 <a class="button" href="index.cgi?file=$CONFIG">
289 <img src="$IMAGES/edit.png" />$(gettext "Panel")</a>
290 <a class="button" href="index.cgi?file=$HTTPD_CONF">
291 <img src="$IMAGES/edit.png" />$(gettext "Server")</a>
292 </p>
293 <p>
294 $(gettext "TazPanel provides a debuging mode and page:")
295 <a href='/index.cgi?debug'>debug</a>
296 </p>
297 EOT
298 ;;
299 esac
301 xhtml_footer
302 exit 0