Автор Тема: (objectClass=person)(!(objectClass=computer))  (Прочитано 18955 раз)

romt

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
(objectClass=person)(!(objectClass=computer))
« : 23 Сентябрь 2013, 07:42:18 »
Доброго времени суток.
Занялся OpenLDAP, что бы организовать внешнюю телефонную книгу для IP-телефонии от Panasonic.
Создал LDAP. Занёс тестовых пользователей (шаблон Person).
Если их искать просто по имени, например так: (&(cn=*частьимени*)(objectClass=person)) - всё находится.
А вот так: (&(cn=*частьимени*)(&(objectClass=person)(!(objectClass=computer)))) - не находится (0 результатов)

Клиент IP-телефонии ищет именно вторым вариантом. Изменить нельзя. Т.е. поиск из него не работает. А хочется.

В схеме данных objectClass=computer отсутствует. Поэтому не ищет?
Я не планирую держать в каталоге компьютеры.

Оперативный поиск по статьям результатов не дал. Если есть - ткните в нужное руководство.

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: (objectClass=person)(!(objectClass=computer))
« Ответ #1 : 23 Сентябрь 2013, 14:04:36 »
Здравствуйте!
В схеме данных objectClass=computer отсутствует. Поэтому не ищет?
Да, именно поэтому. Фильтр явно заточен под AD. Если изменить фильтр не удастся (хотя странно, какая марка у этого устройства?), придётся расширять схему данных каталога.

Егор

romt

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: (objectClass=person)(!(objectClass=computer))
« Ответ #2 : 24 Сентябрь 2013, 11:15:48 »
Изменить фильтр нельзя. Это приложение компьютерной телефонии для IP-АТС Panasonic. Называется Communication Assistant.
Вопрос по введению класса:
Как я понимаю, мне нужно ввести objectclas=computer.
В стандартных схемах OpenLDAP (core.schema, cosine.schema, inetorgperson.schema и т.д.) я такого класса не нашел.
Поверхностным поиском в гугле тоже не нашел (всё Active Directory попадается).
Я могу в принципе определить свой собственный класс. Но если я правильно понял http://pro-ldap.ru/tr/zytrax/ch3/index.html#objectclass-def , я не могу взять OID класса с потолка, я должен взять класс единого реестра или получить его там: http://www.alvestrand.no/objectid/top.html
Класс computer по поиску там не находится, есть класс host, есть server.
Что делать? Впихивать класс computer с потолка?
Вообще слабо верится, что в OpenLDAP никто ещё такой класс не изобретал.

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: (objectClass=person)(!(objectClass=computer))
« Ответ #3 : 25 Сентябрь 2013, 05:22:54 »
Здравствуйте! Курт Зеленга когда-то пытался вести AD-шные схемы (их можно найти в мёртвых схемах OpenLDAP), но потом забросил с пометкой "кому надо, возьмёт в MSAD". Если Вы не планируете вести в каталоге компьютеры, можно просто сделать класс-заглушку с Microsoft-овским OID, что-то типа:
objectclass ( 1.2.840.113556.1.3.30
        NAME 'computer'
        SUP top
        STRUCTURAL
        MUST cn )

Егор