Пытаюсь программно получить все адреса по ldap из Kerio. Вот этот код вернул мне только 200 контактов из некой Public Folders:
<?php
error_reporting(E_ERROR);
$info = loginToLDAPInfo549post();
var_dump($info);
function loginToLDAPInfo549post($login="")
{
$ds = ldap_connect("myserver", 389);
if ($ds === false)
{
echo 'Возможно, используется некорректный синтаксис ldap_connect<br />';
return;
}
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
$ldapbind = ldap_bind($ds, 'login', 'pass');
if ($ldapbind === false)
{
echo "LDAP bind failed...<br />";
return;
}
$dn='';
$pageSize = 1000;
$cookie = '';
$info = array();
$attributes = array("displayname", "samaccountname", "userprincipalname", "mail");
//$attributes = array("mail");
do {
ldap_control_paged_result($ds, $pageSize, true, $cookie);
$sr = ldap_search(
$ds,
$dn,
'(|(objectClass=*))',
$attributes,
0, // not attrsonly
$pageSize //sizelimit
);
if ($sr === false)
{
//echo ldap_error($ds);
ldap_unbind($ds);
return false;
}
$rawinfo = ldap_get_entries($ds, $sr);
$info = array_merge($info, $rawinfo);
ldap_control_paged_result_response($ds, $sr, $cookie);
}while($cookie !== null && $cookie != '');
ldap_unbind($ds);
return $info;
}
?>
Но у меня в Outlook прикреплена адресная книга, в которой явно больше этих 200 адресов, но непонятно, что за настройки используются при подключении. Логин и пароль в коде такой же, как и в аутлуке.