tazpanel rev 336

Add settings/groups
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon Dec 31 16:14:48 2012 +0100 (2012-12-31)
parents 7d549f711862
children 1bccb526ff67
files settings.cgi styles/default/header.html
line diff
     1.1 --- a/settings.cgi	Fri Dec 21 01:49:21 2012 -0500
     1.2 +++ b/settings.cgi	Mon Dec 31 16:14:48 2012 +0100
     1.3 @@ -14,6 +14,19 @@
     1.4  
     1.5  TITLE=$(gettext 'TazPanel - Settings')
     1.6  
     1.7 +# Get system database. LDAP compatible.
     1.8 +getdb()
     1.9 +{
    1.10 +	getent $1 2>/dev/null || cat /etc/$1
    1.11 +}
    1.12 +
    1.13 +listdb()
    1.14 +{
    1.15 +	for item in $(getdb $1 | cut -d ":" -f 1); do
    1.16 +		echo "<option>$item</option>\n"
    1.17 +	done
    1.18 +}
    1.19 +
    1.20  #
    1.21  # Commands executed before page loading.
    1.22  #
    1.23 @@ -22,13 +35,23 @@
    1.24  	*\ do\ *)
    1.25  		# Assume no array support in httpd_helper.sh ;^)
    1.26  		users=""
    1.27 +		groups=""
    1.28  		IFS="&"
    1.29  		for i in $QUERY_STRING ; do
    1.30  			case "$i" in
    1.31 -			user=*)	users="$users ${i#user=}" ;;
    1.32 +			user=*)	 users="$users ${i#user=}" ;;
    1.33 +			group=*) groups="$groups ${i#group=}" ;;
    1.34  			esac
    1.35  		done
    1.36  		unset IFS
    1.37 +		for cmd in "Delete group" ; do
    1.38 +			[ "$(GET do)" == "$(gettext "$cmd")" ] || continue
    1.39 +			for group in $groups ; do
    1.40 +				case "$cmd" in
    1.41 +				Delete*)	delgroup $group ;;
    1.42 +				esac
    1.43 +			done
    1.44 +		done
    1.45  		for cmd in "Delete user" "Lock user" "Unlock user" \
    1.46  			   "Change password" ; do
    1.47  			[ "$(GET do)" == "$(gettext "$cmd")" ] || continue			# BUGGY
    1.48 @@ -41,6 +64,12 @@
    1.49  				esac
    1.50  			done
    1.51  		done ;;
    1.52 +	*\ addmember\ *)
    1.53 +		addgroup $(GET member) $(GET group) ;;
    1.54 +	*\ delmember\ *)
    1.55 +		delgroup $(GET member) $(GET group) ;;
    1.56 +	*\ addgroup\ *)
    1.57 +		addgroup $(GET addgroup) ;;
    1.58  	*\ adduser\ *)
    1.59  		#
    1.60  		# Manage system user accounts
    1.61 @@ -79,6 +108,90 @@
    1.62  xhtml_header
    1.63  
    1.64  case " $(GET) " in
    1.65 +	*\ group*)
    1.66 +		#
    1.67 +		# Groups management
    1.68 +		#
    1.69 +		cat <<EOT
    1.70 +<h3 id="groups">$(gettext 'Manage groups')</h3>
    1.71 +
    1.72 +<form method="get" action="$SCRIPT_NAME">
    1.73 +	<input type="hidden" name="groups" />
    1.74 +<div id="actions">
    1.75 +	<div class="float-left">
    1.76 +		$(gettext 'Selection:')
    1.77 +		<input type="submit" name="do" value="$(gettext 'Delete group')" />
    1.78 +	</div>
    1.79 +</div>
    1.80 +
    1.81 +<table class="zebra outbox">
    1.82 +<thead>
    1.83 +<tr class="thead">
    1.84 +	<td>$(gettext 'Group')</td>
    1.85 +	<td>$(gettext 'Group ID')</td>
    1.86 +	<td>$(gettext 'Members')</td>
    1.87 +</tr>
    1.88 +</thead>
    1.89 +</tbody>
    1.90 +EOT
    1.91 +		for group in `getdb group | cut -d ":" -f 1`
    1.92 +		do
    1.93 +			IFS=':'
    1.94 +			set -- $(getdb group | grep "^$group:")
    1.95 +			unset IFS
    1.96 +			gid=$3
    1.97 +			members=$4
    1.98 +			cat <<EOT
    1.99 +<tr>
   1.100 +	<td><input type='checkbox' name='group' value='$group' />
   1.101 +		<img src='$IMAGES/users.png' />$group</td>
   1.102 +	<td>$gid</td>
   1.103 +	<td>${members//,/, }</td>
   1.104 +</tr>
   1.105 +EOT
   1.106 +		done
   1.107 +		cat << EOT
   1.108 +</tbody>
   1.109 +</table>
   1.110 +</form>
   1.111 +
   1.112 +<section>
   1.113 +<h4>$(gettext 'Add a new group')</h4>
   1.114 +
   1.115 +<form method="get" action="$SCRIPT_NAME">
   1.116 +	<input type="hidden" name="groups" />
   1.117 +	<table>
   1.118 +		<tr><td>$(gettext 'Group name:')</td>
   1.119 +			<td><input type="text" name="addgroup" size="30" /></td>
   1.120 +		<td>
   1.121 +			<input type="submit" value="$(gettext 'Create group')" /></td></tr>
   1.122 +	</table>
   1.123 +</form>
   1.124 +</section>
   1.125 +
   1.126 +<section>
   1.127 +<h4>$(gettext 'Manage group membership')</h4>
   1.128 +
   1.129 +<form method="get" action="$SCRIPT_NAME">
   1.130 +	<input type="hidden" name="groups" />
   1.131 +	<table>
   1.132 +		<tr><td>$(gettext 'Group name:')</td>
   1.133 +		    <td><select name="group">
   1.134 +		    	$(listdb group)
   1.135 +		    </select></td>
   1.136 +		<td>$(gettext 'User name:')</td>
   1.137 +		    <td><select name="member">
   1.138 +		    	$(listdb passwd)
   1.139 +		    </select></td></tr>
   1.140 +		<tr><td colspan="4"><input type="submit" name="addmember" value="$(gettext 'Add user')" />
   1.141 +			<input type="submit" name="delmember" value="$(gettext 'Remove user')" /></td></tr>
   1.142 +	</table>
   1.143 +</form>
   1.144 +</section>
   1.145 +
   1.146 +EOT
   1.147 +		;;
   1.148 +
   1.149  	*\ user*)
   1.150  		#
   1.151  		# Users management
   1.152 @@ -108,14 +221,14 @@
   1.153  </thead>
   1.154  </tbody>
   1.155  EOT
   1.156 -		for login in `cat /etc/passwd | cut -d ":" -f 1`
   1.157 +		for login in `getdb passwd | cut -d ":" -f 1`
   1.158  		do
   1.159  			if [ -d /home/$login ]; then
   1.160  				colorlogin=$login
   1.161  				grep -qs "^$login:!" /etc/shadow &&
   1.162  					colorlogin="<span style='color: red;'>$login</span>"
   1.163  				IFS=':'
   1.164 -				set -- $(grep "^$login:" /etc/passwd)
   1.165 +				set -- $(getdb passwd | grep "^$login:")
   1.166  				unset IFS
   1.167  				uid=$3
   1.168  				gid=$4
   1.169 @@ -261,7 +374,9 @@
   1.170  </div>
   1.171  <div id="actions">
   1.172  	<a class="button" href="$SCRIPT_NAME?users">
   1.173 -		<img src="$IMAGES/users.png" />$(gettext 'Manage users')</a>
   1.174 +		<img src="$IMAGES/user.png" />$(gettext 'Manage users')</a>
   1.175 +	<a class="button" href="$SCRIPT_NAME?groups">
   1.176 +		<img src="$IMAGES/users.png" />$(gettext 'Manage groups')</a>
   1.177  </div>
   1.178  
   1.179  <section>
     2.1 --- a/styles/default/header.html	Fri Dec 21 01:49:21 2012 -0500
     2.2 +++ b/styles/default/header.html	Mon Dec 31 16:14:48 2012 +0100
     2.3 @@ -63,7 +63,9 @@
     2.4  		<li><a href="/settings.cgi">$(gettext 'Settings')</a>
     2.5  			<ul>
     2.6  				<li><a href="/settings.cgi?users"><img
     2.7 -					src="/styles/default/images/users.png" />$(gettext 'Users')</a></li>
     2.8 +					src="/styles/default/images/user.png" />$(gettext 'Users')</a></li>
     2.9 +				<li><a href="/settings.cgi?groups"><img
    2.10 +					src="/styles/default/images/users.png" />$(gettext 'Groups')</a></li>
    2.11  			</ul>
    2.12  		</li>
    2.13  		<li><a href="/boot.cgi">$(gettext 'Boot')</a>