tazpanel 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 c9bc33ec8b6f
children 30036a49cacd
files TODO settings.cgi
line diff
     1.1 --- a/TODO	Fri Apr 15 11:39:12 2011 +0200
     1.2 +++ b/TODO	Fri Apr 15 12:01:19 2011 +0200
     1.3 @@ -4,14 +4,16 @@
     1.4  
     1.5  	* Add full support for undigest to pkgs.cgi
     1.6  	* Add support for geniso2usb in live.cgi
     1.7 -	* Entry to change user password in settings.cgi
     1.8  	* Create a step-by-step Live system builder (ending with an
     1.9  	  ISO or USB install)
    1.10  	* Radically improve hardware.cgi using tazhw capabilities, install
    1.11 -	  drivers and firmware, setup printers and manage devices (mount,
    1.12 -	  umount, format, backup with dd or ?)
    1.13 +	  drivers and firmware, setup printers and manage devices (mount with
    1.14 +	  loop & crypto support, umount, eject, burn, format, backup with dd or ?)
    1.15  	* Improve boot.cgi to handle theming GRUB, fbsplash and Slim and
    1.16  	  improve rcS.conf.
    1.17  	* Crond management interface
    1.18  	* Firewall PID file and configuration
    1.19 +	* bootfloppybox support in boot.cgi (versatile floppy + floppy set)
    1.20 +	* slitaz installer support ?
    1.21 +	* desktopbox support with logout
    1.22  
     2.1 --- a/settings.cgi	Fri Apr 15 11:39:12 2011 +0200
     2.2 +++ b/settings.cgi	Fri Apr 15 12:01:19 2011 +0200
     2.3 @@ -37,17 +37,37 @@
     2.4  #
     2.5  
     2.6  case " $(GET) " in
     2.7 -	*\ user*)
     2.8 +	*\ do\ *)
     2.9 +		# Assume not array support in httpd_helper.sh ;^)
    2.10 +		users=""
    2.11 +		IFS="&"
    2.12 +		for i in $QUERY_STRING ; do
    2.13 +			case "$i" in
    2.14 +			user=*)	users="$users ${i#user=}" ;;
    2.15 +			esac
    2.16 +		done
    2.17 +		unset IFS
    2.18 +		for cmd in "Delete user" "Lock user" "Unlock user" \
    2.19 +			   "Change password" ; do
    2.20 +			[ "$(GET do)" == "$(gettext "$cmd")" ] || continue
    2.21 +			for user in $users ; do
    2.22 +				case "$cmd" in
    2.23 +				Delete*)	deluser $user ;;
    2.24 +				Lock*)		passwd -l $user ;;
    2.25 +				Unlock*)	passwd -u $user ;;
    2.26 +				Change*)	echo "$user:$(GET password)" | chpasswd ;;
    2.27 +				esac
    2.28 +			done
    2.29 +		done ;;
    2.30 +	*\ adduser\ *)
    2.31  		#
    2.32  		# Manage system user accounts
    2.33  		#
    2.34 -		if [ "$(GET deluser)" ]; then
    2.35 -			deluser $(GET deluser)
    2.36 -		fi
    2.37  		user=$(GET adduser)
    2.38 +		passwd=$(GET passwd)
    2.39  		if [ -n "$user" ]; then
    2.40  			adduser -D $user
    2.41 -			echo "$(GET passwd)" | chpasswd
    2.42 +			echo "$user:$passwd" | chpasswd
    2.43  			for g in audio cdrom floppy video
    2.44  			do
    2.45  				addgroup $user $g
    2.46 @@ -77,45 +97,61 @@
    2.47  		# Users management
    2.48  		#
    2.49  		cat <<EOT
    2.50 +<a name="users"></a>
    2.51  <h3>`gettext "Manage users"`</h3>
    2.52  <form method="get" action="$SCRIPT_NAME">
    2.53 -$(table_start)
    2.54 -<thead>
    2.55 -	<tr>
    2.56 -		<td>`gettext "Login"`</td>
    2.57 -		<td>`gettext "User ID"`</td>
    2.58 -		<td>`gettext "Name"`</td>
    2.59 -		<td>`gettext "Home"`</td>
    2.60 -		<td>`gettext "SHell"`</td>
    2.61 -	</tr>
    2.62 -</thead>
    2.63 +<div id="actions">
    2.64 +	<div class="float-left">
    2.65 +		$(gettext "Selection:")
    2.66 +		<input type="submit" name="do" value="`gettext "Delete user"`" />
    2.67 +		<input type="submit" name="do" value="`gettext "Lock user"`" />
    2.68 +		<input type="submit" name="do" value="`gettext "Unlock user"`" />
    2.69 +		<input type="submit" name="do" value="`gettext "Change password"`" />
    2.70 +	</div>
    2.71 +	<div class="float-right">
    2.72 +		$(gettext "password":)
    2.73 +		<input type="text" name="password" />
    2.74 +	</div>
    2.75 +</div>
    2.76  EOT
    2.77 -		for i in `cat /etc/passwd | cut -d ":" -f 1`
    2.78 +		table_start
    2.79 +		cat << EOT
    2.80 +<tr class="thead">
    2.81 +	<td>`gettext "Login"`</td>
    2.82 +	<td>`gettext "User ID"`</td>
    2.83 +	<td>`gettext "Name"`</td>
    2.84 +	<td>`gettext "Home"`</td>
    2.85 +	<td>`gettext "Shell"`</td>
    2.86 +</tr>
    2.87 +EOT
    2.88 +		for login in `cat /etc/passwd | cut -d ":" -f 1`
    2.89  		do
    2.90 -			if [ -d /home/$i ]; then
    2.91 -				login=$i
    2.92 -				uid=`cat /etc/passwd | grep $i | cut -d ":" -f 3`
    2.93 -				gid=`cat /etc/passwd | grep $i | cut -d ":" -f 4`
    2.94 -				name=`cat /etc/passwd | grep $i | cut -d ":" -f 5 | \
    2.95 -					sed s/,,,//`
    2.96 -				home=`cat /etc/passwd | grep $i | cut -d ":" -f 6`
    2.97 -				shell=`cat /etc/passwd | grep $i | cut -d ":" -f 7`
    2.98 -				echo '<tr>'
    2.99 -				echo "<td><input type='hidden' name='user' />
   2.100 -					<input type='checkbox' name='deluser' value='$login' />
   2.101 -					<img src='$IMAGES/user.png' />$login</td>"
   2.102 -				echo "<td>$uid:$gid</td>"
   2.103 -				echo "<td>$name</td>"
   2.104 -				echo "<td>$home</td>"
   2.105 -				echo "<td>$shell</td>"
   2.106 -				echo '</tr>'
   2.107 +			if [ -d /home/$login ]; then
   2.108 +				colorlogin=$login
   2.109 +				grep -qs "^$login:!" /etc/shadow &&
   2.110 +					colorlogin="<span style='color: red;'>$login</span>"
   2.111 +				IFS=':'
   2.112 +				set -- $(grep "^$login:" /etc/passwd)
   2.113 +				unset IFS
   2.114 +				uid=$3
   2.115 +				gid=$4
   2.116 +				name="$(echo $5 | sed s/,.*//)"
   2.117 +				home="$6"
   2.118 +				shell=$7
   2.119 +				cat <<EOT
   2.120 +<tr>
   2.121 +	<td><input type='checkbox' name='user' value='$login' />
   2.122 +		<img src='$IMAGES/user.png' />$colorlogin</td>
   2.123 +	<td>$uid:$gid</td>
   2.124 +	<td>$name</td>
   2.125 +	<td>$home</td>
   2.126 +	<td>$shell</td>
   2.127 +</tr>
   2.128 +EOT
   2.129  			fi
   2.130  		done
   2.131  		table_end
   2.132  		cat << EOT
   2.133 -	<div>
   2.134 -		<input type="submit" value="`gettext "Delete selected user"`" />
   2.135 -	</div>
   2.136  </form>
   2.137  
   2.138  <h4>`gettext "Add a new user"`</h4>