нужно написать клиент Win LDAP для просмотра и аутентификации юзеров.
Проблемы начинаются когда пытаешься получить список всех юзеров с помощью
ldap_search_ext, идет отлуп на сервере на превышение количества результатов.
Ок, пробую использовать контрол для получения постранично, но отваливается
опять на получении результата говоря Protocol Error.
Собсно вопрос: как? Примеров в МСДН именно по этому вопросу я не нашел, там только
мутное объяснение последовательности вызовов функций.
Хорошо было бы конкретные примеры на С\С++.
Здравствуйте James, Вы писали:
J>Привет всем,
J>нужно написать клиент Win LDAP для просмотра и аутентификации юзеров.
Смотри код ниже — эта штука вываливает все записи с сервера у которых
CommonName, surname или givenName начинаются со строки szLNameStart.
Код построен на синхронных функциях — т.к. асинхронные функции мастдай и извращение.
Захочется асинхронщины — запусти этот код в новой нитке или переделай под асинхронные фуннкции.
ЗЫ. На всякий случай, если ты еще не наступал на эти грабли....
Библиотека wldap32.lib из Visual Studio — ПЛОХАЯ. Хорошая есть в Platform SDK.
Здравствуйте TepMuHyc, Вы писали:
TMH>Смотри код ниже — эта штука вываливает все записи с сервера у которых TMH>CommonName, surname или givenName начинаются со строки szLNameStart.
Спасибо большое за код. Кое-что из него я почерпнул. Но...
Результаты для конекретного юзера или, суть, по фильтру я знаю как получать.
Проблема в другом, и в сообщении я об этом писал, на сервере стоит ограничение на
100 результатов поиска и поэтому вопрос скорее заключается в том, можно ли это
как-то обойти.
Я подумал, что постраничное получение результатов (есть только в LDAP 3) может помочь
решить проблему, но нигде не нашел примера, а у самого что-то не получается.
Далее, я подумал, что и постраничное получение результатов тоже не поможет, потому что
ИМХО ограничение касается и его.
Поэтому вопрос пожалуй таков: правильно ли я думаю? ;)
Можно ли обойти это оганичение, если можно то как, и, если есть возможность, то пример
на С\С++ постраничного получения результатов.
Здравствуйте James, Вы писали:
J>Здравствуйте TepMuHyc, Вы писали:
TMH>>Смотри код ниже — эта штука вываливает все записи с сервера у которых TMH>>CommonName, surname или givenName начинаются со строки szLNameStart.
J>Спасибо большое за код. Кое-что из него я почерпнул. Но...
На здоровье.
J>Далее, я подумал, что и постраничное получение результатов тоже не поможет, потому что J>ИМХО ограничение касается и его.
ПРавильно думаешь. С точки зрения сервера — все это одни и те же яйца — что потоком,
что по страницам — сервер будет ограничивать.
J>Поэтому вопрос пожалуй таков: правильно ли я думаю? J>Можно ли обойти это оганичение, если можно то как, и, если есть возможность, то пример
Я бы посоветовал тебе такое: давать последовательно запросы типа "(cn=a*)"
"(cn=b*)" "(cn=c*)" и так далее — в итоге ты выгребешь все маленькой ложкой
И еще такой совет: сходи на http://www.openldap.org/ — там вместе с исходниками ldap-сервера
лежат и клиентские прибамбахи — в частности либа libldap (с которой мелкософтовцы и содрали
свою либу winldap) доки там тоже мало (только man-pages), но возможно анализ кода лдаповских
утилит тебе поможет
____________________
God obviously didn't debug, hasn't done any maintenance, and no documentation can be found. Truly amateur work.
Здравствуйте TepMuHyc, Вы писали:
J>>Поэтому вопрос пожалуй таков: правильно ли я думаю? ;) J>>Можно ли обойти это оганичение, если можно то как, и, если есть возможность, то пример TMH>Я бы посоветовал тебе такое: давать последовательно запросы типа "(cn=a*)" TMH>"(cn=b*)" "(cn=c*)" и так далее — в итоге ты выгребешь все маленькой ложкой :-)
Таки программеры иногда одинаково мыслят, признаюсь было такое искушение. Но прога пишется для больших
корпораций (вернее и для них тоже), поэтому способ ессно не пойдет в общем случае.
TMH>И еще такой совет: сходи на http://www.openldap.org/ — там вместе с исходниками ldap-сервера TMH>лежат и клиентские прибамбахи — в частности либа libldap (с которой мелкософтовцы и содрали TMH>свою либу winldap) доки там тоже мало (только man-pages), но возможно анализ кода лдаповских TMH>утилит тебе поможет
Спасибо за ссылку. Был там, но на исходники не обратил внимания, обязательно посмотрю.
Здравствуйте James, Вы писали:
J>Здравствуйте TepMuHyc, Вы писали:
J>Поэтому вопрос пожалуй таков: правильно ли я думаю? J>Можно ли обойти это оганичение, если можно то как, и, если есть возможность, то пример J>на С\С++ постраничного получения результатов.
J>best regards
По-моему, с помощью страничного поиска можно обойти ограничение сервера на количество
возвращаемых записей.
Вот код, который получает всех пользователей из LDAP каталога страницами по 10 штук.
Выделенные строки надо заменить конкретными значениями
Здравствуйте Ivan, Вы писали:
I>По-моему, с помощью страничного поиска можно обойти ограничение сервера на количество I>возвращаемых записей. I>Вот код, который получает всех пользователей из LDAP каталога страницами по 10 штук. I>Выделенные строки надо заменить конкретными значениями