packages: ldap-account-manager/ldap-account-manager-sizelimit.patch (NEW) -...
baggins
baggins at pld-linux.org
Sun Feb 14 13:17:57 CET 2010
Author: baggins Date: Sun Feb 14 12:17:57 2010 GMT
Module: packages Tag: HEAD
---- Log message:
- add sizelimit config option for LDAP searches
---- Files affected:
packages/ldap-account-manager:
ldap-account-manager-sizelimit.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: packages/ldap-account-manager/ldap-account-manager-sizelimit.patch
diff -u /dev/null packages/ldap-account-manager/ldap-account-manager-sizelimit.patch:1.1
--- /dev/null Sun Feb 14 13:17:57 2010
+++ packages/ldap-account-manager/ldap-account-manager-sizelimit.patch Sun Feb 14 13:17:52 2010
@@ -0,0 +1,706 @@
+diff -ur ldap-account-manager-2.9.0/lib/account.inc ldap-account-manager-2.9.0-limit/lib/account.inc
+--- ldap-account-manager-2.9.0/lib/account.inc 2010-02-14 12:59:38.518724527 +0100
++++ ldap-account-manager-2.9.0-limit/lib/account.inc 2010-02-14 12:35:31.948722137 +0100
+@@ -310,7 +310,7 @@
+ if ($server == null) {
+ $server = $_SESSION['ldap']->server();
+ }
+- $sr = @ldap_search($server, escapeDN($suffix), "objectClass=sambaDomain", $attr, 0, 0, 0, LDAP_DEREF_NEVER);
++ $sr = @ldap_search($server, escapeDN($suffix), "objectClass=sambaDomain", $attr, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if ($sr) {
+ $units = ldap_get_entries($server, $sr);
+ // delete count entry
+@@ -566,7 +566,7 @@
+ }
+ for ($s = 0; $s < sizeof($scopes); $s++) {
+ // search LDAP
+- $sr = @ldap_search($_SESSION['ldap']->server(), $_SESSION['config']->get_Suffix($scopes[$s]), $filter, $attributes, 0, 0, 0, LDAP_DEREF_NEVER);
++ $sr = @ldap_search($_SESSION['ldap']->server(), $_SESSION['config']->get_Suffix($scopes[$s]), $filter, $attributes, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if ($sr) {
+ $entries = ldap_get_entries($_SESSION['ldap']->server(), $sr);
+ if ($entries) {
+diff -ur ldap-account-manager-2.9.0/lib/cache.inc ldap-account-manager-2.9.0-limit/lib/cache.inc
+--- ldap-account-manager-2.9.0/lib/cache.inc 2009-11-26 14:32:48.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/cache.inc 2010-02-14 12:35:48.732721999 +0100
+@@ -146,7 +146,7 @@
+ // Get Data from ldap
+ $search = $this->attributes[$scope];
+ $search[] = 'objectClass';
+- $result = @ldap_search($_SESSION['ldap']->server(), escapeDN($suffix), 'objectClass=*', $search, 0, 0, 0, LDAP_DEREF_NEVER);
++ $result = @ldap_search($_SESSION['ldap']->server(), escapeDN($suffix), 'objectClass=*', $search, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if ($result) {
+ // Write search result in array
+ $entry = @ldap_first_entry($_SESSION['ldap']->server(), $result);
+diff -ur ldap-account-manager-2.9.0/lib/config.inc ldap-account-manager-2.9.0-limit/lib/config.inc
+--- ldap-account-manager-2.9.0/lib/config.inc 2010-02-14 12:59:38.518724527 +0100
++++ ldap-account-manager-2.9.0-limit/lib/config.inc 2010-02-14 12:18:16.795969880 +0100
+@@ -224,6 +224,9 @@
+ /** LDAP cache timeout */
+ private $cachetimeout;
+
++ /** LDAP search size limit */
++ private $sizelimit;
++
+ /** Active account types */
+ private $activeTypes = "user,group,host,smbDomain";
+
+@@ -244,7 +247,7 @@
+
+ /** List of all settings in config file */
+ private $settings = array("ServerURL", "useTLS", "Passwd", "Admins", "treesuffix",
+- "defaultLanguage", "scriptPath", "scriptServer", "scriptRights", "cachetimeout",
++ "defaultLanguage", "scriptPath", "scriptServer", "scriptRights", "cachetimeout", "sizelimit",
+ "modules", "activeTypes", "types", "accessLevel", 'loginMethod', 'loginSearchSuffix',
+ 'loginSearchFilter');
+
+@@ -389,6 +392,7 @@
+ if (!in_array("scriptServer", $saved)) array_push($file_array, "\n\n# Servers of external script\n" . "scriptServer: " . $this->scriptServer . "\n");
+ if (!in_array("scriptRights", $saved)) array_push($file_array, "\n\n# Access rights for home directories\n" . "scriptRights: " . $this->scriptRights . "\n");
+ if (!in_array("cachetimeout", $saved)) array_push($file_array, "\n\n# Number of minutes LAM caches LDAP searches.\n" . "cacheTimeout: " . $this->cachetimeout . "\n");
++ if (!in_array("sizelimit", $saved)) array_push($file_array, "\n\n# Number of entries fetched in LDAP searches.\n" . "sizeLimit: " . $this->sizelimit . "\n");
+ if (!in_array("activeTypes", $saved)) array_push($file_array, "\n\n# List of active account types.\n" . "activeTypes: " . $this->activeTypes . "\n");
+ if (!in_array("accessLevel", $saved)) array_push($file_array, "\n\n# Access level for this profile.\n" . "accessLevel: " . $this->accessLevel . "\n");
+ if (!in_array("loginMethod", $saved)) array_push($file_array, "\n\n# Login method.\n" . "loginMethod: " . $this->loginMethod . "\n");
+@@ -793,6 +797,16 @@
+ }
+
+ /**
++ * Returns the LDAP search size limit in entries
++ *
++ * @return integer size limit
++ */
++ public function get_sizeLimit() {
++ if (isset($this->sizelimit)) return $this->sizelimit;
++ else return 0;
++ }
++
++ /**
+ * Sets the LDAP cache timeout in minutes (0,1,2,5,10,15)
+ *
+ * @param integer $value new cache timeout
+@@ -807,6 +821,20 @@
+ }
+
+ /**
++ * Sets the LDAP search size limit in entries
++ *
++ * @param integer $value new size limit
++ * @return boolean true if $value has correct format
++ */
++ public function set_sizeLimit($value) {
++ if (is_numeric($value) && ($value > -1)) {
++ $this->sizelimit = $value;
++ }
++ else return false;
++ return true;
++ }
++
++ /**
+ * Returns an array of all selected account modules
+ *
+ * @param string $scope account type
+diff -ur ldap-account-manager-2.9.0/lib/export.inc ldap-account-manager-2.9.0-limit/lib/export.inc
+--- ldap-account-manager-2.9.0/lib/export.inc 2009-10-28 17:35:23.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/export.inc 2010-02-14 12:37:25.690972919 +0100
+@@ -281,11 +281,11 @@
+
+ // get the data to be exported
+ if( $this->scope == 'base' )
+- $this->results = @ldap_read($this->ds, $this->base_dn, $this->queryFilter,$this->attributes);
++ $this->results = @ldap_read($this->ds, $this->base_dn, $this->queryFilter,$this->attributes, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ elseif( $this->scope == 'one' )
+- $this->results = @ldap_list($this->ds, $this->base_dn, $this->queryFilter, $this->attributes);
++ $this->results = @ldap_list($this->ds, $this->base_dn, $this->queryFilter, $this->attributes, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ else // scope == 'sub'
+- $this->results = @ldap_search($this->ds, $this->base_dn, $this->queryFilter, $this->attributes, 0, 0, 0, LDAP_DEREF_NEVER);
++ $this->results = @ldap_search($this->ds, $this->base_dn, $this->queryFilter, $this->attributes, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+
+ // if no result, there is a something wrong
+ if( ! $this->results )
+diff -ur ldap-account-manager-2.9.0/lib/lamdaemon.inc ldap-account-manager-2.9.0-limit/lib/lamdaemon.inc
+--- ldap-account-manager-2.9.0/lib/lamdaemon.inc 2009-10-27 19:45:22.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/lamdaemon.inc 2010-02-14 12:38:12.824973201 +0100
+@@ -51,7 +51,7 @@
+ $handle = @ssh2_connect($server);
+ }
+ if ($handle) {
+- $sr = @ldap_read($_SESSION['ldap']->server(), $credentials[0], "objectClass=posixAccount", array('uid'));
++ $sr = @ldap_read($_SESSION['ldap']->server(), $credentials[0], "objectClass=posixAccount", array('uid'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if (!$sr) {
+ $return = array("ERROR," . _("Your LAM admin user must be a valid Unix account to work with lamdaemon!") . ",");
+ return $return;
+diff -ur ldap-account-manager-2.9.0/lib/ldap.inc ldap-account-manager-2.9.0-limit/lib/ldap.inc
+--- ldap-account-manager-2.9.0/lib/ldap.inc 2010-02-14 12:59:38.548720793 +0100
++++ ldap-account-manager-2.9.0-limit/lib/ldap.inc 2010-02-14 12:38:30.433719189 +0100
+@@ -135,7 +135,7 @@
+ */
+ function search_units($suffix) {
+ $ret = array();
+- $sr = @ldap_search($this->server(), escapeDN($suffix), "objectClass=organizationalunit", array("DN"), 0, 0, 0, LDAP_DEREF_NEVER);
++ $sr = @ldap_search($this->server(), escapeDN($suffix), "objectClass=organizationalunit", array("DN"), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if ($sr) {
+ $units = ldap_get_entries($this->server, $sr);
+ unset($units['count']);
+diff -ur ldap-account-manager-2.9.0/lib/lists.inc ldap-account-manager-2.9.0-limit/lib/lists.inc
+--- ldap-account-manager-2.9.0/lib/lists.inc 2009-12-06 19:34:24.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/lists.inc 2010-02-14 12:38:45.041722448 +0100
+@@ -826,7 +826,7 @@
+ $module_filter = get_ldap_filter($this->type); // basic filter is provided by modules
+ $filter = "(&" . $module_filter . ")";
+ $attrs = $this->attrArray;
+- $sr = @ldap_search($_SESSION["ldap"]->server(), escapeDN($this->suffix), $filter, $attrs, 0, 0, 0, LDAP_DEREF_NEVER);
++ $sr = @ldap_search($_SESSION["ldap"]->server(), escapeDN($this->suffix), $filter, $attrs, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if (ldap_errno($_SESSION["ldap"]->server()) == 4) {
+ StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See the manual for instructions to solve this problem."));
+ }
+diff -ur ldap-account-manager-2.9.0/lib/modules/asteriskAccount.inc ldap-account-manager-2.9.0-limit/lib/modules/asteriskAccount.inc
+--- ldap-account-manager-2.9.0/lib/modules/asteriskAccount.inc 2009-12-16 19:56:51.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/modules/asteriskAccount.inc 2010-02-14 12:39:02.517970188 +0100
+@@ -222,7 +222,7 @@
+ $filter = '(& (objectClass=AsteriskSIPUser) (AstAccountCallerID=' . $this->attributes['AstAccountCallerID'][0] .'))';
+ $ldapc = $_SESSION['ldap']->server();
+ $attributes = array("DN", "AstAccountCallerID");
+- $res = ldap_search($ldapc,$searchroot,$filter,$attributes,0,0,0,LDAP_DEREF_NEVER);
++ $res = ldap_search($ldapc,$searchroot,$filter,$attributes,0,$_SESSION['config']->get_sizeLimit(),0,LDAP_DEREF_NEVER);
+ if (!$res) {
+ return array(array("ERROR", _("Unable to load LDAP entry:") . " " .$searchroot, ldap_error($_SESSION['ldap']->server())));
+ }
+diff -ur ldap-account-manager-2.9.0/lib/modules/asteriskExtension.inc ldap-account-manager-2.9.0-limit/lib/modules/asteriskExtension.inc
+--- ldap-account-manager-2.9.0/lib/modules/asteriskExtension.inc 2009-12-16 19:56:51.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/modules/asteriskExtension.inc 2010-02-14 12:39:19.805970325 +0100
+@@ -256,7 +256,7 @@
+ $filter = 'objectClass=AsteriskSIPUser';
+ $ldapc = $_SESSION['ldap']->server();
+ $attributes = array("DN", "cn");
+- $res = ldap_search($ldapc,$searchroot,$filter,$attributes,0,0,0,LDAP_DEREF_NEVER);
++ $res = ldap_search($ldapc,$searchroot,$filter,$attributes,0,$_SESSION['config']->get_sizeLimit(),0,LDAP_DEREF_NEVER);
+ if (!$res) {
+ return array(array("ERROR", _("Unable to load LDAP entry:") . " " .$searchroot, ldap_error($_SESSION['ldap']->server())));
+ }
+@@ -355,7 +355,7 @@
+ $filter = '(& (objectClass=AsteriskExtension) (AstExtension=' . $this->attributes['AstExtension'][0] .') (AstPriority=' . $this->attributes['AstPriority'][0] .') )';
+ $ldapc = $_SESSION['ldap']->server();
+ $attributes = array("DN");
+- $res = ldap_search($ldapc,$searchroot,$filter,$attributes,0,0,0,LDAP_DEREF_NEVER);
++ $res = ldap_search($ldapc,$searchroot,$filter,$attributes,0,$_SESSION['config']->get_sizeLimit(),0,LDAP_DEREF_NEVER);
+ if (!$res) {
+ return array(array("ERROR", _("Unable to load LDAP entry:") . " " .$searchroot, ldap_error($_SESSION['ldap']->server())));
+ }
+diff -ur ldap-account-manager-2.9.0/lib/modules/ddns.inc ldap-account-manager-2.9.0-limit/lib/modules/ddns.inc
+--- ldap-account-manager-2.9.0/lib/modules/ddns.inc 2009-11-24 19:54:43.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/modules/ddns.inc 2010-02-14 12:39:29.047722523 +0100
+@@ -187,7 +187,7 @@
+ $ldap = $_SESSION['ldap']->server();
+ $dn = $_SESSION['config']->get_suffix('dhcp');
+
+- $search = @ldap_search($ldap,$dn,"dhcpStatements=ddns-update-style interim", array(), 0, 0, 0, LDAP_DEREF_NEVER);
++ $search = @ldap_search($ldap,$dn,"dhcpStatements=ddns-update-style interim", array(), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if ($search) {
+ $info = @ldap_get_entries($ldap,$search);
+ if ($info && ($info['count'] > 0)) {
+diff -ur ldap-account-manager-2.9.0/lib/modules/fixed_ip.inc ldap-account-manager-2.9.0-limit/lib/modules/fixed_ip.inc
+--- ldap-account-manager-2.9.0/lib/modules/fixed_ip.inc 2009-11-25 13:08:08.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/modules/fixed_ip.inc 2010-02-14 12:39:49.680721831 +0100
+@@ -195,7 +195,7 @@
+ if ($this->getAccountContainer()->dn_orig!=$_SESSION['config']->get_suffix('dhcp')) {
+
+ $sr = @ldap_search($_SESSION['ldap']->server(),'cn='.$this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes['cn'][0].','.$_SESSION['config']->get_suffix('dhcp'),
+- '(objectClass=dhcpHost)', array(), 0, 0, 0, LDAP_DEREF_NEVER);
++ '(objectClass=dhcpHost)', array(), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if ($sr) {
+ $entries = ldap_get_entries($_SESSION['ldap']->server(), $sr);
+ if ($entries) {
+@@ -353,7 +353,7 @@
+ foreach($this->fixed_ip AS $id=>$arr) {
+ // pc name
+ $result = @ldap_search($_SESSION['ldap']->server(),"cn=".$this->getAccountContainer()->getAccountModule('dhcp_settings')->attributes['cn'][0].",".$_SESSION['config']->get_Suffix('dhcp'),
+- '(cn='.$_POST['pc_'.$id].')', array(), 0, 0, 0, LDAP_DEREF_NEVER);
++ '(cn='.$_POST['pc_'.$id].')', array(), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ $num = (@ldap_get_entries($_SESSION['ldap']->server(), $result)=="")?0:ldap_get_entries($_SESSION['ldap']->server(), $result);
+ $pcError = "";
+ if (!$this->processed) {
+diff -ur ldap-account-manager-2.9.0/lib/modules/kolabUser.inc ldap-account-manager-2.9.0-limit/lib/modules/kolabUser.inc
+--- ldap-account-manager-2.9.0/lib/modules/kolabUser.inc 2009-10-28 17:35:22.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/modules/kolabUser.inc 2010-02-14 12:40:06.587970654 +0100
+@@ -824,7 +824,7 @@
+ // delegates
+ if (in_array('kolabDelegate', $fields)) {
+ $delegates = array();
+- $sr = @ldap_search($_SESSION['ldapHandle'], escapeDN($this->selfServiceSettings->LDAPSuffix), '(&(objectClass=inetOrgPerson)(mail=*))', array('mail'), 0, 0, 0, LDAP_DEREF_NEVER);
++ $sr = @ldap_search($_SESSION['ldapHandle'], escapeDN($this->selfServiceSettings->LDAPSuffix), '(&(objectClass=inetOrgPerson)(mail=*))', array('mail'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if ($sr) {
+ $result = ldap_get_entries($_SESSION['ldapHandle'], $sr);
+ for ($i = 0; $i < $result['count']; $i++) {
+diff -ur ldap-account-manager-2.9.0/lib/modules/phpGroupwareUser.inc ldap-account-manager-2.9.0-limit/lib/modules/phpGroupwareUser.inc
+--- ldap-account-manager-2.9.0/lib/modules/phpGroupwareUser.inc 2009-11-24 12:39:41.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/modules/phpGroupwareUser.inc 2010-02-14 12:40:29.111722141 +0100
+@@ -321,7 +321,7 @@
+ (in_array('phpgwAccount', $this->orig['objectClass']) && !in_array('phpgwAccount', $this->attributes['objectClass']))) {
+ $dn = $this->getAccountContainer()->finalDN;
+ $myattributes = array_merge(array('objectClass'), $this->meta['attributes']);
+- $sr = @ldap_read($_SESSION['ldap']->server(), $dn, 'objectClass=*', $myattributes);
++ $sr = @ldap_read($_SESSION['ldap']->server(), $dn, 'objectClass=*', $myattributes, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if (!$sr) {
+ StatusMessage('ERROR', sprintf(_('Was unable to remove attribtues from DN: %s.'), $dn), ldap_error($_SESSION['ldap']->server()));
+ return;
+diff -ur ldap-account-manager-2.9.0/lib/modules.inc ldap-account-manager-2.9.0-limit/lib/modules.inc
+--- ldap-account-manager-2.9.0/lib/modules.inc 2009-11-26 00:07:28.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/modules.inc 2010-02-14 12:40:50.992721873 +0100
+@@ -1624,7 +1624,7 @@
+ $this->module = array();
+ $modules = $_SESSION['config']->get_AccountModules($this->type);
+ $search = substr($dn, 0, strpos($dn, ','));
+- $result = @ldap_read($_SESSION['ldap']->server(), escapeDN($dn), escapeDN($search), array(), 0, 0, 0, LDAP_DEREF_NEVER); // TODO use ldap_read()
++ $result = @ldap_read($_SESSION['ldap']->server(), escapeDN($dn), escapeDN($search), array(), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER); // TODO use ldap_read()
+ if (!$result) {
+ return array(array("ERROR", _("Unable to load LDAP entry:") . " " . $dn, ldap_error($_SESSION['ldap']->server())));
+ }
+diff -ur ldap-account-manager-2.9.0/lib/schema.inc ldap-account-manager-2.9.0-limit/lib/schema.inc
+--- ldap-account-manager-2.9.0/lib/schema.inc 2009-11-21 14:52:32.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/schema.inc 2010-02-14 12:42:12.138972923 +0100
+@@ -1269,7 +1269,7 @@
+ if( $debug ) echo "<pre>";
+ $ds = $_SESSION['ldap']->server();
+
+- $search = @ldap_read( $ds, $dn, 'objectClass=*', array( 'subschemaSubentry' ) );
++ $search = @ldap_read( $ds, $dn, 'objectClass=*', array( 'subschemaSubentry' ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER );
+ if( $debug ) { echo "Search result (ldap_read): "; var_dump( $search ); echo "\n"; }
+ if( ! $search ) {
+ if( $debug ) echo "_get_schema_dn() returning false. (search val is false)\n";
+@@ -1362,7 +1362,7 @@
+ if( $schema_dn ) {
+ if( $debug ) { echo "Found the schema DN: "; var_dump( $schema_dn ); echo "\n"; }
+ $schema_search = @ldap_read( $ds, $schema_dn, '(objectClass=*)',
+- array( $schema_to_fetch ), 0, 0, 0,
++ array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0,
+ LDAP_DEREF_ALWAYS );
+
+ // Were we not able to fetch the schema from the $schema_dn?
+@@ -1374,7 +1374,7 @@
+
+ // Try again with a different filter (some servers require (objectClass=subschema) like M-Vault)
+ $schema_search = @ldap_read( $ds, $schema_dn, '(objectClass=subschema)',
+- array( $schema_to_fetch ), 0, 0, 0,
++ array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0,
+ LDAP_DEREF_ALWAYS );
+ $schema_entries = @ldap_get_entries( $ds, $schema_search );
+
+@@ -1405,7 +1405,7 @@
+ if( $debug ) echo "Attempting with cn=subschema (OpenLDAP)...\n";
+ // try with the standard DN
+ $schema_search = @ldap_read($ds, 'cn=subschema', '(objectClass=*)',
+- array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
++ array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_ALWAYS );
+ }
+
+ // cn=schema for Novell eDirectory
+@@ -1413,7 +1413,7 @@
+ if( $debug ) echo "Attempting with cn=schema (Novell)...\n";
+ // try again, with a different schema DN
+ $schema_search = @ldap_read($ds, 'cn=schema', '(objectClass=*)',
+- array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
++ array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_ALWAYS );
+ }
+
+ // cn=schema,cn=configuration,dc=example,dc=com for ActiveDirectory
+@@ -1426,7 +1426,7 @@
+ if( $debug ) echo "Attempting with cn=schema,cn=configuration,$base_dn (ActiveDirectory)...\n";
+ if( $base_dn != null )
+ $schema_search = @ldap_read($ds, 'cn=schema,cn=configuration,' . $base_dn, '(objectClass=*)',
+- array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
++ array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_ALWAYS );
+ }
+
+ // cn=Schema,ou=Admin,dc=example,dc=com for SiteServer
+@@ -1439,7 +1439,7 @@
+ if( $debug ) echo "Attempting with cn=Schema,ou=Admin,$base_dn (ActiveDirectory)...\n";
+ if( $base_dn != null )
+ $schema_search = @ldap_read($ds, 'cn=Schema,ou=Admin,' . $base_dn, '(objectClass=*)',
+- array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
++ array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_ALWAYS );
+ }
+
+ // Attempt to pull schema from Root DSE with scope "base"
+@@ -1448,7 +1448,7 @@
+ if( $debug ) echo "Attempting to pull schema from Root DSE with scope \"base\"...\n";
+ if( $base_dn != null )
+ $schema_search = @ldap_read($ds, '', '(objectClass=*)',
+- array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
++ array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_ALWAYS );
+ $schema_entries = @ldap_get_entries( $ds, $schema_search );
+ if( ! isset( $schema_entries[0][$schema_to_fetch] ) )
+ $schema_search = null;
+@@ -1460,7 +1460,7 @@
+ if( $debug ) echo "Attempting to pull schema from Root DSE with scope \"one\"...\n";
+ if( $base_dn != null )
+ $schema_search = @ldap_list($ds, '', '(objectClass=*)',
+- array( $schema_to_fetch ), 0, 0, 0, LDAP_DEREF_ALWAYS );
++ array( $schema_to_fetch ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_ALWAYS );
+ $schema_entries = @ldap_get_entries( $ds, $schema_search );
+ if( ! isset( $schema_entries[0][$schema_to_fetch] ) )
+ $schema_search = null;
+diff -ur ldap-account-manager-2.9.0/lib/tree.inc ldap-account-manager-2.9.0-limit/lib/tree.inc
+--- ldap-account-manager-2.9.0/lib/tree.inc 2009-10-27 19:45:22.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/tree.inc 2010-02-14 12:55:50.859972953 +0100
+@@ -115,7 +115,7 @@
+ $expand_img = "../../graphics/plus.png";
+ $expand_alt = "+";
+ $child_count = count( get_container_contents(
+- $base_dn, 0,
++ $base_dn, $_SESSION['config']->get_sizeLimit(),
+ '(objectClass=*)') );
+ if( $child_count > $limit )
+ $child_count = $limit . '+';
+@@ -225,7 +225,7 @@
+ */
+ function dn_exists( $dn )
+ {
+- $search_result = @ldap_read( $_SESSION['ldap']->server(), $dn, 'objectClass=*', array('dn') );
++ $search_result = @ldap_read( $_SESSION['ldap']->server(), $dn, 'objectClass=*', array('dn'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER );
+
+ if( ! $search_result )
+ return false;
+@@ -269,8 +269,11 @@
+ * @param string $filter (optional) An LDAP filter to apply when fetching children, example: "(objectClass=inetOrgPerson)"
+ * @return array An array of DN strings listing the immediate children of the specified entry.
+ */
+-function get_container_contents( $dn, $size_limit=0, $filter='(objectClass=*)' )
++function get_container_contents( $dn, $size_limit, $filter='(objectClass=*)' )
+ {
++ if (!isset($size_limit)) {
++ $size_limit = $_SESSION['config']->get_sizeLimit();
++ }
+ $search = @ldap_list( $_SESSION['ldap']->server(), $dn, $filter, array( 'dn' ), 1, $size_limit, 0);
+ if( ! $search )
+ return array();
+@@ -452,7 +455,7 @@
+ */
+ function get_object_attr( $dn, $attr )
+ {
+- $search = @ldap_read( $_SESSION['ldap']->server(), $dn, '(objectClass=*)', array( $attr ), 0, 0, 0 );
++ $search = @ldap_read( $_SESSION['ldap']->server(), $dn, '(objectClass=*)', array( $attr ), 0, $_SESSION['config']->get_sizeLimit(), 0 );
+
+ if( ! $search )
+ return false;
+@@ -749,7 +752,7 @@
+ {
+
+ $conn = $_SESSION['ldap']->server();
+- $search = @ldap_read( $conn, $dn, '(objectClass=*)', array( ), 0, 0, 0, $deref );
++ $search = @ldap_read( $conn, $dn, '(objectClass=*)', array( ), 0, $_SESSION['config']->get_sizeLimit(), 0, $deref );
+
+ if( ! $search )
+ return false;
+@@ -913,7 +916,7 @@
+ $attrs = array( 'creatorsname', 'createtimestamp', 'modifiersname',
+ 'structuralObjectClass', 'entryUUID', 'modifytimestamp',
+ 'subschemaSubentry', 'hasSubordinates', '+' );
+- $search = @ldap_read( $conn, $dn, '(objectClass=*)', $attrs, 0, 0, 0, $deref );
++ $search = @ldap_read( $conn, $dn, '(objectClass=*)', $attrs, 0, $_SESSION['config']->get_sizeLimit(), 0, $deref );
+ if( ! $search )
+ return false;
+ $entry = ldap_first_entry( $conn, $search );
+@@ -1152,7 +1155,7 @@
+ $jpeg_temp_dir = $_SESSION['lampath'] . 'tmp';
+
+ $conn = $_SESSION['ldap']->server();
+- $search_result = ldap_read( $conn, $dn, 'objectClass=*', array( $attr_name ) );
++ $search_result = ldap_read( $conn, $dn, 'objectClass=*', array( $attr_name ), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER );
+ $entry = ldap_first_entry( $conn, $search_result );
+
+ echo "<table $table_html_attrs><td><center>\n\n";
+@@ -1253,16 +1256,17 @@
+ function pla_ldap_search( $filter, $base_dn=null, $attrs=array(), $scope='sub', $sort_results=true, $deref=LDAP_DEREF_ALWAYS )
+ {
+ $ds = $_SESSION['ldap']->server();
++ $slimit = $_SESSION['config']->get_sizeLimit();
+ switch( $scope ) {
+ case 'base':
+- $search = @ldap_read( $ds, $base_dn, $filter, $attrs, 0, 0, 0, $deref );
++ $search = @ldap_read( $ds, $base_dn, $filter, $attrs, 0, $slimit, 0, $deref );
+ break;
+ case 'one':
+- $search = @ldap_list( $ds, $base_dn, $filter, $attrs, 0, 0, 0, $deref );
++ $search = @ldap_list( $ds, $base_dn, $filter, $attrs, 0, $slimit, 0, $deref );
+ break;
+ case 'sub':
+ default:
+- $search = @ldap_search( $ds, $base_dn, $filter, $attrs, 0, 0, 0, $deref );
++ $search = @ldap_search( $ds, $base_dn, $filter, $attrs, 0, $slimit, 0, $deref );
+ break;
+ }
+
+diff -ur ldap-account-manager-2.9.0/lib/types/dhcp.inc ldap-account-manager-2.9.0-limit/lib/types/dhcp.inc
+--- ldap-account-manager-2.9.0/lib/types/dhcp.inc 2009-10-28 17:36:24.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/types/dhcp.inc 2010-02-14 12:45:57.006972105 +0100
+@@ -140,7 +140,7 @@
+ $ldap = $_SESSION['ldap'];
+ $suffix = $_SESSION['config']->get_Suffix('dhcp');
+
+- $sr = @ldap_search($ldap->server(),"cn=".$entry['cn'][0].",".$suffix,"objectClass=dhcpHost", array(), 0, 0, 0, LDAP_DEREF_NEVER);
++ $sr = @ldap_search($ldap->server(),"cn=".$entry['cn'][0].",".$suffix,"objectClass=dhcpHost", array(), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if ($sr) {
+ $get = ldap_get_entries($ldap->server(),$sr);
+
+diff -ur ldap-account-manager-2.9.0/lib/types/group.inc ldap-account-manager-2.9.0-limit/lib/types/group.inc
+--- ldap-account-manager-2.9.0/lib/types/group.inc 2009-11-24 16:28:08.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/types/group.inc 2010-02-14 12:46:03.783721717 +0100
+@@ -242,7 +242,7 @@
+ for ($i = 0; $i < sizeof($this->entries); $i++) {
+ $gid = $this->entries[$i]['gidnumber'][0];
+ $filter = "(&(&" . $module_filter . ")(gidNumber=" . $gid . "))";
+- $sr = @ldap_search($_SESSION["ldap"]->server(), escapeDN($module_suffix), $filter, $attrs, 0, 0, 0, LDAP_DEREF_NEVER);
++ $sr = @ldap_search($_SESSION["ldap"]->server(), escapeDN($module_suffix), $filter, $attrs, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if (ldap_errno($_SESSION["ldap"]->server()) == 4) {
+ StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See the manual for instructions to solve this problem."));
+ $this->refresh_primary = true;
+diff -ur ldap-account-manager-2.9.0/lib/types/user.inc ldap-account-manager-2.9.0-limit/lib/types/user.inc
+--- ldap-account-manager-2.9.0/lib/types/user.inc 2009-10-28 17:36:24.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/lib/types/user.inc 2010-02-14 12:46:17.906721870 +0100
+@@ -167,7 +167,7 @@
+ $grp_suffix = $_SESSION['config']->get_Suffix('group');
+ $filter = "objectClass=posixGroup";
+ $attrs = array("cn", "gidNumber");
+- $sr = @ldap_search($_SESSION["ldap"]->server(), escapeDN($grp_suffix), $filter, $attrs, 0, 0, 0, LDAP_DEREF_NEVER);
++ $sr = @ldap_search($_SESSION["ldap"]->server(), escapeDN($grp_suffix), $filter, $attrs, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if ($sr) {
+ $info = @ldap_get_entries($_SESSION["ldap"]->server(), $sr);
+ unset($info['count']); // delete count entry
+@@ -200,7 +200,7 @@
+ elseif ($attribute == "jpegphoto") {
+ if (sizeof($entry[$attribute][0]) < 100) {
+ // looks like we have read broken binary data, reread photo
+- $result = @ldap_search($_SESSION['ldap']->server(), escapeDN($entry['dn']), $attribute . "=*", array($attribute), 0, 0, 0, LDAP_DEREF_NEVER);
++ $result = @ldap_search($_SESSION['ldap']->server(), escapeDN($entry['dn']), $attribute . "=*", array($attribute), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if ($result) {
+ $tempEntry = @ldap_first_entry($_SESSION['ldap']->server(), $result);
+ if ($tempEntry) {
+diff -ur ldap-account-manager-2.9.0/templates/config/confmain.php ldap-account-manager-2.9.0-limit/templates/config/confmain.php
+--- ldap-account-manager-2.9.0/templates/config/confmain.php 2010-02-14 12:59:38.543718828 +0100
++++ ldap-account-manager-2.9.0-limit/templates/config/confmain.php 2010-02-14 12:25:51.312720326 +0100
+@@ -276,6 +276,18 @@
+ if ($conf->get_cacheTimeout() != 15) echo("<option>15</option>\n");
+ echo ("</select></td>\n");
+ $tabindex++;
++
++// new line
++echo ("<tr><td colspan=3> </td></tr>");
++
++// tree suffix
++echo ("<tr><td align=\"right\"><b>".
++ _("Search size limit") . ": </b></td>".
++ "<td><input tabindex=\"$tabindex\" size=10 type=\"text\" name=\"sizelimit\" value=\"" . $conf->get_sizeLimit('tree') . "\"></td>\n");
++echo "<td>";
++printHelpLink(getHelp('', '213'), '213');
++echo "</td></tr>\n";
++$tabindex++;
+ echo "<td>";
+ printHelpLink(getHelp('', '214'), '214');
+ echo "</td></tr>\n";
+@@ -535,6 +547,9 @@
+ if (!$conf->set_cacheTimeout($_POST['cachetimeout'])) {
+ $errors[] = array("ERROR", _("Cache timeout is invalid!"));
+ }
++ if (!$conf->set_sizeLimit($_POST['sizelimit'])) {
++ $errors[] = array("ERROR", _("Size limit is invalid!"));
++ }
+ if (isLAMProVersion()) {
+ $conf->setAccessLevel($_POST['accessLevel']);
+ }
+diff -ur ldap-account-manager-2.9.0/templates/delete.php ldap-account-manager-2.9.0-limit/templates/delete.php
+--- ldap-account-manager-2.9.0/templates/delete.php 2009-10-28 17:35:41.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/templates/delete.php 2010-02-14 12:46:53.971969845 +0100
+@@ -254,7 +254,7 @@
+ */
+ function getChildCount($dn) {
+ $return = 0;
+- $sr = @ldap_search($_SESSION['ldap']->server(), escapeDN($dn), 'objectClass=*', array('dn'), 0, 0, 0, LDAP_DEREF_NEVER);
++ $sr = @ldap_search($_SESSION['ldap']->server(), escapeDN($dn), 'objectClass=*', array('dn'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if ($sr) {
+ $entries = ldap_get_entries($_SESSION['ldap']->server(), $sr);
+ $return = $entries['count'] - 1;
+@@ -270,7 +270,7 @@
+ */
+ function deleteDN($dn) {
+ $errors = array();
+- $sr = @ldap_list($_SESSION['ldap']->server(), $dn, 'objectClass=*', array('dn'), 0);
++ $sr = @ldap_list($_SESSION['ldap']->server(), $dn, 'objectClass=*', array('dn'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if ($sr) {
+ $entries = ldap_get_entries($_SESSION['ldap']->server(), $sr);
+ for ($i = 0; $i < $entries['count']; $i++) {
+diff -ur ldap-account-manager-2.9.0/templates/initsuff.php ldap-account-manager-2.9.0-limit/templates/initsuff.php
+--- ldap-account-manager-2.9.0/templates/initsuff.php 2009-11-24 16:19:38.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/templates/initsuff.php 2010-02-14 12:47:25.048972037 +0100
+@@ -58,7 +58,7 @@
+ // add entries
+ for ($i = 0; $i < sizeof($new_suff); $i++) {
+ // check if entry is already present
+- $info = @ldap_read($_SESSION['ldap']->server(), escapeDN($new_suff[$i]), "objectclass=*", array('dn'), 0, 0, 0, LDAP_DEREF_NEVER);
++ $info = @ldap_read($_SESSION['ldap']->server(), escapeDN($new_suff[$i]), "objectclass=*", array('dn'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ $res = @ldap_get_entries($_SESSION['ldap']->server(), $info);
+ if ($res) continue;
+ $suff = $new_suff[$i];
+@@ -100,7 +100,7 @@
+ // create missing entries
+ for ($k = sizeof($subsuffs) - 1; $k >= 0; $k--) {
+ // check if subsuffix is present
+- $info = @ldap_read($_SESSION['ldap']->server(), escapeDN($subsuffs[$k]), "objectclass=*", array('dn'), 0, 0, 0, LDAP_DEREF_NEVER);
++ $info = @ldap_read($_SESSION['ldap']->server(), escapeDN($subsuffs[$k]), "objectclass=*", array('dn'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ $res = @ldap_get_entries($_SESSION['ldap']->server(), $info);
+ if (!$res) {
+ $suffarray = explode(",", $subsuffs[$k]);
+diff -ur ldap-account-manager-2.9.0/templates/lists/userlink.php ldap-account-manager-2.9.0-limit/templates/lists/userlink.php
+--- ldap-account-manager-2.9.0/templates/lists/userlink.php 2009-10-28 17:36:08.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/templates/lists/userlink.php 2010-02-14 12:47:36.448722065 +0100
+@@ -77,7 +77,7 @@
+ function search_username($name) {
+ $filter = "(uid=$name)";
+ $attrs = array();
+- $sr = @ldap_search($_SESSION['ldap']->server(), escapeDN($_SESSION['config']->get_Suffix('user')), $filter, $attrs, 0, 0, 0, LDAP_DEREF_NEVER);
++ $sr = @ldap_search($_SESSION['ldap']->server(), escapeDN($_SESSION['config']->get_Suffix('user')), $filter, $attrs, 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if ($sr) {
+ $info = ldap_get_entries($_SESSION['ldap']->server(), $sr);
+ // return only first DN entry
+diff -ur ldap-account-manager-2.9.0/templates/login.php ldap-account-manager-2.9.0-limit/templates/login.php
+--- ldap-account-manager-2.9.0/templates/login.php 2010-02-14 12:59:38.537718583 +0100
++++ ldap-account-manager-2.9.0-limit/templates/login.php 2010-02-14 12:47:52.654722303 +0100
+@@ -442,7 +442,7 @@
+ $searchError = _('Cannot connect to specified LDAP server. Please try again.') . ' ' . @ldap_error($searchLDAP->server());
+ }
+ else {
+- $searchResult = @ldap_search($searchLDAP->server(), $_SESSION['config']->getLoginSearchSuffix(), $searchFilter, array('dn'), 0, 0, 0, LDAP_DEREF_NEVER);
++ $searchResult = @ldap_search($searchLDAP->server(), $_SESSION['config']->getLoginSearchSuffix(), $searchFilter, array('dn'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ if ($searchResult) {
+ $searchInfo = @ldap_get_entries($searchLDAP->server(), $searchResult);
+ if ($searchInfo) {
+diff -ur ldap-account-manager-2.9.0/templates/main.php ldap-account-manager-2.9.0-limit/templates/main.php
+--- ldap-account-manager-2.9.0/templates/main.php 2009-11-24 16:12:41.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/templates/main.php 2010-02-14 12:48:03.851722995 +0100
+@@ -49,7 +49,7 @@
+ // get list of active types
+ $types = $_SESSION['config']->get_ActiveTypes();
+ for ($i = 0; $i < sizeof($types); $i++) {
+- $info = @ldap_read($_SESSION['ldap']->server(), escapeDN($conf->get_Suffix($types[$i])), "(objectClass=*)", array('objectClass'), 0, 0, 0, LDAP_DEREF_NEVER);
++ $info = @ldap_read($_SESSION['ldap']->server(), escapeDN($conf->get_Suffix($types[$i])), "(objectClass=*)", array('objectClass'), 0, $_SESSION['config']->get_sizeLimit(), 0, LDAP_DEREF_NEVER);
+ $res = @ldap_get_entries($_SESSION['ldap']->server(), $info);
+ if (!$res && !in_array($conf->get_Suffix($types[$i]), $new_suffs)) $new_suffs[] = $conf->get_Suffix($types[$i]);
+ }
+diff -ur ldap-account-manager-2.9.0/templates/ou_edit.php ldap-account-manager-2.9.0-limit/templates/ou_edit.php
+--- ldap-account-manager-2.9.0/templates/ou_edit.php 2009-10-27 19:46:33.000000000 +0100
++++ ldap-account-manager-2.9.0-limit/templates/ou_edit.php 2010-02-14 12:48:26.214972014 +0100
+@@ -94,7 +94,7 @@
<<Diff was trimmed, longer than 597 lines>>
More information about the pld-cvs-commit
mailing list