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>