tazpanel annotate settings.cgi @ rev 115

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