Thebat3.0.1.33 не забирает адресную книгу с сервера LDAP. В строке "статус" пишет "соединение" и замирает пока не нажмешь "остановить". В качестве LDAP-сервера используется OpenLDAP-2.3.33 под FreeBSD5.4. netstat -an показывает что соединение клиента с сервером установлено(established). Другие клиенты работают наура.
в начале файла slapd.conf есть строка?allow bind_v2
>в начале файла slapd.conf есть строка?
>
>allow bind_v2
>а как реализовать такую записную книжку, можно привести документацию?
>>в начале файла slapd.conf есть строка?
>>
>>allow bind_v2
>>
>
>а как реализовать такую записную книжку, можно привести документацию?Вот так.
Создание базы.
# mcedit base.ldif
--------------------------------------------------------------------------------------
dn: dc=test, dc=ru
objectClass: dcObject
objectClass: organization
objectClass: top
dc: test
o: test
--------------------------------------------------------------------------------------
# ldapadd -x -D "cn=manager,dc=test,dc=ru" -W -f base.ldifДобавляем подразделение: например отдельная база для отдела продаж
# mcedit otdel.ldif
--------------------------------------------------------------------------------------
dn: ou=otdel, dc=test, dc=ru
ou: otdel
objectClass: top
objectClass: organizationalUnit
--------------------------------------------------------------------------------------
# ldapadd -x -D "cn=manager,dc=test,dc=ru" -W -f otdel.ldifА теперь добавляем юзера
# mcedit user.ldif
--------------------------------------------------------------------------------------
dn: uid= ivan@testru, ou=otdel, dc=test, dc=ru
cn:: 0JDQsdGD0YjQsNGF0LzQsNC90L7QstCwINCQLtCgLg==
sn:: 0JAu0KAu
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: ivan@test.ru
gn:: 0JDQsdGD0YjQsNGF0LzQsNC90L7QstCwINCQLtCgLg==
sn: none
mail: ivan@test.ru
l:: 0KLQvtC70YzRj9GC0YLQuA==
ou:otdel
---------------------------------------------------------------------------------------
испытываю стойкую неприязнь к openldap 2.3 и выше за отсутствие регистронезависимого поиска в utf-8какие у тебя настройки "мышика"?
'ldapsearch -b "ou=otdel, dc=test, dc=ru" -x -W "(mail=*)"' что показывает?
(я подразумеваю, что у тебя читает анонимусом)
>испытываю стойкую неприязнь к openldap 2.3 и выше за отсутствие регистронезависимого поиска
>в utf-8
>а как интересно это выражается? у меня openldap_2.3.30 и всё прекрасно ищется регистронезависимо
>>испытываю стойкую неприязнь к openldap 2.3 и выше за отсутствие регистронезависимого поиска
>>в utf-8
>>
>
>а как интересно это выражается? у меня openldap_2.3.30 и всё прекрасно ищется
>регистронезависимо
фильтр "(sn=пупкин)" не находит атрибут 'sn: Пупкин'
пробовал Net::LDAP, php_ldap, ldapsearch, jxplorer,java ldap browser, латиницу ищет прекрасно, utf-8 не хочет категорически. Чётровы латиняне :(...путём скачки и перебора версий, я определил что такое поведение появилось после версии 2.2.30, то есть во всей ветке 2.3.х
гугль говорит, что такая поблема была до версии 2.0
кто-то на opennet.ru в августе с восторженными визгами писал что наконец-то реализовали server side search и советовал копать в индексы, версию бдбя ничего вразумительного не нашел и откатился на последний 2.2.х, на нём и живу пока.
не буду же я переписывать свою адресную книгу на фильтры типа "(|(sn=Пупкин)(sn=пупкин))", имо это всё равно что в гугле указывать регистр при запросе. :-/
Тундербирд форевар! :)
Пашет супер!
>>>испытываю стойкую неприязнь к openldap 2.3 и выше за отсутствие регистронезависимого поиска
>>>в utf-8
>>>
>>
>>а как интересно это выражается? у меня openldap_2.3.30 и всё прекрасно ищется
>>регистронезависимо
>
>
>фильтр "(sn=пупкин)" не находит атрибут 'sn: Пупкин'
>пробовал Net::LDAP, php_ldap, ldapsearch, jxplorer,java ldap browser, латиницу ищет прекрасно, utf-8 не
>хочет категорически. Чётровы латиняне :(...
>
>путём скачки и перебора версий, я определил что такое поведение появилось после
>версии 2.2.30, то есть во всей ветке 2.3.х
>гугль говорит, что такая поблема была до версии 2.0гугль цитирует похожих на вас :)
Старая тема, но просматривая закладки вернулся на неё:
Уж не знаю что и как вы делали, но повторюсь, регистронезависимый поиск в _любой_ кодировке работает в openldap_2.3.x
чтобы не быть голословным вот вам пример:
$ slapd -V
@(#) $OpenLDAP: slapd 2.3.30 (Dec 12 2006 22:14:39) $быстренько катаем скриптик
#!/usr/bin/perl -w
use strict;
use Net::LDAP;
use Text::Iconv;
use MIME::Base64;
my $satrr=$ARGV[0];
my $converter = Text::Iconv->new('KOI8-R', 'UTF-8');
my $converted = $converter->convert($satrr);
my $entry;my $mesg;
my $ctr = Text::Iconv->new('UTF-8','KOI8-R');
my $ldap = Net::LDAP->new( '10.16.0.2' );
my $attrs = [ 'sn','uid' ];
$mesg = $ldap->bind( 'bla-bla');
$mesg = $ldap->search(base => 'bla2-bla2', scope => 'sub',
filter => "(&($converted)(objectclass=inetOrgPerson))", attrs => $attrs );
my $href = $mesg->as_struct; my @arrayOfDNs = keys %$href;
foreach ( @arrayOfDNs ) {
my $attrName; my $valref = $$href{$_}; my @arrayOfAttrs = sort keys %$valref;
foreach $attrName (@arrayOfAttrs) {
next if ( $attrName =~ /;binary$/ );
my $attrVal = @$valref{$attrName}; my $list=join(" ",@$attrVal);
print $ctr->convert($list)," ";} print "\n";}
$mesg = $ldap->unbind;заранее извиняюсь за тупой код, делал второпях как пример
ну и проверяем поиск:$ ./test.pl sn=ряб*
Рябинин ryabinin.vl
Рябцева ryabceva.uk
$ ./test.pl sn=Ряб*
Рябинин ryabinin.vl
Рябцева ryabceva.ukКак видите, всё работает. Кстати весь софт что мне попадался, преспокойно работает с регистронезависимым поиском в openldap_2.3
>кто-то на opennet.ru в августе с восторженными визгами писал что наконец-то реализовали
> server side search и советовал копать в индексы, версию бдбваш тон нопоминает мне студента :) ну я радовался, но копать индексы и версии баз, упаси боже, нет советовал. всё намного тривиальнее, sss делается без вас по элементарному запросу :)
>я ничего вразумительного не нашел и откатился на последний 2.2.х, на нём
>и живу пока.
>не буду же я переписывать свою адресную книгу на фильтры типа "(|(sn=Пупкин)(sn=пупкин))",
>имо это всё равно что в гугле указывать регистр при запросе.
>:-/
>>гугль говорит, что такая поблема была до версии 2.0
ну неанглоязычный народ в период с 1999 по 2001 год действительно плакался на такую проблему, что гугль и зафиксировал
>
>гугль цитирует похожих на вас :)
Если бы всё работало просто после инсталляции, гугль меня не цитировал бы. Я стараюсь сам
решать свои вопросы и не гадить в ноосферу. Кстати, сколько гугль цитирует моих криков о помощи на opennet?
>
>Старая тема, но просматривая закладки вернулся на неё:
>Уж не знаю что и как вы делали, но повторюсь, регистронезависимый поиск
>в _любой_ кодировке работает в openldap_2.3.x
>чтобы не быть голословным вот вам пример:
>$ slapd -V
>@(#) $OpenLDAP: slapd 2.3.30 (Dec 12 2006 22:14:39) $
>
>быстренько катаем скриптик
>#!/usr/bin/perl -w
>use strict;
>use Net::LDAP;
>use Text::Iconv;
>use MIME::Base64;
>
>my $satrr=$ARGV[0];
>my $converter = Text::Iconv->new('KOI8-R', 'UTF-8');
>my $converted = $converter->convert($satrr);
>my $entry;my $mesg;
>my $ctr = Text::Iconv->new('UTF-8','KOI8-R');
>my $ldap = Net::LDAP->new( '10.16.0.2' );
>my $attrs = [ 'sn','uid' ];
>$mesg = $ldap->bind( 'bla-bla');
>$mesg = $ldap->search(base => 'bla2-bla2', scope => 'sub',
> filter => "(&($converted)(objectclass=inetOrgPerson))", attrs => $attrs );
>my $href = $mesg->as_struct; my @arrayOfDNs = keys %$href;
> foreach ( @arrayOfDNs ) {
> my $attrName; my $valref = $$href{$_}; my @arrayOfAttrs
>= sort keys %$valref;
> foreach $attrName (@arrayOfAttrs) {
> next if ( $attrName
>=~ /;binary$/ );
> my $attrVal = @$valref{$attrName};
>my $list=join(" ",@$attrVal);
> print $ctr->convert($list)," ";} print "\n";}
>$mesg = $ldap->unbind;
>
>заранее извиняюсь за тупой код, делал второпях как пример
неважно, лишь бы perl и я поняли :)
>ну и проверяем поиск:
>
>$ ./test.pl sn=ряб*
>Рябинин ryabinin.vl
>Рябцева ryabceva.uk
>$ ./test.pl sn=Ряб*
>Рябинин ryabinin.vl
>Рябцева ryabceva.uk>
>Как видите, всё работает. Кстати весь софт что мне попадался, преспокойно работает
>с регистронезависимым поиском в openldap_2.3
так что ж мне такой софт не попадался, а?
Может там типа
if ($user=/^DogEater$/) {
/pattern/i;
}
else {
/pattern/;
}
строчки есть?
Я пробовал на разных версиях линукса, на разных инсталляциях. У меня регистронезависимый поиск на 2.3.x не получается, проверить не могу по причине отсутствия с 11.2006 версий openldap 2.3.x в работе.
>
>>кто-то на opennet.ru в августе с восторженными визгами писал что наконец-то реализовали
извиняй, сарказм зашкалил ;-)
мне надо было в топике автора посмотреть, перед ответом...>ваш тон нопоминает мне студента :) ну я радовался, но копать индексы
видимо это означает, что вы лучше знаете современое студенчество, ибо мне это знание недоступно уже лет 12
а тон мой - это крик души смешаный с самоиронией и неразделением (зацени новояз) восторгов другого человека по данному вопросу>и версии баз, упаси боже, нет советовал. всё намного тривиальнее, sss
>делается без вас по элементарному запросу :)
хотелось бы...
Himmelgerrgott! Да я бы вообще не писал бы, если б всё само работало. И в консоли ничего кроме ./configure && make && su -c "make install" не писал бы, так ведь не дают мне такой возможности :(>
>>я ничего вразумительного не нашел и откатился на последний 2.2.х, на нём
>>и живу пока.
>>не буду же я переписывать свою адресную книгу на фильтры типа "(|(sn=Пупкин)(sn=пупкин))",
>>имо это всё равно что в гугле указывать регистр при запросе.
В конце получился вот такой смайл: >:-/, смотрю на него, пытаюсь интерпретировать ;-)