implemented individual columns in group/host list
fixed bug in ldap.php which did not save the attribute arrays
This commit is contained in:
parent
ee2e6f4a00
commit
0a27b5f9d1
|
@ -27,7 +27,7 @@ groupsuffix: ou=group,o=test,c=de
|
||||||
|
|
||||||
# suffix of Samba hosts
|
# suffix of Samba hosts
|
||||||
# e.g. ou=machines,dc=yourdomain,dc=org
|
# e.g. ou=machines,dc=yourdomain,dc=org
|
||||||
hostsuffix: ou=machines,o=test,c=de
|
hostsuffix: o=test,c=de
|
||||||
|
|
||||||
# minimum and maximum UID numbers
|
# minimum and maximum UID numbers
|
||||||
minUID: 10000
|
minUID: 10000
|
||||||
|
@ -57,10 +57,10 @@ userlistAttributes: #uid;#cn;#uidNumber;#gidNumber
|
||||||
# entries can either be predefined values (e.g. '#cn' or '#gidNumber')
|
# entries can either be predefined values (e.g. '#cn' or '#gidNumber')
|
||||||
# or individual ones (e.g. 'cn:Group Name')
|
# or individual ones (e.g. 'cn:Group Name')
|
||||||
# values have to be seperated by semicolons
|
# values have to be seperated by semicolons
|
||||||
grouplistAttributes: #cn;#gidNumber
|
grouplistAttributes: #cn;#gidNumber;#memberUID;#description
|
||||||
|
|
||||||
# list of attributes to show in host list
|
# list of attributes to show in host list
|
||||||
# entries can either be predefined values (e.g. '#cn' or '#uid')
|
# entries can either be predefined values (e.g. '#cn' or '#uid')
|
||||||
# or individual ones (e.g. 'cn:Host Name')
|
# or individual ones (e.g. 'cn:Host Name')
|
||||||
# values have to be seperated by semicolons
|
# values have to be seperated by semicolons
|
||||||
hostlistAttributes: #uid;#uidNumber;#description
|
hostlistAttributes: #cn;#rid;#description;gidNumber:GID
|
||||||
|
|
|
@ -67,12 +67,14 @@ class Ldap{
|
||||||
"cn" => _("Group Name"),
|
"cn" => _("Group Name"),
|
||||||
"gidNumber" => _("GID Number"),
|
"gidNumber" => _("GID Number"),
|
||||||
"memberUID" => _("Group Members"),
|
"memberUID" => _("Group Members"),
|
||||||
"member" => _("Group Member DNs")
|
"member" => _("Group Member DNs"),
|
||||||
|
"description" => _("Group Description")
|
||||||
);
|
);
|
||||||
$this->ldapHostAttributes = array (
|
$this->ldapHostAttributes = array (
|
||||||
"UID" => _("Host Username"),
|
"uid" => _("Host Username"),
|
||||||
"cn" => _("Host Name"),
|
"cn" => _("Host Name"),
|
||||||
"rid" => _("Windows UID")
|
"rid" => _("RID (Windows UID)"),
|
||||||
|
"description" => _("Host Description")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,7 +166,8 @@ class Ldap{
|
||||||
// closes connection to LDAP server before serialization
|
// closes connection to LDAP server before serialization
|
||||||
function __sleep() {
|
function __sleep() {
|
||||||
$this->close();
|
$this->close();
|
||||||
return array("conf", "username", "password");
|
// define which attributes to save
|
||||||
|
return array("conf", "username", "password", "ldapUserAttributes", "ldapGroupAttributes", "ldapHostAttributes");
|
||||||
}
|
}
|
||||||
|
|
||||||
// reconnects to LDAP server when deserialized
|
// reconnects to LDAP server when deserialized
|
||||||
|
|
|
@ -9,18 +9,18 @@ $Id$
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more detaexils.
|
GNU General Public License for more detaexils.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
This code displays a list of all Samba hosts.
|
This code displays a list of all Samba hosts.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
include_once ('../config/config.php');
|
include_once ('../config/config.php');
|
||||||
include_once("ldap.php");
|
include_once("ldap.php");
|
||||||
|
@ -31,7 +31,28 @@ session_save_path("../sess");
|
||||||
|
|
||||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/layout.css\" />";
|
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/layout.css\" />";
|
||||||
|
|
||||||
// Samba hosts have the attribute "sambaAccount" and end with "$"
|
// generate attribute-description table
|
||||||
|
$attr_array; // list of LDAP attributes to show
|
||||||
|
$desc_array; // list of descriptions for the attributes
|
||||||
|
$attr_string = $_SESSION["config"]->get_grouplistAttributes();
|
||||||
|
$temp_array = explode(";", $attr_string);
|
||||||
|
$hash_table = $_SESSION["ldap"]->attributeGroupArray();
|
||||||
|
for ($i = 0; $i < sizeof($temp_array); $i++) {
|
||||||
|
// if value is predifined, look up description in hash_table
|
||||||
|
if (substr($temp_array[$i],0,1) == "#") {
|
||||||
|
$attr = substr($temp_array[$i],1);
|
||||||
|
$attr_array[$i] = $attr;
|
||||||
|
$desc_array[] = $hash_table[$attr];
|
||||||
|
}
|
||||||
|
// if not predefined, the attribute is seperated by a ":" from description
|
||||||
|
else {
|
||||||
|
$attr = explode(":", $temp_array[$i]);
|
||||||
|
$attr_array[$i] = $attr[0];
|
||||||
|
$desc_array[$i] = $attr[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Groups have the attribute "posixGroup"
|
||||||
$filter = "(objectClass=posixGroup)";
|
$filter = "(objectClass=posixGroup)";
|
||||||
$attrs = array("cn", "gidNumber", "memberUID", "description");
|
$attrs = array("cn", "gidNumber", "memberUID", "description");
|
||||||
$sr = @ldap_search($_SESSION["ldap"]->server(),
|
$sr = @ldap_search($_SESSION["ldap"]->server(),
|
||||||
|
@ -46,25 +67,24 @@ else echo ("<br><br><font color=\"red\"><b>" . _("No Groups found!") . "</b></fo
|
||||||
// print host table header
|
// print host table header
|
||||||
echo "<table width=\"100%\">\n";
|
echo "<table width=\"100%\">\n";
|
||||||
echo "<tr><th class=\"userlist\" width=12></th>";
|
echo "<tr><th class=\"userlist\" width=12></th>";
|
||||||
echo "<th class=\"userlist\">" . _("Grup Name") . "</th>";
|
// table header
|
||||||
echo "<th class=\"userlist\">" . _("GID Number") . "</th>";
|
for ($k = 0; $k < sizeof($desc_array); $k++) {
|
||||||
echo "<th class=\"userlist\">" . _("Group Members") . "</th>";
|
echo "<th class=\"userlist\">" . $desc_array[$k] . "</th>";
|
||||||
echo "<th class=\"userlist\">" . _("Description") . "</th>";
|
}
|
||||||
echo "</tr>\n";
|
echo "</tr>\n";
|
||||||
echo ("<form action=\"../templates/account.php?type=group\" method=\"post\">\n");
|
echo ("<form action=\"../templates/account.php?type=group\" method=\"post\">\n");
|
||||||
// print group list
|
// print group list
|
||||||
for ($i = 0; $i < sizeof($info)-1; $i++) { // ignore last entry in array which is "count"
|
for ($i = 0; $i < sizeof($info)-1; $i++) { // ignore last entry in array which is "count"
|
||||||
echo("<tr><td class=\"userlist\"><input type=\"radio\" name=\"DN\" value=\"" . $info[$i]["dn"] . "\"></td>");
|
echo("<tr><td class=\"userlist\"><input type=\"radio\" name=\"DN\" value=\"" . $info[$i]["dn"] . "\"></td>");
|
||||||
echo ("<td class=\"userlist\">" . $info[$i]["cn"][0] . "</td>");
|
for ($k = 0; $k < sizeof($attr_array); $k++) {
|
||||||
echo ("<td class=\"userlist\">" . $info[$i]["gidnumber"][0] . "</td>");
|
echo ("<td class=\"userlist\">");
|
||||||
// create list of group members
|
// print all attribute entries seperated by "; "
|
||||||
if (sizeof($info[$i]["memberuid"]) > 0) {
|
if (sizeof($info[$i][strtolower($attr_array[$k])]) > 0) {
|
||||||
array_shift($info[$i]["memberuid"]); // delete count entry
|
array_shift($info[$i][strtolower($attr_array[$k])]);
|
||||||
$grouplist = implode("; ", $info[$i]["memberuid"]);
|
echo implode("; ", $info[$i][strtolower($attr_array[$k])]);
|
||||||
|
}
|
||||||
|
echo ("</td>");
|
||||||
}
|
}
|
||||||
else $grouplist = "";
|
|
||||||
echo ("<td class=\"userlist\">" . $grouplist . "</td>");
|
|
||||||
echo ("<td class=\"userlist\">" . $info[$i]["description"][0] . "</td>");
|
|
||||||
echo("</tr>\n");
|
echo("</tr>\n");
|
||||||
}
|
}
|
||||||
echo ("</table>");
|
echo ("</table>");
|
||||||
|
|
|
@ -31,9 +31,30 @@ session_save_path("../sess");
|
||||||
|
|
||||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/layout.css\" />";
|
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/layout.css\" />";
|
||||||
|
|
||||||
|
// generate attribute-description table
|
||||||
|
$attr_array; // list of LDAP attributes to show
|
||||||
|
$desc_array; // list of descriptions for the attributes
|
||||||
|
$attr_string = $_SESSION["config"]->get_hostlistAttributes();
|
||||||
|
$temp_array = explode(";", $attr_string);
|
||||||
|
$hash_table = $_SESSION["ldap"]->attributeHostArray();
|
||||||
|
for ($i = 0; $i < sizeof($temp_array); $i++) {
|
||||||
|
// if value is predifined, look up description in hash_table
|
||||||
|
if (substr($temp_array[$i],0,1) == "#") {
|
||||||
|
$attr = substr($temp_array[$i],1);
|
||||||
|
$attr_array[$i] = $attr;
|
||||||
|
$desc_array[] = $hash_table[$attr];
|
||||||
|
}
|
||||||
|
// if not predefined, the attribute is seperated by a ":" from description
|
||||||
|
else {
|
||||||
|
$attr = explode(":", $temp_array[$i]);
|
||||||
|
$attr_array[$i] = $attr[0];
|
||||||
|
$desc_array[$i] = $attr[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Samba hosts have the attribute "sambaAccount" and end with "$"
|
// Samba hosts have the attribute "sambaAccount" and end with "$"
|
||||||
$filter = "(&(objectClass=sambaAccount) (uid=*$))";
|
$filter = "(&(objectClass=sambaAccount) (uid=*$))";
|
||||||
$attrs = array("cn", "rid");
|
$attrs = $attr_array;
|
||||||
$sr = @ldap_search($_SESSION["ldap"]->server(),
|
$sr = @ldap_search($_SESSION["ldap"]->server(),
|
||||||
$_SESSION["config"]->get_HostSuffix(),
|
$_SESSION["config"]->get_HostSuffix(),
|
||||||
$filter, $attrs);
|
$filter, $attrs);
|
||||||
|
@ -47,14 +68,23 @@ echo ("<form action=\"../templates/account.php?type=host\" method=\"post\">\n");
|
||||||
// print host table
|
// print host table
|
||||||
echo "<table width=\"100%\">\n";
|
echo "<table width=\"100%\">\n";
|
||||||
echo "<tr><th class=\"userlist\" width=12></th>";
|
echo "<tr><th class=\"userlist\" width=12></th>";
|
||||||
echo "<th class=\"userlist\">" . _("Host Name") . "</th>";
|
// table header
|
||||||
echo "<th class=\"userlist\">RID</th>";
|
for ($k = 0; $k < sizeof($desc_array); $k++) {
|
||||||
|
echo "<th class=\"userlist\">" . $desc_array[$k] . "</th>";
|
||||||
|
}
|
||||||
echo "</tr>\n";
|
echo "</tr>\n";
|
||||||
// print host list
|
// print host list
|
||||||
for ($i = 0; $i < sizeof($info)-1; $i++) { // ignore last entry in array which is "count"
|
for ($i = 0; $i < sizeof($info)-1; $i++) { // ignore last entry in array which is "count"
|
||||||
echo("<tr><td class=\"userlist\"><input type=\"radio\" name=\"DN\" value=\"" . $info[$i]["dn"] . "\"></td>");
|
echo("<tr><td class=\"userlist\"><input type=\"radio\" name=\"DN\" value=\"" . $info[$i]["dn"] . "\"></td>");
|
||||||
echo ("<td class=\"userlist\">" . $info[$i]["cn"][0] . "</td>");
|
for ($k = 0; $k < sizeof($attr_array); $k++) {
|
||||||
echo ("<td class=\"userlist\">" . $info[$i]["rid"][0] . "</td>");
|
echo ("<td class=\"userlist\">");
|
||||||
|
// print all attribute entries seperated by "; "
|
||||||
|
if (sizeof($info[$i][strtolower($attr_array[$k])]) > 0) {
|
||||||
|
array_shift($info[$i][strtolower($attr_array[$k])]);
|
||||||
|
echo implode("; ", $info[$i][strtolower($attr_array[$k])]);
|
||||||
|
}
|
||||||
|
echo ("</td>");
|
||||||
|
}
|
||||||
echo("</tr>\n");
|
echo("</tr>\n");
|
||||||
}
|
}
|
||||||
echo ("</table>");
|
echo ("</table>");
|
||||||
|
|
Loading…
Reference in New Issue