removed old cache
This commit is contained in:
parent
57f49a0e1f
commit
6e5f7757b6
|
@ -2,6 +2,7 @@
|
||||||
<html><head><title>LAM development documentation</title>
|
<html><head><title>LAM development documentation</title>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="stylesheet" type="text/css" href="style/layout.css"><link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico"></head><body>
|
<link rel="stylesheet" type="text/css" href="style/layout.css"><link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico"></head><body>
|
||||||
<div style="text-align: center;">
|
<div style="text-align: center;">
|
||||||
|
@ -64,7 +65,7 @@ lists</a></li>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="other_libs.htm#cache">LDAP cache</a></li>
|
|
||||||
<li><a href="other_libs.htm#lists">Account lists</a></li>
|
<li><a href="other_libs.htm#lists">Account lists</a></li>
|
||||||
<li><a href="other_libs.htm#status">Status messages</a></li>
|
<li><a href="other_libs.htm#status">Status messages</a></li>
|
||||||
<li><a href="other_libs.htm#treeSchema">Tree view and schema
|
<li><a href="other_libs.htm#treeSchema">Tree view and schema
|
||||||
|
|
|
@ -1,21 +1,17 @@
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||||
<html>
|
<html><head>
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=ISO-8859-15"
|
|
||||||
http-equiv="content-type">
|
<meta content="text/html; charset=ISO-8859-15" http-equiv="content-type"><title>Other libraries</title>
|
||||||
<title>Other libraries</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="style/layout.css">
|
<link rel="stylesheet" type="text/css" href="style/layout.css">
|
||||||
<link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico">
|
<link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico"></head><body>
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1 style="text-align: center;">Other libraries<br>
|
<h1 style="text-align: center;">Other libraries<br>
|
||||||
</h1>
|
</h1>
|
||||||
<br>
|
<br>
|
||||||
<h2><a name="lamdaemon"></a>Lamdaemon (lamdaemon.pl)<br>
|
<h2><a name="lamdaemon"></a>Lamdaemon (lamdaemon.pl)<br>
|
||||||
</h2>
|
</h2>
|
||||||
<br>
|
<br>
|
||||||
<h2><a name="cache"></a>LDAP cache (cache.inc)</h2>
|
|
||||||
<br>
|
|
||||||
<h2><a name="lists"></a>Account lists (lists.inc)</h2>
|
<h2><a name="lists"></a>Account lists (lists.inc)</h2>
|
||||||
This file provides basic functions used by the account lists. They
|
This file provides basic functions used by the account lists. They
|
||||||
cover major parts of the HTML output.<br>
|
cover major parts of the HTML output.<br>
|
||||||
|
@ -24,8 +20,7 @@ They allow to have translated descriptions of the most common
|
||||||
attributes.<br>
|
attributes.<br>
|
||||||
<br>
|
<br>
|
||||||
<h2><a name="status"></a>Status messages (status.inc)</h2>
|
<h2><a name="status"></a>Status messages (status.inc)</h2>
|
||||||
Status.inc provides the function <span
|
Status.inc provides the function <span style="font-weight: bold; font-style: italic;">StatusMessage()</span>
|
||||||
style="font-weight: bold; font-style: italic;">StatusMessage()</span>
|
|
||||||
which can be used to display error, warning and information messages.<br>
|
which can be used to display error, warning and information messages.<br>
|
||||||
The function uses preg_replace() to convert the special tags to HTML
|
The function uses preg_replace() to convert the special tags to HTML
|
||||||
tags. The message variables are included with printf().<br>
|
tags. The message variables are included with printf().<br>
|
||||||
|
@ -36,8 +31,7 @@ The parameters of <span style="font-weight: bold; font-style: italic;">StatusMes
|
||||||
<h2><a name="treeSchema"></a>Tree view and schema browser</h2>
|
<h2><a name="treeSchema"></a>Tree view and schema browser</h2>
|
||||||
The files tree.inc and schema.inc contain functions which are needed by
|
The files tree.inc and schema.inc contain functions which are needed by
|
||||||
the tree view and the schema browser.<br>
|
the tree view and the schema browser.<br>
|
||||||
These functions were copied from <a
|
These functions were copied from <a href="http://sourceforge.net/projects/phpldapadmin/">phpLDAPadmin</a>
|
||||||
href="http://sourceforge.net/projects/phpldapadmin/">phpLDAPadmin</a>
|
|
||||||
(PLA).<br>
|
(PLA).<br>
|
||||||
<br>
|
<br>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -47,5 +41,4 @@ These functions were copied from <a
|
||||||
browser (from schema_functions.php in PLA)<br>
|
browser (from schema_functions.php in PLA)<br>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</body>
|
</body></html>
|
||||||
</html>
|
|
|
@ -933,10 +933,8 @@ Have fun!
|
||||||
of LDAP entries. If you would like to use it then enter the LDAP
|
of LDAP entries. If you would like to use it then enter the LDAP
|
||||||
suffix at "Tree suffix".</para>
|
suffix at "Tree suffix".</para>
|
||||||
|
|
||||||
<para>Some LDAP queries are internally cached by LAM. You can
|
<para>The search limit is used to reduce the number of search
|
||||||
specify how long LAM should use cached data. The search limit is
|
results which are returned by your LDAP server.</para>
|
||||||
used to reduce the number of search results which are returned by
|
|
||||||
your LDAP server.</para>
|
|
||||||
|
|
||||||
<para>The access level specifies if LAM should allow to modify LDAP
|
<para>The access level specifies if LAM should allow to modify LDAP
|
||||||
entries. This feature is only available in LAM Pro. LAM non-Pro
|
entries. This feature is only available in LAM Pro. LAM non-Pro
|
||||||
|
|
|
@ -1,204 +0,0 @@
|
||||||
<?php
|
|
||||||
/*
|
|
||||||
$Id$
|
|
||||||
|
|
||||||
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
|
|
||||||
Copyright (C) 2003 - 2006 Tilo Lutz
|
|
||||||
Copyright (C) 2007 Roland Gruber
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides a cache for LDAP attributes.
|
|
||||||
*
|
|
||||||
* @author Tilo Lutz
|
|
||||||
* @author Roland Gruber
|
|
||||||
* @package lib
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** en/decryption functions */
|
|
||||||
include_once('ldap.inc');
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class contains all functions which are needed to manage the LDAP cache.
|
|
||||||
*
|
|
||||||
* @package lib
|
|
||||||
*/
|
|
||||||
class cache {
|
|
||||||
|
|
||||||
/** This variable contains the cache */
|
|
||||||
private $ldapcache;
|
|
||||||
/** This variable contains a list and their scope of attributes which should be cached */
|
|
||||||
private $attributes;
|
|
||||||
/** This is the last timestamp on which the LDAP cache has been refreshed */
|
|
||||||
private $time;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor.
|
|
||||||
*
|
|
||||||
* @return cache cache object
|
|
||||||
*/
|
|
||||||
function __construct() {
|
|
||||||
$this->time = 0;
|
|
||||||
$this->attributes = array();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function adds attributes to the cache.
|
|
||||||
*
|
|
||||||
* @param array $attributes syntax: is array( scope1 => array ( attributes ), scope2 => array ( attributes ), ...)
|
|
||||||
*/
|
|
||||||
private function add_cache($attributes) {
|
|
||||||
if (!is_array($attributes)) trigger_error('Argument of add_cache must be : array ( scope => array(attribute1(string), attribute2(string), ..), scope => ... ).', E_USER_ERROR);
|
|
||||||
foreach ($attributes as $attribute) {
|
|
||||||
if (!is_array($attribute)) trigger_error('Argument of add_cache must be : array ( scope => array(attribute1(string), attribute2(string), ..), scope => ... ).', E_USER_ERROR);
|
|
||||||
foreach ($attribute as $singleattribute) {
|
|
||||||
if (!is_string($singleattribute)) trigger_error('Argument of add_cache must be : array ( scope => array(attribute1(string), attribute2(string), ..), scope => ... ).', E_USER_ERROR);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$scopes = array_keys($attributes);
|
|
||||||
foreach ($scopes as $scope) {
|
|
||||||
for ($i=0; $i<count($attributes[$scope]); $i++ ) {
|
|
||||||
if (!@in_array($attributes[$scope][$i] ,$this->attributes[$scope])) $this->attributes[$scope][] = $attributes[$scope][$i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Rebuild cache
|
|
||||||
$this->refresh_cache(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Queries the cache for a list of LDAP entries and their attributes.
|
|
||||||
*
|
|
||||||
* @param mixed $attributes One (string) or many (array) attribute names.
|
|
||||||
* @param string $objectClass The resulting entries need to contain this object class.
|
|
||||||
* @param mixed $scopelist the account type(s) as string or array, all scopes if NULL given
|
|
||||||
* @return array The found LDAP entries.
|
|
||||||
* <br>Format: array(dn1 => array(uidnumber1), dn2 => array(uidnumber2), ... ) if $attributes is of type string
|
|
||||||
* <br>or array(dn1 => array(uid => array(myuid), uidNumber => array(1234)), ... ) if $attributes is an array
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public function get_cache($attributes, $objectClass, $scopelist) {
|
|
||||||
$return = array();
|
|
||||||
$this->refresh_cache();
|
|
||||||
if (is_array($scopelist)) $scopes = $scopelist;
|
|
||||||
elseif (is_string($scopelist)) $scopes = array($scopelist);
|
|
||||||
else $scopes = getTypes();
|
|
||||||
// Add cache entry dynamic
|
|
||||||
if (!is_array($attributes)) $attributes = array($attributes);
|
|
||||||
$add = array();
|
|
||||||
foreach ($scopes as $scope) {
|
|
||||||
for ($i = 0; $i < sizeof($attributes); $i++) {
|
|
||||||
if (!@in_array($attributes[$i], $this->attributes[$scope])) $add[$scope][] = $attributes[$i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (count($add)!=0) $this->add_cache($add);
|
|
||||||
|
|
||||||
foreach ($scopes as $scope) {
|
|
||||||
if (isset($this->ldapcache[$scope])) {
|
|
||||||
$DNs = array_keys($this->ldapcache[$scope]);
|
|
||||||
foreach ($DNs as $dn) {
|
|
||||||
// skip entries which do not fit to search
|
|
||||||
if (!in_array($objectClass, $this->ldapcache[$scope][$dn]['objectClass'])) continue;
|
|
||||||
for ($i = 0; $i < sizeof($attributes); $i++) {
|
|
||||||
if (isset($this->ldapcache[$scope][$dn][$attributes[$i]])) {
|
|
||||||
if (sizeof($attributes) > 1) {
|
|
||||||
$return[$dn][$attributes[$i]] = $this->ldapcache[$scope][$dn][$attributes[$i]];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$return[$dn] = $this->ldapcache[$scope][$dn][$attributes[$i]];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function refreshes the cache.
|
|
||||||
*
|
|
||||||
* @param boolean $rebuild forces a refresh if set to true
|
|
||||||
*/
|
|
||||||
public function refresh_cache($rebuild=false) {
|
|
||||||
if ($this->time + $_SESSION['config']->get_cacheTimeoutSec() < time() || $rebuild) {
|
|
||||||
// unset old cache
|
|
||||||
unset ($this->ldapcache);
|
|
||||||
$scopes = array_keys($this->attributes);
|
|
||||||
foreach ($scopes as $scope) {
|
|
||||||
// Get suffix
|
|
||||||
$suffix = $_SESSION['config']->get_Suffix($scope);
|
|
||||||
// Get Data from ldap
|
|
||||||
$search = $this->attributes[$scope];
|
|
||||||
$search[] = 'objectClass';
|
|
||||||
$result = @ldap_search($_SESSION['ldap']->server(), escapeDN($suffix), 'objectClass=*',
|
|
||||||
$search, 0, $_SESSION['config']->get_searchLimit(), 0, LDAP_DEREF_NEVER);
|
|
||||||
if ($result) {
|
|
||||||
// Write search result in array
|
|
||||||
$entry = @ldap_first_entry($_SESSION['ldap']->server(), $result);
|
|
||||||
while ($entry) {
|
|
||||||
$dn = (ldap_get_dn($_SESSION['ldap']->server(), $entry));
|
|
||||||
$attr = ldap_get_attributes($_SESSION['ldap']->server(), $entry);
|
|
||||||
// unset double entries
|
|
||||||
for ($i=0; $i<count($attr); $i++) {
|
|
||||||
if (isset($attr[$i])) unset($attr[$i]);
|
|
||||||
}
|
|
||||||
// unset every count entry
|
|
||||||
unset ($attr['count']);
|
|
||||||
$attributes = array_keys($attr);
|
|
||||||
foreach ($attributes as $attribute) {
|
|
||||||
unset ($attr[$attribute]['count']);
|
|
||||||
}
|
|
||||||
// Write new cache entry
|
|
||||||
$addcache = $attr;
|
|
||||||
unset ($addcache['objectClass']);
|
|
||||||
if (count($addcache)!=0) $this->ldapcache[$scope][$dn] = $attr;
|
|
||||||
$entry = ldap_next_entry($_SESSION['ldap']->server(), $entry);
|
|
||||||
}
|
|
||||||
ldap_free_result($result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$this->time = time();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Encrypts LDAP cache before saving to session file.
|
|
||||||
*
|
|
||||||
* @return array list of variables to save
|
|
||||||
*/
|
|
||||||
function __sleep() {
|
|
||||||
$attrs = array("attributes", "time");
|
|
||||||
if (isset($this->ldapcache)) {
|
|
||||||
$this->ldapcache = $_SESSION['ldap']->encrypt(serialize($this->ldapcache));
|
|
||||||
$attrs[] = 'ldapcache';
|
|
||||||
}
|
|
||||||
// define which attributes to save
|
|
||||||
return $attrs;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Decrypts LDAP cache after loading from session file.
|
|
||||||
*/
|
|
||||||
function __wakeup() {
|
|
||||||
$this->ldapcache = unserialize($_SESSION['ldap']->decrypt($this->ldapcache));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
|
@ -31,8 +31,6 @@ $Id$
|
||||||
* @author Roland Gruber
|
* @author Roland Gruber
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** LDAP caches */
|
|
||||||
include_once("cache.inc");
|
|
||||||
/** some helper functions */
|
/** some helper functions */
|
||||||
include_once("account.inc");
|
include_once("account.inc");
|
||||||
/** parent class of account modules */
|
/** parent class of account modules */
|
||||||
|
@ -2023,7 +2021,6 @@ class accountContainer {
|
||||||
$this->module[$singlemodule]->postModifyActions($this->isNewAccount, $currentAccountAttributes);
|
$this->module[$singlemodule]->postModifyActions($this->isNewAccount, $currentAccountAttributes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$_SESSION['cache']->refresh_cache(true);
|
|
||||||
return $errors;
|
return $errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,9 +62,6 @@ if (!isset($_SESSION['loggedIn']) || ($_SESSION['loggedIn'] !== true)) {
|
||||||
// Set correct language, codepages, ....
|
// Set correct language, codepages, ....
|
||||||
setlanguage();
|
setlanguage();
|
||||||
|
|
||||||
if (!isset($_SESSION['cache'])) {
|
|
||||||
$_SESSION['cache'] = new cache();
|
|
||||||
}
|
|
||||||
if (isset($_GET['type']) && isset($_SESSION['delete_dn'])) {
|
if (isset($_GET['type']) && isset($_SESSION['delete_dn'])) {
|
||||||
// Create account list
|
// Create account list
|
||||||
foreach ($_SESSION['delete_dn'] as $dn) {
|
foreach ($_SESSION['delete_dn'] as $dn) {
|
||||||
|
@ -233,7 +230,6 @@ if (isset($_POST['delete'])) {
|
||||||
echo "<br>\n";
|
echo "<br>\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$_SESSION['cache']->refresh_cache(true);
|
|
||||||
echo "<br>\n";
|
echo "<br>\n";
|
||||||
echo "<br><button class=\"smallPadding\" name=\"cancel\" id=\"backButton\">" . _('Back to list') . "</button>\n";
|
echo "<br><button class=\"smallPadding\" name=\"cancel\" id=\"backButton\">" . _('Back to list') . "</button>\n";
|
||||||
echo "</div>\n";
|
echo "</div>\n";
|
||||||
|
|
|
@ -28,8 +28,6 @@ $Id$
|
||||||
* @author Roland Gruber
|
* @author Roland Gruber
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** LDAP attibute cache */
|
|
||||||
include_once('../lib/cache.inc');
|
|
||||||
/** config object */
|
/** config object */
|
||||||
include_once('../lib/config.inc');
|
include_once('../lib/config.inc');
|
||||||
|
|
||||||
|
@ -38,11 +36,6 @@ startSecureSession();
|
||||||
|
|
||||||
setlanguage();
|
setlanguage();
|
||||||
|
|
||||||
// create cache object
|
|
||||||
if (!isset($_SESSION['cache'])) {
|
|
||||||
$_SESSION['cache'] = new cache();
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if all suffixes in conf-file exist
|
// check if all suffixes in conf-file exist
|
||||||
$conf = $_SESSION['config'];
|
$conf = $_SESSION['config'];
|
||||||
$new_suffs = array();
|
$new_suffs = array();
|
||||||
|
|
|
@ -38,8 +38,6 @@ include_once('../lib/ldap.inc');
|
||||||
include_once('../lib/status.inc');
|
include_once('../lib/status.inc');
|
||||||
/** account modules */
|
/** account modules */
|
||||||
include_once('../lib/modules.inc');
|
include_once('../lib/modules.inc');
|
||||||
/** LAM cache */
|
|
||||||
include_once('../lib/cache.inc');
|
|
||||||
|
|
||||||
|
|
||||||
// Start session
|
// Start session
|
||||||
|
@ -123,7 +121,6 @@ if (($_SESSION['mass_counter'] < sizeof($accounts)) || !isset($_SESSION['mass_po
|
||||||
}
|
}
|
||||||
// all accounts have been created
|
// all accounts have been created
|
||||||
else {
|
else {
|
||||||
$_SESSION['cache']->refresh_cache(true);
|
|
||||||
echo "<div class=\"title\">\n";
|
echo "<div class=\"title\">\n";
|
||||||
echo "<h2 class=\"titleText\">" . _("LDAP upload has finished") . "</h2>\n";
|
echo "<h2 class=\"titleText\">" . _("LDAP upload has finished") . "</h2>\n";
|
||||||
echo "</div>";
|
echo "</div>";
|
||||||
|
|
Loading…
Reference in New Issue