replaced LDAP filtering by local search; renamed some variables

This commit is contained in:
Roland Gruber 2005-01-23 18:41:35 +00:00
parent f6d7db5f07
commit 16d28bd336
4 changed files with 217 additions and 205 deletions

View File

@ -45,13 +45,15 @@ session_save_path("../../sess");
setlanguage(); setlanguage();
$scope = 'domain';
// get sorting column when register_globals is off // get sorting column when register_globals is off
$sort = $_GET['sort']; $sort = $_GET['sort'];
// copy HTTP-GET variables to HTTP-POST // copy HTTP-GET variables to HTTP-POST
$_POST = $_POST + $_GET; $_POST = $_POST + $_GET;
$dom_info = $_SESSION['dom_info']; $info = $_SESSION[$scope . 'info'];
$dom_units = $_SESSION['dom_units']; $dom_units = $_SESSION['dom_units'];
// check if button was pressed and if we have to add/delete a domain // check if button was pressed and if we have to add/delete a domain
@ -104,8 +106,11 @@ if ($_POST['dom_suffix']) $dom_suffix = $_POST['dom_suffix']; // new suffix sel
elseif ($_SESSION['dom_suffix']) $dom_suffix = $_SESSION['dom_suffix']; // old suffix from session elseif ($_SESSION['dom_suffix']) $dom_suffix = $_SESSION['dom_suffix']; // old suffix from session
else $dom_suffix = $_SESSION["config"]->get_DomainSuffix(); // default suffix else $dom_suffix = $_SESSION["config"]->get_DomainSuffix(); // default suffix
// first time page is shown $refresh = true;
if (! $_GET['norefresh']) { if ($_GET['norefresh']) $refresh = false;
if ($_POST['refresh']) $refresh = true;
if ($refresh) {
// configure search filter // configure search filter
$filter = "(objectClass=sambaDomain)"; $filter = "(objectClass=sambaDomain)";
$attrs = $attr_array; $attrs = $attr_array;
@ -114,28 +119,28 @@ if (! $_GET['norefresh']) {
StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem.")); StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem."));
} }
if ($sr) { if ($sr) {
$dom_info = ldap_get_entries($_SESSION["ldap"]->server, $sr); $info = ldap_get_entries($_SESSION["ldap"]->server, $sr);
ldap_free_result($sr); ldap_free_result($sr);
if ($dom_info["count"] == 0) StatusMessage("WARN", "", _("No Samba Domains found!")); if ($info["count"] == 0) StatusMessage("WARN", "", _("No Samba domains found!"));
// delete first array entry which is "count" // delete first array entry which is "count"
unset($dom_info['count']); unset($info['count']);
// sort rows by sort column ($sort) // sort rows by sort column ($sort)
$dom_info = listSort($sort, $attr_array, $dom_info); $info = listSort($sort, $attr_array, $info);
} }
else StatusMessage("ERROR", _("LDAP Search failed! Please check your preferences."), _("No Samba Domains found!")); else StatusMessage("ERROR", _("LDAP Search failed! Please check your preferences."), _("No Samba domains found!"));
} }
// use search result from session // use search result from session
else { else {
if (sizeof($dom_info) == 0) StatusMessage("WARN", "", _("No Samba Domains found!")); if (sizeof($info) == 0) StatusMessage("WARN", "", _("No Samba domains found!"));
// sort rows by sort column ($sort) // sort rows by sort column ($sort)
if ($dom_info) $dom_info = listSort($sort, $attr_array, $dom_info); if ($info) $info = listSort($sort, $attr_array, $info);
} }
echo ("<form action=\"listdomains.php\" method=\"post\">\n"); echo ("<form action=\"listdomains.php?norefresh=true\" method=\"post\">\n");
// draw navigation bar if domain accounts were found // draw navigation bar if domain accounts were found
if (sizeof($dom_info) > 0) { if (sizeof($info) > 0) {
listDrawNavigationBar(sizeof($dom_info), $max_page_entries, $page, $sort, '', "domain", _("%s Samba domain(s) found")); listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, '', "domain", _("%s Samba domain(s) found"));
echo ("<br>\n"); echo ("<br>\n");
} }
@ -155,25 +160,25 @@ echo "</tr>\n";
// calculate which rows to show // calculate which rows to show
$table_begin = ($page - 1) * $max_page_entries; $table_begin = ($page - 1) * $max_page_entries;
if (($page * $max_page_entries) > sizeof($dom_info)) $table_end = sizeof($dom_info); if (($page * $max_page_entries) > sizeof($info)) $table_end = sizeof($info);
else $table_end = ($page * $max_page_entries); else $table_end = ($page * $max_page_entries);
// print domain list // print domain list
for ($i = $table_begin; $i < $table_end; $i++) { for ($i = $table_begin; $i < $table_end; $i++) {
echo("<tr class=\"domainlist\" onMouseOver=\"domain_over(this, '" . $dom_info[$i]["dn"] . "')\"" . echo("<tr class=\"domainlist\" onMouseOver=\"domain_over(this, '" . $info[$i]["dn"] . "')\"" .
" onMouseOut=\"domain_out(this, '" . $dom_info[$i]["dn"] . "')\"" . " onMouseOut=\"domain_out(this, '" . $info[$i]["dn"] . "')\"" .
" onClick=\"domain_click(this, '" . $dom_info[$i]["dn"] . "')\"" . " onClick=\"domain_click(this, '" . $info[$i]["dn"] . "')\"" .
" onDblClick=\"parent.frames[1].location.href='../domain.php?action=edit&amp;DN=" . $dom_info[$i]["dn"] . "'\">" . " onDblClick=\"parent.frames[1].location.href='../domain.php?action=edit&amp;DN=" . $info[$i]["dn"] . "'\">" .
" <td height=22 align=\"center\"><input onClick=\"domain_click(this, '" . $dom_info[$i]["dn"] . "')\" type=\"checkbox\" name=\"" . $dom_info[$i]["dn"] . "\"></td>" . " <td height=22 align=\"center\"><input onClick=\"domain_click(this, '" . $info[$i]["dn"] . "')\" type=\"checkbox\" name=\"" . $info[$i]["dn"] . "\"></td>" .
" <td align='center'><a href=\"../domain.php?action=edit&amp;DN='" . $dom_info[$i]["dn"] . "'\">" . _("Edit") . "</a></td>"); " <td align='center'><a href=\"../domain.php?action=edit&amp;DN='" . $info[$i]["dn"] . "'\">" . _("Edit") . "</a></td>");
for ($k = 0; $k < sizeof($attr_array); $k++) { for ($k = 0; $k < sizeof($attr_array); $k++) {
echo ("<td>"); echo ("<td>");
// print all attribute entries seperated by "; " // print all attribute entries seperated by "; "
if (sizeof($dom_info[$i][strtolower($attr_array[$k])]) > 0) { if (sizeof($info[$i][strtolower($attr_array[$k])]) > 0) {
// delete first array entry which is "count" // delete first array entry which is "count"
if (is_array($dom_info[$i][strtolower($attr_array[$k])])) unset($dom_info[$i][strtolower($attr_array[$k])]['count']); if (is_array($info[$i][strtolower($attr_array[$k])])) unset($info[$i][strtolower($attr_array[$k])]['count']);
if (is_array($dom_info[$i][strtolower($attr_array[$k])])) echo implode("; ", $dom_info[$i][strtolower($attr_array[$k])]); if (is_array($info[$i][strtolower($attr_array[$k])])) echo implode("; ", $info[$i][strtolower($attr_array[$k])]);
else echo $dom_info[$i][strtolower($attr_array[$k])]; else echo $info[$i][strtolower($attr_array[$k])];
} }
echo ("</td>"); echo ("</td>");
} }
@ -184,8 +189,8 @@ echo ("</table>");
echo ("<br>"); echo ("<br>");
// draw navigation bar if domain accounts were found // draw navigation bar if domain accounts were found
if (sizeof($dom_info) > 0) { if (sizeof($info) > 0) {
listDrawNavigationBar(sizeof($dom_info), $max_page_entries, $page, $sort, '', "domain", _("%s Samba domain(s) found")); listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, '', "domain", _("%s Samba domain(s) found"));
echo ("<br>\n"); echo ("<br>\n");
} }
@ -211,7 +216,7 @@ if (sizeof($dom_units) > 1) {
echo ("<p align=\"left\">\n"); echo ("<p align=\"left\">\n");
echo ("<input type=\"submit\" name=\"new_domain\" value=\"" . _("New Domain") . "\">\n"); echo ("<input type=\"submit\" name=\"new_domain\" value=\"" . _("New Domain") . "\">\n");
if (sizeof($dom_info) > 0) echo ("<input type=\"submit\" name=\"del_domain\" value=\"" . _("Delete Domain(s)") . "\">\n"); if (sizeof($info) > 0) echo ("<input type=\"submit\" name=\"del_domain\" value=\"" . _("Delete Domain(s)") . "\">\n");
echo ("</p>\n"); echo ("</p>\n");
echo ("</form>\n"); echo ("</form>\n");
@ -220,7 +225,7 @@ echo "</body></html>\n";
// save variables to session // save variables to session
$_SESSION['dom_info'] = $dom_info; $_SESSION[$scope . 'info'] = $info;
$_SESSION['dom_units'] = $dom_units; $_SESSION['dom_units'] = $dom_units;
$_SESSION['dom_suffix'] = $dom_suffix; $_SESSION['dom_suffix'] = $dom_suffix;

View File

@ -49,13 +49,15 @@ session_save_path("../../sess");
setlanguage(); setlanguage();
$scope = 'group';
// get sorting column when register_globals is off // get sorting column when register_globals is off
$sort = $_GET['sort']; $sort = $_GET['sort'];
// copy HTTP-GET variables to HTTP-POST // copy HTTP-GET variables to HTTP-POST
$_POST = $_POST + $_GET; $_POST = $_POST + $_GET;
$grp_info = $_SESSION['grp_info']; $info = $_SESSION[$scope . 'info'];
$grp_units = $_SESSION['grp_units']; $grp_units = $_SESSION['grp_units'];
// check if button was pressed and if we have to add/delete a group // check if button was pressed and if we have to add/delete a group
@ -95,9 +97,9 @@ if ($_POST['new_group'] || $_POST['del_group'] || $_POST['pdf_group'] || $_POST[
// PDF for all groups // PDF for all groups
elseif ($_POST['pdf_all']){ elseif ($_POST['pdf_all']){
$list = array(); $list = array();
for ($i = 0; $i < sizeof($_SESSION['grp_info']); $i++) { for ($i = 0; $i < sizeof($_SESSION[$scope . 'info']); $i++) {
$_SESSION["accountPDF-$i"] = new accountContainer("group", "accountPDF-$i"); $_SESSION["accountPDF-$i"] = new accountContainer("group", "accountPDF-$i");
$_SESSION["accountPDF-$i"]->load_account($_SESSION['grp_info'][$i]['dn']); $_SESSION["accountPDF-$i"]->load_account($_SESSION[$scope . 'info'][$i]['dn']);
$list[$i] = $_SESSION["accountPDF-$i"]; $list[$i] = $_SESSION["accountPDF-$i"];
} }
if (sizeof($list) > 0) { if (sizeof($list) > 0) {
@ -152,58 +154,58 @@ if ($_POST['grp_suffix']) $grp_suffix = $_POST['grp_suffix']; // new suffix sel
elseif ($_SESSION['grp_suffix']) $grp_suffix = $_SESSION['grp_suffix']; // old suffix from session elseif ($_SESSION['grp_suffix']) $grp_suffix = $_SESSION['grp_suffix']; // old suffix from session
else $grp_suffix = $_SESSION["config"]->get_GroupSuffix(); // default suffix else $grp_suffix = $_SESSION["config"]->get_GroupSuffix(); // default suffix
// generate search filter for sort links $refresh = true;
$searchFilter = ""; if ($_GET['norefresh']) $refresh = false;
for ($k = 0; $k < sizeof($desc_array); $k++) { if ($_POST['refresh']) $refresh = true;
if (eregi("^([0-9a-z_\\*\\+\\-])+$", $_POST["filter" . strtolower($attr_array[$k])])) {
$searchFilter = $searchFilter . "&amp;filter" . strtolower($attr_array[$k]) . "=".
$_POST["filter" . strtolower($attr_array[$k])];
}
}
if (! $_GET['norefresh']) { if ($refresh) {
// configure search filter // configure search filter
$module_filter = get_ldap_filter("group"); // basic filter is provided by modules $module_filter = get_ldap_filter("group"); // basic filter is provided by modules
$filter = "(&" . $module_filter; $filter = "(&" . $module_filter . ")";
for ($k = 0; $k < sizeof($desc_array); $k++) {
if (eregi("^([0-9a-z_\\*\\+\\-])+$", $_POST["filter" . strtolower($attr_array[$k])]))
$filter = $filter . "(" . strtolower($attr_array[$k]) . "=" .
$_POST["filter" . strtolower($attr_array[$k])] . ")";
else
$_POST["filter" . strtolower($attr_array[$k])] = "";
}
$filter = $filter . ")";
$attrs = $attr_array; $attrs = $attr_array;
$sr = @ldap_search($_SESSION["ldap"]->server(), $grp_suffix, $filter, $attrs); $sr = @ldap_search($_SESSION["ldap"]->server(), $grp_suffix, $filter, $attrs);
if (ldap_errno($_SESSION["ldap"]->server()) == 4) { if (ldap_errno($_SESSION["ldap"]->server()) == 4) {
StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem.")); StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem."));
} }
if ($sr) { if ($sr) {
$grp_info = ldap_get_entries($_SESSION["ldap"]->server, $sr); $info = ldap_get_entries($_SESSION["ldap"]->server, $sr);
ldap_free_result($sr); ldap_free_result($sr);
if ($grp_info["count"] == 0) StatusMessage("WARN", "", _("No Groups found!"));
// delete first array entry which is "count" // delete first array entry which is "count"
unset($grp_info['count']); unset($info['count']);
// sort rows by sort column ($sort) // save results
$grp_info = listSort($sort, $attr_array, $grp_info); $_SESSION[$scope . 'info'] = $info;
} }
else { else {
$grp_info = array(); $info = array();
$_SESSION['grp_info'] = array(); $_SESSION[$scope . 'info'] = array();
StatusMessage("ERROR", _("LDAP Search failed! Please check your preferences."), _("No Groups found!")); StatusMessage("ERROR", _("LDAP Search failed! Please check your preferences."), _("No groups found!"));
} }
} }
$filter = listBuildFilter($_POST, $attr_array);
$info = listFilterAccounts($info, $filter);
if (sizeof($info) == 0) StatusMessage("WARN", "", _("No groups found!"));
// sort rows by sort column ($sort)
if ($info) $info = listSort($sort, $attr_array, $info);
// build filter URL
$searchFilter = array();
$filterAttributes = array_keys($filter);
for ($i = 0; $i < sizeof($filterAttributes); $i++) {
$searchFilter[] = "filter" . $filterAttributes[$i] . "=" . $filter[$filterAttributes[$i]]['original'];
}
if (sizeof($searchFilter) > 0) {
$searchFilter = "&amp;" . implode("&amp;", $searchFilter);
}
else { else {
if (sizeof($grp_info) == 0) StatusMessage("WARN", "", _("No Groups found!")); $searchFilter = "";
// sort rows by sort column ($sort)
if ($grp_info) $grp_info =listSort($sort, $attr_array, $grp_info);
} }
echo ("<form action=\"listgroups.php\" method=\"post\">\n"); echo ("<form action=\"listgroups.php?norefresh=true\" method=\"post\">\n");
// draw navigation bar if group accounts were found // draw navigation bar if group accounts were found
if (sizeof($grp_info) > 0) { if (sizeof($info) > 0) {
listDrawNavigationBar(sizeof($grp_info), $max_page_entries, $page, $sort, $searchFilter, "group", _("%s group(s) found")); listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, $searchFilter, "group", _("%s group(s) found"));
echo ("<br>"); echo ("<br>");
} }
@ -212,53 +214,53 @@ listPrintTableHeader("group", $searchFilter, $desc_array, $attr_array, $_POST, $
// calculate which rows to show // calculate which rows to show
$table_begin = ($page - 1) * $max_page_entries; $table_begin = ($page - 1) * $max_page_entries;
if (($page * $max_page_entries) > sizeof($grp_info)) $table_end = sizeof($grp_info); if (($page * $max_page_entries) > sizeof($info)) $table_end = sizeof($info);
else $table_end = ($page * $max_page_entries); else $table_end = ($page * $max_page_entries);
if (sizeof($grp_info) > 0) { if (sizeof($info) > 0) {
// print group list // print group list
for ($i = $table_begin; $i < $table_end; $i++) { for ($i = $table_begin; $i < $table_end; $i++) {
echo("<tr class=\"grouplist\" onMouseOver=\"group_over(this, '" . $grp_info[$i]["dn"] . "')\"" . echo("<tr class=\"grouplist\" onMouseOver=\"group_over(this, '" . $info[$i]["dn"] . "')\"" .
" onMouseOut=\"group_out(this, '" . $grp_info[$i]["dn"] . "')\"" . " onMouseOut=\"group_out(this, '" . $info[$i]["dn"] . "')\"" .
" onClick=\"group_click(this, '" . $grp_info[$i]["dn"] . "')\"" . " onClick=\"group_click(this, '" . $info[$i]["dn"] . "')\"" .
" onDblClick=\"parent.frames[1].location.href='../account/edit.php?type=group&amp;DN=" . $grp_info[$i]["dn"] . "'\">"); " onDblClick=\"parent.frames[1].location.href='../account/edit.php?type=group&amp;DN=" . $info[$i]["dn"] . "'\">");
if ($_GET['selectall'] == "yes") { if ($_GET['selectall'] == "yes") {
echo " <td height=22 align=\"center\"><input onClick=\"group_click(this, '" . $grp_info[$i]["dn"] . "')\" type=\"checkbox\"" . echo " <td height=22 align=\"center\"><input onClick=\"group_click(this, '" . $info[$i]["dn"] . "')\" type=\"checkbox\"" .
" name=\"" . $grp_info[$i]["dn"] . "\" checked></td>"; " name=\"" . $info[$i]["dn"] . "\" checked></td>";
} }
else { else {
echo " <td height=22 align=\"center\"><input onClick=\"group_click(this, '" . $grp_info[$i]["dn"] . "')\" type=\"checkbox\"" . echo " <td height=22 align=\"center\"><input onClick=\"group_click(this, '" . $info[$i]["dn"] . "')\" type=\"checkbox\"" .
" name=\"" . $grp_info[$i]["dn"] . "\"></td>"; " name=\"" . $info[$i]["dn"] . "\"></td>";
} }
echo (" <td align='center'><a href=\"../account/edit.php?type=group&amp;DN='" . $grp_info[$i]["dn"] . "'\">" . _("Edit") . "</a></td>"); echo (" <td align='center'><a href=\"../account/edit.php?type=group&amp;DN='" . $info[$i]["dn"] . "'\">" . _("Edit") . "</a></td>");
for ($k = 0; $k < sizeof($attr_array); $k++) { for ($k = 0; $k < sizeof($attr_array); $k++) {
echo ("<td>"); echo ("<td>");
// print all attribute entries seperated by "; " // print all attribute entries seperated by "; "
if (sizeof($grp_info[$i][strtolower($attr_array[$k])]) > 0) { if (sizeof($info[$i][strtolower($attr_array[$k])]) > 0) {
// delete first array entry which is "count" // delete first array entry which is "count"
if (is_array($grp_info[$i][strtolower($attr_array[$k])])) unset($grp_info[$i][strtolower($attr_array[$k])]['count']); if (is_array($info[$i][strtolower($attr_array[$k])])) unset($info[$i][strtolower($attr_array[$k])]['count']);
// generate links for group members // generate links for group members
if (strtolower($attr_array[$k]) == "memberuid") { if (strtolower($attr_array[$k]) == "memberuid") {
// sort array // sort array
sort($grp_info[$i][strtolower($attr_array[$k])]); sort($info[$i][strtolower($attr_array[$k])]);
// make a link for each member of the group // make a link for each member of the group
$linklist = array(); $linklist = array();
for ($d = 0; $d < sizeof($grp_info[$i][strtolower($attr_array[$k])]); $d++) { for ($d = 0; $d < sizeof($info[$i][strtolower($attr_array[$k])]); $d++) {
$user = $grp_info[$i][strtolower($attr_array[$k])][$d]; // user name $user = $info[$i][strtolower($attr_array[$k])][$d]; // user name
$linklist[$d] = "<a href=\"userlink.php?user='" . $user . "' \">" . $user . "</a>"; $linklist[$d] = "<a href=\"userlink.php?user='" . $user . "' \">" . $user . "</a>";
} }
echo implode("; ", $linklist); echo implode("; ", $linklist);
} }
// print all other attributes // print all other attributes
else { else {
if (is_array($grp_info[$i][strtolower($attr_array[$k])])) { if (is_array($info[$i][strtolower($attr_array[$k])])) {
// delete "count" entry // delete "count" entry
unset($grp_info[$i][strtolower($attr_array[$k])]['count']); unset($info[$i][strtolower($attr_array[$k])]['count']);
// sort array // sort array
sort($grp_info[$i][strtolower($attr_array[$k])]); sort($info[$i][strtolower($attr_array[$k])]);
echo implode("; ", $grp_info[$i][strtolower($attr_array[$k])]); echo implode("; ", $info[$i][strtolower($attr_array[$k])]);
} }
else echo $grp_info[$i][strtolower($attr_array[$k])]; else echo $info[$i][strtolower($attr_array[$k])];
} }
} }
echo ("</td>"); echo ("</td>");
@ -278,8 +280,8 @@ echo ("</table>");
echo ("<br>"); echo ("<br>");
// draw navigation bar if group accounts were found // draw navigation bar if group accounts were found
if (sizeof($grp_info) > 0) { if (sizeof($info) > 0) {
listDrawNavigationBar(sizeof($grp_info), $max_page_entries, $page, $sort, $searchFilter, "group", _("%s group(s) found")); listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, $searchFilter, "group", _("%s group(s) found"));
echo ("<br>\n"); echo ("<br>\n");
} }
@ -304,7 +306,7 @@ if (sizeof($grp_units) > 1) {
} }
echo ("<input type=\"submit\" name=\"new_group\" value=\"" . _("New Group") . "\">\n"); echo ("<input type=\"submit\" name=\"new_group\" value=\"" . _("New Group") . "\">\n");
if (sizeof($grp_info) > 0) { if (sizeof($info) > 0) {
echo ("<input type=\"submit\" name=\"del_group\" value=\"" . _("Delete Group(s)") . "\">\n"); echo ("<input type=\"submit\" name=\"del_group\" value=\"" . _("Delete Group(s)") . "\">\n");
echo ("<br><br><br>\n"); echo ("<br><br><br>\n");
echo "<fieldset><legend><b>PDF</b></legend>\n"; echo "<fieldset><legend><b>PDF</b></legend>\n";
@ -324,7 +326,6 @@ echo ("</form>\n");
echo "</body></html>\n"; echo "</body></html>\n";
// save variables to session // save variables to session
$_SESSION['grp_info'] = $grp_info;
$_SESSION['grp_units'] = $grp_units; $_SESSION['grp_units'] = $grp_units;
$_SESSION['grp_suffix'] = $grp_suffix; $_SESSION['grp_suffix'] = $grp_suffix;

View File

@ -49,13 +49,15 @@ session_save_path("../../sess");
setlanguage(); setlanguage();
$scope = 'host';
// get sorting column when register_globals is off // get sorting column when register_globals is off
$sort = $_GET['sort']; $sort = $_GET['sort'];
// copy HTTP-GET variables to HTTP-POST // copy HTTP-GET variables to HTTP-POST
$_POST = $_POST + $_GET; $_POST = $_POST + $_GET;
$hst_info = $_SESSION['hst_info']; $info = $_SESSION[$scope . 'info'];
$hst_units = $_SESSION['hst_units']; $hst_units = $_SESSION['hst_units'];
// check if button was pressed and if we have to add/delete a host // check if button was pressed and if we have to add/delete a host
@ -95,9 +97,9 @@ if ($_POST['new_host'] || $_POST['del_host'] || $_POST['pdf_host'] || $_POST['pd
// PDF for all hosts // PDF for all hosts
elseif ($_POST['pdf_all']){ elseif ($_POST['pdf_all']){
$list = array(); $list = array();
for ($i = 0; $i < sizeof($_SESSION['hst_info']); $i++) { for ($i = 0; $i < sizeof($_SESSION[$scope . 'info']); $i++) {
$_SESSION["accountPDF-$i"] = new accountContainer("host", "accountPDF-$i"); $_SESSION["accountPDF-$i"] = new accountContainer("host", "accountPDF-$i");
$_SESSION["accountPDF-$i"]->load_account($_SESSION['hst_info'][$i]['dn']); $_SESSION["accountPDF-$i"]->load_account($_SESSION[$scope . 'info'][$i]['dn']);
$list[$i] = $_SESSION["accountPDF-$i"]; $list[$i] = $_SESSION["accountPDF-$i"];
} }
if (sizeof($list) > 0) { if (sizeof($list) > 0) {
@ -152,58 +154,58 @@ if ($_POST['hst_suffix']) $hst_suffix = $_POST['hst_suffix']; // new suffix sel
elseif ($_SESSION['hst_suffix']) $hst_suffix = $_SESSION['hst_suffix']; // old suffix from session elseif ($_SESSION['hst_suffix']) $hst_suffix = $_SESSION['hst_suffix']; // old suffix from session
else $hst_suffix = $_SESSION["config"]->get_HostSuffix(); // default suffix else $hst_suffix = $_SESSION["config"]->get_HostSuffix(); // default suffix
// generate search filter for sort links $refresh = true;
$searchFilter = ""; if ($_GET['norefresh']) $refresh = false;
for ($k = 0; $k < sizeof($desc_array); $k++) { if ($_POST['refresh']) $refresh = true;
if (eregi("^([0-9a-z_\\*\\+\\-])+$", $_POST["filter" . strtolower($attr_array[$k])])) {
$searchFilter = $searchFilter . "&amp;filter" . strtolower($attr_array[$k]) . "=".
$_POST["filter" . strtolower($attr_array[$k])];
}
}
if (! $_GET['norefresh']) { if ($refresh) {
// configure search filter // configure search filter
$module_filter = get_ldap_filter("host"); // basic filter is provided by modules $module_filter = get_ldap_filter("host"); // basic filter is provided by modules
$filter = "(&" . $module_filter; $filter = "(&" . $module_filter . ")";
for ($k = 0; $k < sizeof($desc_array); $k++) {
if (eregi("^([0-9a-z_\\*\\+\\-])+$", $_POST["filter" . strtolower($attr_array[$k])]))
$filter = $filter . "(" . strtolower($attr_array[$k]) . "=" .
$_POST["filter" . strtolower($attr_array[$k])] . ")";
else
$_POST["filter" . strtolower($attr_array[$k])] = "";
}
$filter = $filter . ")";
$attrs = $attr_array; $attrs = $attr_array;
$sr = @ldap_search($_SESSION["ldap"]->server(), $hst_suffix, $filter, $attrs); $sr = @ldap_search($_SESSION["ldap"]->server(), $hst_suffix, $filter, $attrs);
if (ldap_errno($_SESSION["ldap"]->server()) == 4) { if (ldap_errno($_SESSION["ldap"]->server()) == 4) {
StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem.")); StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem."));
} }
if ($sr) { if ($sr) {
$hst_info = ldap_get_entries($_SESSION["ldap"]->server, $sr); $info = ldap_get_entries($_SESSION["ldap"]->server, $sr);
ldap_free_result($sr); ldap_free_result($sr);
if ($hst_info["count"] == 0) StatusMessage("WARN", "", _("No Samba Hosts found!"));
// delete first array entry which is "count" // delete first array entry which is "count"
unset($hst_info['count']); unset($info['count']);
// sort rows by sort column ($sort) // save results
$hst_info = listSort($sort, $attr_array, $hst_info); $_SESSION[$scope . 'info'] = $info;
} }
else { else {
$hst_info = array(); $info = array();
$_SESSION['hst_info'] = array(); $_SESSION[$scope . 'info'] = array();
StatusMessage("ERROR", _("LDAP Search failed! Please check your preferences."), _("No Samba Hosts found!")); StatusMessage("ERROR", _("LDAP Search failed! Please check your preferences."), _("No hosts found!"));
} }
} }
$filter = listBuildFilter($_POST, $attr_array);
$info = listFilterAccounts($info, $filter);
if (sizeof($info) == 0) StatusMessage("WARN", "", _("No hosts found!"));
// sort rows by sort column ($sort)
if ($info) $info = listSort($sort, $attr_array, $info);
// build filter URL
$searchFilter = array();
$filterAttributes = array_keys($filter);
for ($i = 0; $i < sizeof($filterAttributes); $i++) {
$searchFilter[] = "filter" . $filterAttributes[$i] . "=" . $filter[$filterAttributes[$i]]['original'];
}
if (sizeof($searchFilter) > 0) {
$searchFilter = "&amp;" . implode("&amp;", $searchFilter);
}
else { else {
if (sizeof($hst_info) == 0) StatusMessage("WARN", "", _("No Samba Hosts found!")); $searchFilter = "";
// sort rows by sort column ($sort)
if ($hst_info) $hst_info = listSort($sort, $attr_array, $hst_info);
} }
echo ("<form action=\"listhosts.php\" method=\"post\">\n"); echo ("<form action=\"listhosts.php?norefresh=true\" method=\"post\">\n");
// draw navigation bar if host accounts were found // draw navigation bar if host accounts were found
if (sizeof($hst_info) > 0) { if (sizeof($info) > 0) {
listDrawNavigationBar(sizeof($hst_info), $max_page_entries, $page, $sort, $searchFilter, "host", _("%s host(s) found")); listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, $searchFilter, "host", _("%s host(s) found"));
echo ("<br>\n"); echo ("<br>\n");
} }
@ -212,37 +214,37 @@ listPrintTableHeader("host", $searchFilter, $desc_array, $attr_array, $_POST, $s
// calculate which rows to show // calculate which rows to show
$table_begin = ($page - 1) * $max_page_entries; $table_begin = ($page - 1) * $max_page_entries;
if (($page * $max_page_entries) > sizeof($hst_info)) $table_end = sizeof($hst_info); if (($page * $max_page_entries) > sizeof($info)) $table_end = sizeof($info);
else $table_end = ($page * $max_page_entries); else $table_end = ($page * $max_page_entries);
if (sizeof($hst_info) > 0) { if (sizeof($info) > 0) {
// print host list // print host list
for ($i = $table_begin; $i < $table_end; $i++) { for ($i = $table_begin; $i < $table_end; $i++) {
echo("<tr class=\"hostlist\" onMouseOver=\"host_over(this, '" . $hst_info[$i]["dn"] . "')\"" . echo("<tr class=\"hostlist\" onMouseOver=\"host_over(this, '" . $info[$i]["dn"] . "')\"" .
" onMouseOut=\"host_out(this, '" . $hst_info[$i]["dn"] . "')\"" . " onMouseOut=\"host_out(this, '" . $info[$i]["dn"] . "')\"" .
" onClick=\"host_click(this, '" . $hst_info[$i]["dn"] . "')\"" . " onClick=\"host_click(this, '" . $info[$i]["dn"] . "')\"" .
" onDblClick=\"parent.frames[1].location.href='../account/edit.php?type=host&amp;DN=" . $hst_info[$i]["dn"] . "'\">"); " onDblClick=\"parent.frames[1].location.href='../account/edit.php?type=host&amp;DN=" . $info[$i]["dn"] . "'\">");
if ($_GET['selectall'] == "yes") { if ($_GET['selectall'] == "yes") {
echo " <td height=22 align=\"center\"><input onClick=\"host_click(this, '" . $hst_info[$i]["dn"] . "')\"" . echo " <td height=22 align=\"center\"><input onClick=\"host_click(this, '" . $info[$i]["dn"] . "')\"" .
" type=\"checkbox\" checked name=\"" . $hst_info[$i]["dn"] . "\"></td>"; " type=\"checkbox\" checked name=\"" . $info[$i]["dn"] . "\"></td>";
} }
else { else {
echo " <td height=22 align=\"center\"><input onClick=\"host_click(this, '" . $hst_info[$i]["dn"] . "')\"" . echo " <td height=22 align=\"center\"><input onClick=\"host_click(this, '" . $info[$i]["dn"] . "')\"" .
" type=\"checkbox\" name=\"" . $hst_info[$i]["dn"] . "\"></td>"; " type=\"checkbox\" name=\"" . $info[$i]["dn"] . "\"></td>";
} }
echo (" <td align='center'><a href=\"../account/edit.php?type=host&amp;DN='" . $hst_info[$i]["dn"] . "'\">" . _("Edit") . "</a></td>"); echo (" <td align='center'><a href=\"../account/edit.php?type=host&amp;DN='" . $info[$i]["dn"] . "'\">" . _("Edit") . "</a></td>");
for ($k = 0; $k < sizeof($attr_array); $k++) { for ($k = 0; $k < sizeof($attr_array); $k++) {
echo ("<td>"); echo ("<td>");
// print all attribute entries seperated by "; " // print all attribute entries seperated by "; "
if (sizeof($hst_info[$i][strtolower($attr_array[$k])]) > 0) { if (sizeof($info[$i][strtolower($attr_array[$k])]) > 0) {
// delete "count" entry // delete "count" entry
unset($hst_info[$i][strtolower($attr_array[$k])]['count']); unset($info[$i][strtolower($attr_array[$k])]['count']);
if (is_array($hst_info[$i][strtolower($attr_array[$k])])) { if (is_array($info[$i][strtolower($attr_array[$k])])) {
// sort array // sort array
sort($hst_info[$i][strtolower($attr_array[$k])]); sort($info[$i][strtolower($attr_array[$k])]);
echo implode("; ", $hst_info[$i][strtolower($attr_array[$k])]); echo implode("; ", $info[$i][strtolower($attr_array[$k])]);
} }
else echo $hst_info[$i][strtolower($attr_array[$k])]; else echo $info[$i][strtolower($attr_array[$k])];
} }
echo ("</td>"); echo ("</td>");
} }
@ -262,8 +264,8 @@ echo ("</table>");
echo ("<br>"); echo ("<br>");
// draw navigation bar if host accounts were found // draw navigation bar if host accounts were found
if (sizeof($hst_info) > 0) { if (sizeof($info) > 0) {
listDrawNavigationBar(sizeof($hst_info), $max_page_entries, $page, $sort, $searchFilter, "host", _("%s host(s) found")); listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, $searchFilter, "host", _("%s host(s) found"));
echo ("<br>\n"); echo ("<br>\n");
} }
@ -289,7 +291,7 @@ echo ("<p>&nbsp;</p>\n");
// add/delete/PDF buttons // add/delete/PDF buttons
echo ("<input type=\"submit\" name=\"new_host\" value=\"" . _("New Host") . "\">\n"); echo ("<input type=\"submit\" name=\"new_host\" value=\"" . _("New Host") . "\">\n");
if (sizeof($hst_info) > 0) { if (sizeof($info) > 0) {
echo ("<input type=\"submit\" name=\"del_host\" value=\"" . _("Delete Host(s)") . "\">\n"); echo ("<input type=\"submit\" name=\"del_host\" value=\"" . _("Delete Host(s)") . "\">\n");
echo ("<br><br><br>\n"); echo ("<br><br><br>\n");
echo "<fieldset><legend><b>PDF</b></legend>\n"; echo "<fieldset><legend><b>PDF</b></legend>\n";
@ -309,7 +311,6 @@ echo ("</form>\n");
echo "</body></html>\n"; echo "</body></html>\n";
// save variables to session // save variables to session
$_SESSION['hst_info'] = $hst_info;
$_SESSION['hst_units'] = $hst_units; $_SESSION['hst_units'] = $hst_units;
$_SESSION['hst_suffix'] = $hst_suffix; $_SESSION['hst_suffix'] = $hst_suffix;

View File

@ -51,6 +51,8 @@ session_save_path("../../sess");
setlanguage(); setlanguage();
$scope = 'user';
// copy HTTP-GET variables to HTTP-POST // copy HTTP-GET variables to HTTP-POST
$_POST = $_POST + $_GET; $_POST = $_POST + $_GET;
@ -76,6 +78,7 @@ if ($trans_primary == "on" && !$_GET["norefresh"]) {
} }
$info = $_SESSION[$scope . 'info'];
$usr_units = $_SESSION['usr_units']; $usr_units = $_SESSION['usr_units'];
// check if button was pressed and if we have to add/delete a user or create a PDF // check if button was pressed and if we have to add/delete a user or create a PDF
@ -119,9 +122,9 @@ if ($_POST['new_user'] || $_POST['del_user'] || $_POST['pdf_user'] || $_POST['pd
// PDF for all users // PDF for all users
elseif ($_POST['pdf_all']){ elseif ($_POST['pdf_all']){
$list = array(); $list = array();
for ($i = 0; $i < sizeof($_SESSION['userlist']); $i++) { for ($i = 0; $i < sizeof($_SESSION[$scope . 'info']); $i++) {
$_SESSION["accountPDF-$i"] = new accountContainer("user", "accountPDF-$i"); $_SESSION["accountPDF-$i"] = new accountContainer("user", "accountPDF-$i");
$_SESSION["accountPDF-$i"]->load_account($_SESSION['usr_info'][$i]['dn']); $_SESSION["accountPDF-$i"]->load_account($_SESSION[$scope . 'info'][$i]['dn']);
$list[$i] = $_SESSION["accountPDF-$i"]; $list[$i] = $_SESSION["accountPDF-$i"];
} }
if (sizeof($list) > 0) { if (sizeof($list) > 0) {
@ -182,61 +185,59 @@ elseif ($_SESSION['usr_suffix']) $usr_suffix = $_SESSION['usr_suffix']; // old
else $usr_suffix = $_SESSION["config"]->get_UserSuffix(); // default suffix else $usr_suffix = $_SESSION["config"]->get_UserSuffix(); // default suffix
// generate search filter for sort links
$searchFilter = "";
for ($k = 0; $k < sizeof($desc_array); $k++) {
if (eregi("^([0-9a-z_\\*\\+\\-])+$", $_POST["filter" . strtolower($attr_array[$k])])) {
$searchFilter = $searchFilter . "&filter" .
strtolower($attr_array[$k]) . "=".
$_POST["filter" . strtolower($attr_array[$k])];
}
}
// configure search filter for LDAP // configure search filter for LDAP
$module_filter = get_ldap_filter("user"); // basic filter is provided by modules $module_filter = get_ldap_filter("user"); // basic filter is provided by modules
$filter = "(&" . $module_filter; // users do not end with "$" $filter = "(&" . $module_filter . ")";
for ($k = 0; $k < sizeof($desc_array); $k++) {
if (eregi("^([0-9a-z_\\*\\+\\-])+$", $_POST["filter" . strtolower($attr_array[$k])]))
$filter = $filter . "(" . strtolower($attr_array[$k]) . "=" .
$_POST["filter" . strtolower($attr_array[$k])] . ")";
else
$_POST["filter" . strtolower($attr_array[$k])] = "";
}
$filter = $filter . ")";
// read entries only from ldap server if not yet stored in session or if refresh $refresh = true;
// button is pressed or if filter is applied if ($_GET['norefresh']) $refresh = false;
if ($_SESSION["userlist"] && $_GET["norefresh"]) { if ($_POST['refresh']) $refresh = true;
$_SESSION["userlist"] = listSort($sort, $attr_array, $_SESSION["userlist"]);
$userinfo = $_SESSION["userlist"]; if ($refresh) {
}
else {
$attrs = $attr_array; $attrs = $attr_array;
$sr = @ldap_search($_SESSION["ldap"]->server(), $usr_suffix, $filter, $attrs); $sr = @ldap_search($_SESSION["ldap"]->server(), $usr_suffix, $filter, $attrs);
if (ldap_errno($_SESSION["ldap"]->server()) == 4) { if (ldap_errno($_SESSION["ldap"]->server()) == 4) {
StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem.")); StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem."));
} }
if ($sr) { if ($sr) {
$userinfo = ldap_get_entries ($_SESSION["ldap"]->server, $sr); $info = ldap_get_entries ($_SESSION["ldap"]->server, $sr);
ldap_free_result ($sr); ldap_free_result ($sr);
if ($userinfo["count"] == 0) StatusMessage("WARN", "", _("No Users found!"));
// delete first array entry which is "count" // delete first array entry which is "count"
unset($userinfo['count']); unset($info['count']);
$userinfo = listSort($sort, $attr_array, $userinfo); // save results
$_SESSION["userlist"] = $userinfo; $_SESSION[$scope . 'info'] = $info;
} }
else { else {
$_SESSION['userlist'] = array(); $_SESSION[$scope . 'info'] = array();
$userinfo = array(); $info = array();
StatusMessage("ERROR", StatusMessage("ERROR",
_("LDAP Search failed! Please check your preferences."), _("LDAP Search failed! Please check your preferences."),
_("No Users found!")); _("No users found!"));
} }
} }
$user_count = sizeof ($_SESSION["userlist"]); $filter = listBuildFilter($_POST, $attr_array);
$info = listFilterAccounts($info, $filter);
if (sizeof($info) == 0) StatusMessage("WARN", "", _("No users found!"));
// sort rows by sort column ($sort)
if ($info) $info = listSort($sort, $attr_array, $info);
echo ("<form action=\"listusers.php\" method=\"post\">\n"); // build filter URL
$searchFilter = array();
$filterAttributes = array_keys($filter);
for ($i = 0; $i < sizeof($filterAttributes); $i++) {
$searchFilter[] = "filter" . $filterAttributes[$i] . "=" . $filter[$filterAttributes[$i]]['original'];
}
if (sizeof($searchFilter) > 0) {
$searchFilter = "&amp;" . implode("&amp;", $searchFilter);
}
else {
$searchFilter = "";
}
$user_count = sizeof($info);
echo ("<form action=\"listusers.php?norefresh=true\" method=\"post\">\n");
// display table only if users exist in LDAP // display table only if users exist in LDAP
if ($user_count != 0) { if ($user_count != 0) {
@ -249,51 +250,55 @@ if ($user_count != 0) {
// account table head // account table head
listPrintTableHeader("user", $searchFilter . "&amp;trans_primary=" . $trans_primary, $desc_array, $attr_array, $_POST, $sort); listPrintTableHeader("user", $searchFilter . "&amp;trans_primary=" . $trans_primary, $desc_array, $attr_array, $_POST, $sort);
// calculate which rows to show
$table_begin = ($page - 1) * $max_page_entries;
if (($page * $max_page_entries) > sizeof($info)) $table_end = sizeof($info);
else $table_end = ($page * $max_page_entries);
if ($user_count != 0) { if ($user_count != 0) {
// translate GIDs and resort array if selected // translate GIDs and resort array if selected
if ($trans_primary == "on") { if ($trans_primary == "on") {
// translate GIDs // translate GIDs
for ($i = 0; $i < sizeof($userinfo); $i++) { for ($i = 0; $i < sizeof($info); $i++) {
if ($trans_primary_hash[$userinfo[$i]['gidnumber'][0]]) { if ($trans_primary_hash[$info[$i]['gidnumber'][0]]) {
$userinfo[$i]['gidnumber'][0] = $trans_primary_hash[$userinfo[$i]['gidnumber'][0]]; $info[$i]['gidnumber'][0] = $trans_primary_hash[$info[$i]['gidnumber'][0]];
} }
} }
// resort if needed // resort if needed
if ($sort == "gidnumber") { if ($sort == "gidnumber") {
$userinfo = listSort($sort, $attr_array, $userinfo); $info = listSort($sort, $attr_array, $info);
} }
} }
// print user list // print user list
$userinfo = array_slice ($userinfo, ($page - 1) * $max_page_entries, $max_page_entries); for ($i = $table_begin; $i < $table_end; $i++) { // ignore last entry in array which is "count"
for ($i = 0; $i < sizeof ($userinfo); $i++) { // ignore last entry in array which is "count" echo("<tr class=\"userlist\"\nonMouseOver=\"user_over(this, '" . $info[$i]["dn"] . "')\"\n" .
echo("<tr class=\"userlist\"\nonMouseOver=\"user_over(this, '" . $userinfo[$i]["dn"] . "')\"\n" . "onMouseOut=\"user_out(this, '" . $info[$i]["dn"] . "')\"\n" .
"onMouseOut=\"user_out(this, '" . $userinfo[$i]["dn"] . "')\"\n" . "onClick=\"user_click(this, '" . $info[$i]["dn"] . "')\"\n" .
"onClick=\"user_click(this, '" . $userinfo[$i]["dn"] . "')\"\n" . "onDblClick=\"parent.frames[1].location.href='../account/edit.php?type=user&amp;DN=" . $info[$i]["dn"] . "'\">\n");
"onDblClick=\"parent.frames[1].location.href='../account/edit.php?type=user&amp;DN=" . $userinfo[$i]["dn"] . "'\">\n");
// checkboxes if selectall = "yes" // checkboxes if selectall = "yes"
if ($_GET['selectall'] == "yes") { if ($_GET['selectall'] == "yes") {
echo "<td height=22 align=\"center\">\n<input onClick=\"user_click(this, '" . $userinfo[$i]["dn"] . "')\" type=\"checkbox\" name=\"" . echo "<td height=22 align=\"center\">\n<input onClick=\"user_click(this, '" . $info[$i]["dn"] . "')\" type=\"checkbox\" name=\"" .
$userinfo[$i]["dn"] . "\" value=\"" . $userinfo[$i]["dn"] . "\" checked>\n</td>\n"; $info[$i]["dn"] . "\" value=\"" . $info[$i]["dn"] . "\" checked>\n</td>\n";
} }
else { else {
echo "<td height=22 align=\"center\">\n<input onClick=\"user_click(this, '" . $userinfo[$i]["dn"] . "')\" type=\"checkbox\" name=\"" . echo "<td height=22 align=\"center\">\n<input onClick=\"user_click(this, '" . $info[$i]["dn"] . "')\" type=\"checkbox\" name=\"" .
$userinfo[$i]["dn"] . "\" value=\"" . $userinfo[$i]["dn"] . "\">\n</td>\n"; $info[$i]["dn"] . "\" value=\"" . $info[$i]["dn"] . "\">\n</td>\n";
} }
echo ("<td align='center'>\n<a href=\"../account/edit.php?type=user&amp;DN='" . $userinfo[$i]["dn"] . "'\">" . echo ("<td align='center'>\n<a href=\"../account/edit.php?type=user&amp;DN='" . $info[$i]["dn"] . "'\">" .
_("Edit") . "</a>\n</td>\n"); _("Edit") . "</a>\n</td>\n");
for ($k = 0; $k < sizeof($attr_array); $k++) { for ($k = 0; $k < sizeof($attr_array); $k++) {
echo ("<td>\n"); echo ("<td>\n");
// print attribute values // print attribute values
if (sizeof($userinfo[$i][strtolower($attr_array[$k])]) > 0) { if (sizeof($info[$i][strtolower($attr_array[$k])]) > 0) {
if (is_array($userinfo[$i][strtolower($attr_array[$k])])) { if (is_array($info[$i][strtolower($attr_array[$k])])) {
// delete first array entry which is "count" // delete first array entry which is "count"
unset($userinfo[$i][strtolower($attr_array[$k])]['count']); unset($info[$i][strtolower($attr_array[$k])]['count']);
// sort array // sort array
sort($userinfo[$i][strtolower($attr_array[$k])]); sort($info[$i][strtolower($attr_array[$k])]);
// print all attribute entries seperated by "; " // print all attribute entries seperated by "; "
echo implode("; ", $userinfo[$i][strtolower($attr_array[$k])]) . "\n"; echo implode("; ", $info[$i][strtolower($attr_array[$k])]) . "\n";
} }
else echo $userinfo[$i][strtolower($attr_array[$k])] . "\n"; else echo $info[$i][strtolower($attr_array[$k])] . "\n";
} }
echo ("</td>\n"); echo ("</td>\n");
} }