tazpanel view settings.cgi @ rev 121

settings.cgi: hide password (well... still in URL, should we use POST instead of GET ?)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Apr 15 12:38:49 2011 +0200 (2011-04-15)
parents 4c348c1d521e
children 7855bd81abb7
line source
1 #!/bin/sh
2 #
3 # System settings CGI interface: user, locale, keyboard, date. Since we
4 # dont have multiple pages here there is only one case used to get command
5 # values and the full content is following 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 # Get the list of system locales
18 list_locales() {
19 cd /usr/share/i18n/locales
20 for locale in `ls -1 [a-z][a-z]_[A-Z][A-Z]`
21 do
22 echo "<option value='$locale'>$locale</option>"
23 done
24 }
26 # Get the list of panle styles
27 list_styles() {
28 cd $PANEL/styles
29 for style in *
30 do
31 echo "<option value='$style'>$style</option>"
32 done
33 }
35 #
36 # Commands executed before page loading.
37 #
39 case " $(GET) " in
40 *\ do\ *)
41 # Assume not array support in httpd_helper.sh ;^)
42 users=""
43 IFS="&"
44 for i in $QUERY_STRING ; do
45 case "$i" in
46 user=*) users="$users ${i#user=}" ;;
47 esac
48 done
49 unset IFS
50 for cmd in "Delete user" "Lock user" "Unlock user" \
51 "Change password" ; do
52 [ "$(GET do)" == "$(gettext "$cmd")" ] || continue
53 for user in $users ; do
54 case "$cmd" in
55 Delete*) deluser $user ;;
56 Lock*) passwd -l $user | log ;;
57 Unlock*) passwd -u $user | log ;;
58 Change*) echo "$user:$(GET password)" | chpasswd | log ;;
59 esac
60 done
61 done ;;
62 *\ adduser\ *)
63 #
64 # Manage system user accounts
65 #
66 user=$(GET adduser)
67 passwd=$(GET passwd)
68 if [ -n "$user" ]; then
69 adduser -D $user
70 echo "$user:$passwd" | chpasswd | log
71 for g in audio cdrom floppy video
72 do
73 addgroup $user $g
74 done
75 fi ;;
76 *\ gen_locale\ *)
77 new_locale=$(GET gen_locale) ;;
78 *\ rdate\ *)
79 rdate -s tick.greyware.com ;;
80 *\ hwclock\ *)
81 hwclock -w ;;
82 *\ panel_pass*)
83 sed -i s@/:root:.*@/:root:$(GET panel_pass)@ $HTTPD_CONF ;;
84 *\ style*)
85 sed -i s/'^STYLE.*'/"STYLE=\"$(GET style)\""/ $CONFIG
86 . $CONFIG ;;
87 esac
89 #
90 # Default xHTML content
91 #
92 xhtml_header
94 case " $(GET) " in
95 *\ user*)
96 #
97 # Users management
98 #
99 cat <<EOT
100 <a name="users"></a>
101 <h3>`gettext "Manage users"`</h3>
102 <form method="get" action="$SCRIPT_NAME">
103 <div id="actions">
104 <div class="float-left">
105 $(gettext "Selection:")
106 <input type="submit" name="do" value="`gettext "Delete user"`" />
107 <input type="submit" name="do" value="`gettext "Lock user"`" />
108 <input type="submit" name="do" value="`gettext "Unlock user"`" />
109 </div>
110 </div>
111 EOT
112 table_start
113 cat << EOT
114 <tr class="thead">
115 <td>`gettext "Login"`</td>
116 <td>`gettext "User ID"`</td>
117 <td>`gettext "Name"`</td>
118 <td>`gettext "Home"`</td>
119 <td>`gettext "Shell"`</td>
120 </tr>
121 EOT
122 for login in `cat /etc/passwd | cut -d ":" -f 1`
123 do
124 if [ -d /home/$login ]; then
125 colorlogin=$login
126 grep -qs "^$login:!" /etc/shadow &&
127 colorlogin="<span style='color: red;'>$login</span>"
128 IFS=':'
129 set -- $(grep "^$login:" /etc/passwd)
130 unset IFS
131 uid=$3
132 gid=$4
133 name="$(echo $5 | sed s/,.*//)"
134 home="$6"
135 shell=$7
136 cat <<EOT
137 <tr>
138 <td><input type='checkbox' name='user' value='$login' />
139 <img src='$IMAGES/user.png' />$colorlogin</td>
140 <td>$uid:$gid</td>
141 <td>$name</td>
142 <td>$home</td>
143 <td>$shell</td>
144 </tr>
145 EOT
146 fi
147 done
148 table_end
149 cat << EOT
150 <p>
151 $(gettext "Password":)
152 <input type="password" name="password" />
153 <input type="submit" name="do" value="`gettext "Change password"`" />
154 </p>
155 </form>
157 <h4>`gettext "Add a new user"`</h4>
158 <form method="get" action="$SCRIPT_NAME">
159 <input type="hidden" name="user" />
160 <p>`gettext "User login:"`</p>
161 <p><input type="text" name="adduser" size="30" /></p>
162 <p>`gettext "User password:"`</p>
163 <p><input type="password" name="passwd" size="30" /></p>
164 <input type="submit" value="`gettext "Create user"`" />
165 </form>
166 EOT
167 ;;
168 *)
169 #
170 # Defaut system settings page
171 #
172 cat << EOT
173 <div id="wrapper">
174 <h2>$(gettext "System settings")</h2>
175 <p>$(gettext "Manage system time, users or language settings")<p>
176 </div>
177 <div id="actions">
178 <a class="button" href="$SCRIPT_NAME?users">
179 <img src="$IMAGES/users.png" />$(gettext "Manage users")</a>
180 </div>
182 <h3>`gettext "System time"`</h3>
183 <pre>
184 `gettext "Time zome :"` `cat /etc/TZ`
185 `gettext "System time :"` `date`
186 `gettext "Hardware clock :"` `hwclock -r`
187 </pre>
188 <a class="button" href="$SCRIPT_NAME?rdate">`gettext "Sync online"`</a>
189 <a class="button" href="$SCRIPT_NAME?hwclock">`gettext "Set hardware clock"`</a>
190 EOT
191 #
192 # Locale settings
193 #
194 cat << EOT
195 <a name="locale"></a>
196 <h3>`gettext "System language"`</h3>
197 <p>
198 EOT
199 # Check if a new locale was requested
200 if [ -n "$new_locale" ]; then
201 rm -rf /usr/lib/locale/$new_locale
202 localedef -i $new_locale -c -f UTF-8 \
203 /usr/lib/locale/$new_locale
204 # System configuration
205 echo "LANG=$new_locale" > /etc/locale.conf
206 echo "LC_ALL=$new_locale" >> /etc/locale.conf
207 eval_gettext "You must logout and login again to your current
208 session to use \$new_locale locale."
209 else
210 gettext "Current system locales: "
211 locale -a
212 fi
213 cat << EOT
214 </p>
215 <form method="get" action="$SCRIPT_NAME">
216 $(gettext "Available locales:")
217 <select name="gen_locale">
218 <option value="en_US">en_US</options>
219 $(list_locales)
220 </select>
221 <input type="submit" value="$(gettext "Activate")" />
222 </form>
224 <h3>$(gettext "Panel configuration")</h3>
225 <form method="get" action="$SCRIPT_NAME">
226 <p>
227 $(gettext "Style:")
228 <select name="style">
229 $(list_styles)
230 </select>
231 <input type="submit" value="$(gettext "Activate")" />
232 </p>
233 </form>
234 <form method="get" action="$SCRIPT_NAME">
235 <p>
236 $(gettext "Panel password:")
237 <input type="password" name="panel_pass"/>
238 <input type="submit" value="$(gettext "Change")" />
239 </p>
240 </form>
241 <p>
242 $(gettext "Configuration files: ")
243 <a class="button" href="index.cgi?file=$CONFIG">
244 <img src="$IMAGES/edit.png" />$(gettext "Panel")</a>
245 <a class="button" href="index.cgi?file=$HTTPD_CONF">
246 <img src="$IMAGES/edit.png" />$(gettext "Server")</a>
247 </p>
248 <p>
249 $(gettext "TazPanel provides a debuging mode and page:")
250 <a href='/index.cgi?debug'>debug</a>
251 </p>
252 EOT
253 ;;
254 esac
256 xhtml_footer
257 exit 0