1 |
85ad3d82
|
Assos Assos
|
<?php
|
2 |
|
|
|
3 |
|
|
|
4 |
|
|
|
5 |
32700c57
|
Assos Assos
|
|
6 |
85ad3d82
|
Assos Assos
|
|
7 |
|
|
|
8 |
|
|
|
9 |
32700c57
|
Assos Assos
|
|
10 |
85ad3d82
|
Assos Assos
|
|
11 |
|
|
|
12 |
|
|
|
13 |
|
|
|
14 |
|
|
|
15 |
|
|
|
16 |
|
|
|
17 |
|
|
ldap_servers_module_load_include('php', 'ldap_servers', 'LdapServer.class');
|
18 |
32700c57
|
Assos Assos
|
|
19 |
|
|
|
20 |
|
|
|
21 |
85ad3d82
|
Assos Assos
|
class LdapServerTest extends LdapServer {
|
22 |
|
|
|
23 |
|
|
public $entries;
|
24 |
|
|
public $methodResponses;
|
25 |
|
|
public $searchResults;
|
26 |
32700c57
|
Assos Assos
|
|
27 |
|
|
|
28 |
|
|
|
29 |
|
|
public $binddn = FALSE;
|
30 |
|
|
|
31 |
|
|
|
32 |
|
|
|
33 |
|
|
public $bindpw = FALSE;
|
34 |
85ad3d82
|
Assos Assos
|
|
35 |
|
|
|
36 |
32700c57
|
Assos Assos
|
|
37 |
85ad3d82
|
Assos Assos
|
|
38 |
32700c57
|
Assos Assos
|
|
39 |
85ad3d82
|
Assos Assos
|
|
40 |
|
|
|
41 |
32700c57
|
Assos Assos
|
public function __construct($sid) {
|
42 |
85ad3d82
|
Assos Assos
|
if (!is_scalar($sid)) {
|
43 |
|
|
$test_data = $sid;
|
44 |
|
|
$sid = $test_data['sid'];
|
45 |
|
|
}
|
46 |
|
|
else {
|
47 |
32700c57
|
Assos Assos
|
$test_data = variable_get('ldap_test_server__' . $sid, []);
|
48 |
85ad3d82
|
Assos Assos
|
}
|
49 |
|
|
|
50 |
|
|
$bindpw = (isset($test_data['bindpw'])) ? $test_data['bindpw'] : 'goodpwd';
|
51 |
|
|
$this->sid = $sid;
|
52 |
|
|
$this->refreshFakeData();
|
53 |
|
|
$this->initDerivedProperties($bindpw);
|
54 |
|
|
}
|
55 |
|
|
|
56 |
32700c57
|
Assos Assos
|
|
57 |
|
|
|
58 |
|
|
|
59 |
85ad3d82
|
Assos Assos
|
public function refreshFakeData() {
|
60 |
32700c57
|
Assos Assos
|
$test_data = variable_get('ldap_test_server__' . $this->sid, []);
|
61 |
|
|
$this->methodResponses = (is_array($test_data) && isset($test_data['methodResponses'])) ? $test_data['methodResponses'] : [];
|
62 |
|
|
$this->entries = (is_array($test_data) && isset($test_data['ldap'])) ? $test_data['ldap'] : [];
|
63 |
|
|
$this->searchResults = (isset($test_data['search_results'])) ? $test_data['search_results'] : [];
|
64 |
85ad3d82
|
Assos Assos
|
$this->detailedWatchdogLog = variable_get('ldap_help_watchdog_detail', 0);
|
65 |
32700c57
|
Assos Assos
|
foreach ($test_data['properties'] as $property_name => $property_value) {
|
66 |
85ad3d82
|
Assos Assos
|
$this->{$property_name} = $property_value;
|
67 |
|
|
}
|
68 |
|
|
if (isset($test_data['bindpw']) && $test_data['bindpw'] != '') {
|
69 |
|
|
$this->bindpw = ldap_servers_decrypt($this->bindpw);
|
70 |
|
|
}
|
71 |
|
|
}
|
72 |
|
|
|
73 |
|
|
|
74 |
32700c57
|
Assos Assos
|
|
75 |
85ad3d82
|
Assos Assos
|
|
76 |
32700c57
|
Assos Assos
|
public function __destruct() {
|
77 |
|
|
|
78 |
|
|
|
79 |
|
|
|
80 |
85ad3d82
|
Assos Assos
|
}
|
81 |
|
|
|
82 |
|
|
|
83 |
32700c57
|
Assos Assos
|
|
84 |
85ad3d82
|
Assos Assos
|
|
85 |
32700c57
|
Assos Assos
|
public function connect() {
|
86 |
85ad3d82
|
Assos Assos
|
return $this->methodResponses['connect'];
|
87 |
|
|
}
|
88 |
|
|
|
89 |
32700c57
|
Assos Assos
|
|
90 |
|
|
|
91 |
|
|
|
92 |
|
|
public function bind($userdn = NULL, $pass = NULL, $anon_bind = FALSE) {
|
93 |
85ad3d82
|
Assos Assos
|
$userdn = ($userdn != NULL) ? $userdn : $this->binddn;
|
94 |
|
|
$pass = ($pass != NULL) ? $pass : $this->bindpw;
|
95 |
|
|
|
96 |
32700c57
|
Assos Assos
|
if (!isset($this->entries[$userdn])) {
|
97 |
|
|
|
98 |
|
|
$ldap_errno = LDAP_NO_SUCH_OBJECT;
|
99 |
85ad3d82
|
Assos Assos
|
if (function_exists('ldap_err2str')) {
|
100 |
|
|
$ldap_error = ldap_err2str($ldap_errno);
|
101 |
|
|
}
|
102 |
|
|
else {
|
103 |
|
|
$ldap_error = "Failed to find $userdn in LdapServerTest.class.php";
|
104 |
|
|
}
|
105 |
|
|
}
|
106 |
|
|
elseif (isset($this->entries[$userdn]['password'][0]) && $this->entries[$userdn]['password'][0] == $pass && $pass) {
|
107 |
|
|
return LDAP_SUCCESS;
|
108 |
|
|
}
|
109 |
|
|
else {
|
110 |
|
|
if (!$pass) {
|
111 |
|
|
debug("Simpletest failure for $userdn. No password submitted");
|
112 |
|
|
}
|
113 |
32700c57
|
Assos Assos
|
if (!isset($this->entries[$userdn]['password'][0])) {
|
114 |
85ad3d82
|
Assos Assos
|
debug("Simpletest failure for $userdn. No password in entry to test for bind"); debug($this->entries[$userdn]);
|
115 |
|
|
}
|
116 |
|
|
$ldap_errno = LDAP_INVALID_CREDENTIALS;
|
117 |
|
|
if (function_exists('ldap_err2str')) {
|
118 |
|
|
$ldap_error = ldap_err2str($ldap_errno);
|
119 |
|
|
}
|
120 |
|
|
else {
|
121 |
|
|
$ldap_error = "Credentials for $userdn failed in LdapServerTest.class.php";
|
122 |
|
|
}
|
123 |
|
|
}
|
124 |
|
|
|
125 |
32700c57
|
Assos Assos
|
$watchdog_tokens = ['%user' => $userdn, '%errno' => $ldap_errno, '%error' => $ldap_error];
|
126 |
bc175c27
|
Assos Assos
|
watchdog('ldap_servers', "LDAP bind failure for user %user. Error %errno: %error", $watchdog_tokens);
|
127 |
85ad3d82
|
Assos Assos
|
return $ldap_errno;
|
128 |
|
|
|
129 |
|
|
}
|
130 |
|
|
|
131 |
|
|
|
132 |
|
|
|
133 |
|
|
|
134 |
32700c57
|
Assos Assos
|
public function disconnect() {
|
135 |
85ad3d82
|
Assos Assos
|
|
136 |
|
|
}
|
137 |
|
|
|
138 |
|
|
|
139 |
|
|
|
140 |
|
|
|
141 |
|
|
|
142 |
32700c57
|
Assos Assos
|
|
143 |
85ad3d82
|
Assos Assos
|
|
144 |
32700c57
|
Assos Assos
|
|
145 |
85ad3d82
|
Assos Assos
|
|
146 |
|
|
|
147 |
|
|
|
148 |
|
|
|
149 |
|
|
|
150 |
|
|
|
151 |
|
|
|
152 |
32700c57
|
Assos Assos
|
public function search($base_dn = NULL, $filter, $attributes = [], $attrsonly = 0, $sizelimit = 0, $timelimit = 0, $deref = LDAP_DEREF_NEVER, $scope = LDAP_SCOPE_SUBTREE) {
|
153 |
85ad3d82
|
Assos Assos
|
|
154 |
32700c57
|
Assos Assos
|
$lcase_attribute = [];
|
155 |
85ad3d82
|
Assos Assos
|
foreach ($attributes as $i => $attribute_name) {
|
156 |
|
|
$lcase_attribute[] = drupal_strtolower($attribute_name);
|
157 |
|
|
}
|
158 |
|
|
$attributes = $lcase_attribute;
|
159 |
|
|
|
160 |
32700c57
|
Assos Assos
|
|
161 |
|
|
$filter = trim(str_replace(["\n", " "], ['', ''], $filter));
|
162 |
85ad3d82
|
Assos Assos
|
|
163 |
|
|
if ($base_dn == NULL) {
|
164 |
|
|
if (count($this->basedn) == 1) {
|
165 |
|
|
$base_dn = $this->basedn[0];
|
166 |
|
|
}
|
167 |
|
|
else {
|
168 |
|
|
return FALSE;
|
169 |
|
|
}
|
170 |
|
|
}
|
171 |
|
|
|
172 |
|
|
|
173 |
|
|
|
174 |
|
|
|
175 |
|
|
|
176 |
|
|
if (isset($this->searchResults[$filter][$base_dn])) {
|
177 |
|
|
$results = $this->searchResults[$filter][$base_dn];
|
178 |
|
|
foreach ($results as $i => $entry) {
|
179 |
|
|
if (is_array($entry) && isset($entry['FULLENTRY'])) {
|
180 |
|
|
unset($results[$i]['FULLENTRY']);
|
181 |
|
|
$dn = $results[$i]['dn'];
|
182 |
|
|
$results[$i] = $this->entries[$dn];
|
183 |
|
|
$results[$i]['dn'] = $dn;
|
184 |
|
|
}
|
185 |
|
|
}
|
186 |
59ae487e
|
Assos Assos
|
return $results;
|
187 |
85ad3d82
|
Assos Assos
|
}
|
188 |
|
|
|
189 |
|
|
|
190 |
|
|
|
191 |
|
|
|
192 |
|
|
|
193 |
|
|
$base_dn = drupal_strtolower($base_dn);
|
194 |
|
|
$filter = trim($filter, "()");
|
195 |
32700c57
|
Assos Assos
|
$subqueries = [];
|
196 |
85ad3d82
|
Assos Assos
|
$operand = FALSE;
|
197 |
|
|
|
198 |
|
|
if (strpos($filter, '&') === 0) {
|
199 |
32700c57
|
Assos Assos
|
|
200 |
85ad3d82
|
Assos Assos
|
|
201 |
|
|
|
202 |
|
|
|
203 |
|
|
$operand = '&';
|
204 |
|
|
$filter = substr($filter, 1);
|
205 |
|
|
$filter = trim($filter, "()");
|
206 |
|
|
$parts = explode(')(', $filter);
|
207 |
|
|
foreach ($parts as $i => $pair) {
|
208 |
|
|
$subqueries[] = explode('=', $pair);
|
209 |
|
|
}
|
210 |
|
|
}
|
211 |
|
|
elseif (strpos($filter, '|') === 0) {
|
212 |
32700c57
|
Assos Assos
|
|
213 |
85ad3d82
|
Assos Assos
|
|
214 |
|
|
|
215 |
|
|
|
216 |
|
|
$operand = '|';
|
217 |
|
|
$filter = substr($filter, 1);
|
218 |
|
|
$filter = trim($filter, "()");
|
219 |
|
|
$parts = explode(')(', $filter);
|
220 |
|
|
$parts = explode(')(', $filter);
|
221 |
|
|
foreach ($parts as $i => $pair) {
|
222 |
|
|
$subqueries[] = explode('=', $pair);
|
223 |
|
|
}
|
224 |
|
|
}
|
225 |
|
|
elseif (count(explode('=', $filter)) == 2) {
|
226 |
32700c57
|
Assos Assos
|
|
227 |
85ad3d82
|
Assos Assos
|
|
228 |
|
|
|
229 |
|
|
|
230 |
|
|
$operand = '|';
|
231 |
|
|
$subqueries[] = explode('=', $filter);
|
232 |
|
|
}
|
233 |
|
|
else {
|
234 |
|
|
return FALSE;
|
235 |
|
|
}
|
236 |
|
|
|
237 |
32700c57
|
Assos Assos
|
|
238 |
|
|
$results = [];
|
239 |
85ad3d82
|
Assos Assos
|
|
240 |
|
|
if ($operand == '|') {
|
241 |
|
|
foreach ($subqueries as $i => $subquery) {
|
242 |
|
|
$filter_attribute = drupal_strtolower($subquery[0]);
|
243 |
|
|
$filter_value = $subquery[1];
|
244 |
|
|
foreach ($this->entries as $dn => $entry) {
|
245 |
|
|
$dn_lcase = drupal_strtolower($dn);
|
246 |
|
|
|
247 |
32700c57
|
Assos Assos
|
|
248 |
85ad3d82
|
Assos Assos
|
|
249 |
|
|
|
250 |
32700c57
|
Assos Assos
|
|
251 |
85ad3d82
|
Assos Assos
|
$substring = strrev(substr(strrev($dn_lcase), 0, strlen($base_dn)));
|
252 |
bc175c27
|
Assos Assos
|
$cascmp = strcasecmp($base_dn, $substring);
|
253 |
85ad3d82
|
Assos Assos
|
if ($cascmp !== 0) {
|
254 |
|
|
|
255 |
32700c57
|
Assos Assos
|
|
256 |
|
|
continue;
|
257 |
85ad3d82
|
Assos Assos
|
}
|
258 |
32700c57
|
Assos Assos
|
|
259 |
85ad3d82
|
Assos Assos
|
$attr_value_to_compare = FALSE;
|
260 |
|
|
foreach ($entry as $attr_name => $attr_value) {
|
261 |
|
|
if (drupal_strtolower($attr_name) == $filter_attribute) {
|
262 |
|
|
$attr_value_to_compare = $attr_value;
|
263 |
|
|
break;
|
264 |
|
|
}
|
265 |
|
|
}
|
266 |
|
|
if (!$attr_value_to_compare || drupal_strtolower($attr_value_to_compare[0]) != $filter_value) {
|
267 |
|
|
continue;
|
268 |
|
|
}
|
269 |
|
|
|
270 |
|
|
|
271 |
|
|
$entry['dn'] = $dn;
|
272 |
|
|
if ($attributes) {
|
273 |
32700c57
|
Assos Assos
|
$selected_data = [];
|
274 |
85ad3d82
|
Assos Assos
|
foreach ($attributes as $i => $attr_name) {
|
275 |
|
|
$selected_data[$attr_name] = (isset($entry[$attr_name])) ? $entry[$attr_name] : NULL;
|
276 |
|
|
}
|
277 |
|
|
$results[] = $selected_data;
|
278 |
|
|
}
|
279 |
|
|
else {
|
280 |
|
|
$results[] = $entry;
|
281 |
|
|
}
|
282 |
|
|
}
|
283 |
|
|
}
|
284 |
|
|
}
|
285 |
32700c57
|
Assos Assos
|
|
286 |
|
|
elseif ($operand == '&') {
|
287 |
85ad3d82
|
Assos Assos
|
foreach ($this->entries as $dn => $entry) {
|
288 |
|
|
$dn_lcase = drupal_strtolower($dn);
|
289 |
32700c57
|
Assos Assos
|
|
290 |
|
|
$match = TRUE;
|
291 |
85ad3d82
|
Assos Assos
|
foreach ($subqueries as $i => $subquery) {
|
292 |
|
|
$filter_attribute = drupal_strtolower($subquery[0]);
|
293 |
|
|
$filter_value = $subquery[1];
|
294 |
|
|
|
295 |
|
|
$substring = strrev(substr(strrev($dn_lcase), 0, strlen($base_dn)));
|
296 |
bc175c27
|
Assos Assos
|
$cascmp = strcasecmp($base_dn, $substring);
|
297 |
85ad3d82
|
Assos Assos
|
if ($cascmp !== 0) {
|
298 |
|
|
$match = FALSE;
|
299 |
32700c57
|
Assos Assos
|
|
300 |
|
|
break;
|
301 |
85ad3d82
|
Assos Assos
|
}
|
302 |
32700c57
|
Assos Assos
|
|
303 |
85ad3d82
|
Assos Assos
|
$attr_value_to_compare = FALSE;
|
304 |
|
|
foreach ($entry as $attr_name => $attr_value) {
|
305 |
|
|
if (drupal_strtolower($attr_name) == $filter_attribute) {
|
306 |
|
|
$attr_value_to_compare = $attr_value;
|
307 |
|
|
break;
|
308 |
|
|
}
|
309 |
|
|
}
|
310 |
|
|
if (!$attr_value_to_compare || drupal_strtolower($attr_value_to_compare[0]) != $filter_value) {
|
311 |
|
|
$match = FALSE;
|
312 |
32700c57
|
Assos Assos
|
|
313 |
|
|
break;
|
314 |
85ad3d82
|
Assos Assos
|
}
|
315 |
|
|
|
316 |
|
|
}
|
317 |
|
|
if ($match === TRUE) {
|
318 |
|
|
$entry['dn'] = $dn;
|
319 |
|
|
if ($attributes) {
|
320 |
32700c57
|
Assos Assos
|
$selected_data = [];
|
321 |
85ad3d82
|
Assos Assos
|
foreach ($attributes as $i => $attr_name) {
|
322 |
|
|
$selected_data[$attr_name] = (isset($entry[$attr_name])) ? $entry[$attr_name] : NULL;
|
323 |
|
|
}
|
324 |
|
|
$results[] = $selected_data;
|
325 |
|
|
}
|
326 |
|
|
else {
|
327 |
|
|
$results[] = $entry;
|
328 |
|
|
}
|
329 |
|
|
}
|
330 |
|
|
}
|
331 |
|
|
}
|
332 |
|
|
|
333 |
|
|
$results['count'] = count($results);
|
334 |
|
|
return $results;
|
335 |
|
|
}
|
336 |
|
|
|
337 |
32700c57
|
Assos Assos
|
|
338 |
|
|
|
339 |
|
|
|
340 |
|
|
|
341 |
|
|
|
342 |
|
|
|
343 |
|
|
|
344 |
|
|
|
345 |
|
|
|
346 |
|
|
public function dnExists($find_dn, $return = 'boolean', $attributes = ['objectclass']) {
|
347 |
85ad3d82
|
Assos Assos
|
$this->refreshFakeData();
|
348 |
32700c57
|
Assos Assos
|
$test_data = variable_get('ldap_test_server__' . $this->sid, []);
|
349 |
85ad3d82
|
Assos Assos
|
foreach ($this->entries as $entry_dn => $entry) {
|
350 |
|
|
$match = (strcasecmp($entry_dn, $find_dn) == 0);
|
351 |
|
|
|
352 |
|
|
if ($match) {
|
353 |
|
|
return ($return == 'boolean') ? TRUE : $entry;
|
354 |
|
|
}
|
355 |
|
|
}
|
356 |
32700c57
|
Assos Assos
|
|
357 |
|
|
return FALSE;
|
358 |
85ad3d82
|
Assos Assos
|
|
359 |
|
|
}
|
360 |
|
|
|
361 |
32700c57
|
Assos Assos
|
|
362 |
|
|
|
363 |
|
|
|
364 |
85ad3d82
|
Assos Assos
|
public function countEntries($ldap_result) {
|
365 |
|
|
return ldap_count_entries($this->connection, $ldap_result);
|
366 |
|
|
}
|
367 |
|
|
|
368 |
32700c57
|
Assos Assos
|
|
369 |
|
|
|
370 |
|
|
|
371 |
85ad3d82
|
Assos Assos
|
public static function getLdapServerObjects($sid = NULL, $type = NULL, $flatten = FALSE) {
|
372 |
32700c57
|
Assos Assos
|
$servers = [];
|
373 |
85ad3d82
|
Assos Assos
|
if ($sid) {
|
374 |
|
|
$servers[$sid] = new LdapServerTest($sid);
|
375 |
|
|
}
|
376 |
|
|
else {
|
377 |
32700c57
|
Assos Assos
|
$server_ids = variable_get('ldap_test_servers', []);
|
378 |
85ad3d82
|
Assos Assos
|
foreach ($server_ids as $sid => $_sid) {
|
379 |
|
|
$servers[$sid] = new LdapServerTest($sid);
|
380 |
|
|
}
|
381 |
|
|
}
|
382 |
|
|
|
383 |
|
|
if ($flatten && $sid) {
|
384 |
|
|
return $servers[$sid];
|
385 |
|
|
}
|
386 |
|
|
else {
|
387 |
|
|
return $servers;
|
388 |
|
|
}
|
389 |
|
|
}
|
390 |
|
|
|
391 |
|
|
|
392 |
32700c57
|
Assos Assos
|
|
393 |
85ad3d82
|
Assos Assos
|
|
394 |
32700c57
|
Assos Assos
|
|
395 |
|
|
|
396 |
85ad3d82
|
Assos Assos
|
|
397 |
32700c57
|
Assos Assos
|
|
398 |
|
|
|
399 |
|
|
|
400 |
|
|
|
401 |
85ad3d82
|
Assos Assos
|
|
402 |
|
|
|
403 |
|
|
public function createLdapEntry($ldap_entry, $dn = NULL) {
|
404 |
|
|
$result = FALSE;
|
405 |
32700c57
|
Assos Assos
|
$test_data = variable_get('ldap_test_server__' . $this->sid, []);
|
406 |
85ad3d82
|
Assos Assos
|
|
407 |
|
|
if (isset($ldap_entry['dn'])) {
|
408 |
|
|
$dn = $ldap_entry['dn'];
|
409 |
|
|
unset($ldap_entry['dn']);
|
410 |
|
|
}
|
411 |
|
|
|
412 |
|
|
if ($dn && !isset($test_data['entries'][$dn])) {
|
413 |
|
|
$test_data['entries'][$dn] = $ldap_entry;
|
414 |
|
|
$test_data['ldap'][$dn] = $ldap_entry;
|
415 |
|
|
variable_set('ldap_test_server__' . $this->sid, $test_data);
|
416 |
|
|
$this->refreshFakeData();
|
417 |
|
|
$result = TRUE;
|
418 |
|
|
}
|
419 |
|
|
return $result;
|
420 |
|
|
}
|
421 |
|
|
|
422 |
32700c57
|
Assos Assos
|
|
423 |
|
|
|
424 |
|
|
|
425 |
|
|
public function modifyLdapEntry($dn, $attributes = NULL, $old_attributes = FALSE) {
|
426 |
85ad3d82
|
Assos Assos
|
if (!$attributes) {
|
427 |
32700c57
|
Assos Assos
|
$attributes = [];
|
428 |
85ad3d82
|
Assos Assos
|
}
|
429 |
32700c57
|
Assos Assos
|
$test_data = variable_get('ldap_test_server__' . $this->sid, []);
|
430 |
85ad3d82
|
Assos Assos
|
if (!isset($test_data['entries'][$dn])) {
|
431 |
|
|
return FALSE;
|
432 |
|
|
}
|
433 |
|
|
$ldap_entry = $test_data['entries'][$dn];
|
434 |
|
|
|
435 |
|
|
foreach ($attributes as $key => $cur_val) {
|
436 |
|
|
if ($cur_val == '') {
|
437 |
|
|
unset($ldap_entry[$key]);
|
438 |
|
|
}
|
439 |
|
|
elseif (is_array($cur_val)) {
|
440 |
|
|
foreach ($cur_val as $mv_key => $mv_cur_val) {
|
441 |
|
|
if ($mv_cur_val == '') {
|
442 |
|
|
unset($ldap_entry[$key][$mv_key]);
|
443 |
|
|
}
|
444 |
|
|
else {
|
445 |
|
|
if (is_array($mv_cur_val)) {
|
446 |
|
|
$ldap_entry[$key][$mv_key] = $mv_cur_val;
|
447 |
|
|
}
|
448 |
|
|
else {
|
449 |
|
|
$ldap_entry[$key][$mv_key][] = $mv_cur_val;
|
450 |
|
|
}
|
451 |
|
|
}
|
452 |
|
|
}
|
453 |
|
|
unset($ldap_entry[$key]['count']);
|
454 |
|
|
$ldap_entry[$key]['count'] = count($ldap_entry[$key]);
|
455 |
|
|
}
|
456 |
|
|
else {
|
457 |
|
|
$ldap_entry[$key][0] = $cur_val;
|
458 |
|
|
$ldap_entry[$key]['count'] = count($ldap_entry[$key]);
|
459 |
|
|
}
|
460 |
|
|
}
|
461 |
|
|
|
462 |
|
|
$test_data['entries'][$dn] = $ldap_entry;
|
463 |
|
|
$test_data['ldap'][$dn] = $ldap_entry;
|
464 |
|
|
variable_set('ldap_test_server__' . $this->sid, $test_data);
|
465 |
|
|
$this->refreshFakeData();
|
466 |
|
|
return TRUE;
|
467 |
|
|
|
468 |
|
|
}
|
469 |
|
|
|
470 |
32700c57
|
Assos Assos
|
|
471 |
85ad3d82
|
Assos Assos
|
|
472 |
|
|
|
473 |
|
|
|
474 |
|
|
|
475 |
|
|
|
476 |
|
|
|
477 |
|
|
public function delete($dn) {
|
478 |
|
|
|
479 |
32700c57
|
Assos Assos
|
$test_data = variable_get('ldap_test_server__' . $this->sid, []);
|
480 |
85ad3d82
|
Assos Assos
|
$deleted = FALSE;
|
481 |
32700c57
|
Assos Assos
|
foreach (['entries', 'users', 'groups', 'ldap'] as $test_data_sub_array) {
|
482 |
85ad3d82
|
Assos Assos
|
if (isset($test_data[$test_data_sub_array][$dn])) {
|
483 |
|
|
unset($test_data[$test_data_sub_array][$dn]);
|
484 |
|
|
$deleted = TRUE;
|
485 |
|
|
}
|
486 |
|
|
}
|
487 |
|
|
if ($deleted) {
|
488 |
|
|
variable_set('ldap_test_server__' . $this->sid, $test_data);
|
489 |
|
|
$this->refreshFakeData();
|
490 |
|
|
return TRUE;
|
491 |
|
|
}
|
492 |
|
|
else {
|
493 |
|
|
return FALSE;
|
494 |
|
|
}
|
495 |
|
|
|
496 |
|
|
}
|
497 |
|
|
|
498 |
|
|
} |