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
|
||||
# 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
|
||||
minUID: 10000
|
||||
|
@ -57,10 +57,10 @@ userlistAttributes: #uid;#cn;#uidNumber;#gidNumber
|
|||
# entries can either be predefined values (e.g. '#cn' or '#gidNumber')
|
||||
# or individual ones (e.g. 'cn:Group Name')
|
||||
# values have to be seperated by semicolons
|
||||
grouplistAttributes: #cn;#gidNumber
|
||||
grouplistAttributes: #cn;#gidNumber;#memberUID;#description
|
||||
|
||||
# list of attributes to show in host list
|
||||
# entries can either be predefined values (e.g. '#cn' or '#uid')
|
||||
# or individual ones (e.g. 'cn:Host Name')
|
||||
# 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"),
|
||||
"gidNumber" => _("GID Number"),
|
||||
"memberUID" => _("Group Members"),
|
||||
"member" => _("Group Member DNs")
|
||||
"member" => _("Group Member DNs"),
|
||||
"description" => _("Group Description")
|
||||
);
|
||||
$this->ldapHostAttributes = array (
|
||||
"UID" => _("Host Username"),
|
||||
"uid" => _("Host Username"),
|
||||
"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
|
||||
function __sleep() {
|
||||
$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
|
||||
|
|
|
@ -31,7 +31,28 @@ session_save_path("../sess");
|
|||
|
||||
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)";
|
||||
$attrs = array("cn", "gidNumber", "memberUID", "description");
|
||||
$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
|
||||
echo "<table width=\"100%\">\n";
|
||||
echo "<tr><th class=\"userlist\" width=12></th>";
|
||||
echo "<th class=\"userlist\">" . _("Grup Name") . "</th>";
|
||||
echo "<th class=\"userlist\">" . _("GID Number") . "</th>";
|
||||
echo "<th class=\"userlist\">" . _("Group Members") . "</th>";
|
||||
echo "<th class=\"userlist\">" . _("Description") . "</th>";
|
||||
// table header
|
||||
for ($k = 0; $k < sizeof($desc_array); $k++) {
|
||||
echo "<th class=\"userlist\">" . $desc_array[$k] . "</th>";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
echo ("<form action=\"../templates/account.php?type=group\" method=\"post\">\n");
|
||||
// print group list
|
||||
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 ("<td class=\"userlist\">" . $info[$i]["cn"][0] . "</td>");
|
||||
echo ("<td class=\"userlist\">" . $info[$i]["gidnumber"][0] . "</td>");
|
||||
// create list of group members
|
||||
if (sizeof($info[$i]["memberuid"]) > 0) {
|
||||
array_shift($info[$i]["memberuid"]); // delete count entry
|
||||
$grouplist = implode("; ", $info[$i]["memberuid"]);
|
||||
for ($k = 0; $k < sizeof($attr_array); $k++) {
|
||||
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>");
|
||||
}
|
||||
else $grouplist = "";
|
||||
echo ("<td class=\"userlist\">" . $grouplist . "</td>");
|
||||
echo ("<td class=\"userlist\">" . $info[$i]["description"][0] . "</td>");
|
||||
echo("</tr>\n");
|
||||
}
|
||||
echo ("</table>");
|
||||
|
|
|
@ -31,9 +31,30 @@ session_save_path("../sess");
|
|||
|
||||
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 "$"
|
||||
$filter = "(&(objectClass=sambaAccount) (uid=*$))";
|
||||
$attrs = array("cn", "rid");
|
||||
$attrs = $attr_array;
|
||||
$sr = @ldap_search($_SESSION["ldap"]->server(),
|
||||
$_SESSION["config"]->get_HostSuffix(),
|
||||
$filter, $attrs);
|
||||
|
@ -47,14 +68,23 @@ echo ("<form action=\"../templates/account.php?type=host\" method=\"post\">\n");
|
|||
// print host table
|
||||
echo "<table width=\"100%\">\n";
|
||||
echo "<tr><th class=\"userlist\" width=12></th>";
|
||||
echo "<th class=\"userlist\">" . _("Host Name") . "</th>";
|
||||
echo "<th class=\"userlist\">RID</th>";
|
||||
// table header
|
||||
for ($k = 0; $k < sizeof($desc_array); $k++) {
|
||||
echo "<th class=\"userlist\">" . $desc_array[$k] . "</th>";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
// print host list
|
||||
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 ("<td class=\"userlist\">" . $info[$i]["cn"][0] . "</td>");
|
||||
echo ("<td class=\"userlist\">" . $info[$i]["rid"][0] . "</td>");
|
||||
for ($k = 0; $k < sizeof($attr_array); $k++) {
|
||||
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 ("</table>");
|
||||
|
|
Loading…
Reference in New Issue