ejabberd - Comments for "mod_shared_roster_ldap логика работы и возможности" https://www.ejabberd.im/node/4881 en Вот выдержка из мего конфига https://www.ejabberd.im/node/4881#comment-67061 <p>Вот выдержка из мего конфига с учетом Ваших рекомендаций:</p> <pre> mod_shared_roster_ldap: ldap_auth_check: off ldap_rfilter: "(&amp;(objectClass=group)(objectClass=posixAccount))" ldap_groupattr: "distinguishedName" ldap_group_is_dn: true ldap_gfilter: "*" # ldap_memberattr: "member" ldap_groupdesc: "name" ldap_member_selection_mode: "group_children" ldap_ufilter: "(&amp;(objectClass=user))" ldap_useruid: "sAMAccountName" ldap_userdesc: "displayName" </pre><p> Судя по verbose-логу - список групп он успешно получает из LDAP, т.е. rfilter срабатывает нормально. </p> <p>Вторым этапом он делает запрос для поиска членов группы, в данном случае не совсем понятно зачем Вы предлагаете ldap_memberattr='memeber' заменить на ldap_member_selection_mode: "group_children" - ведь как раз в поле 'memeber' у группы находится список CN пользователей в формате "CN=Фамилия Имя,CN=Users,DC=example,DC=com", как же ejabberd поймёт с какого поля брать список пользователей?</p> <p>Если я раскомменчиваю строку <code>ldap_memberattr: &quot;member&quot;</code> то ejabberd вроде как получает список пользователей группы, но он видит что там какая-то фигня вместо jabber id и игнорит полученные записи, даже если я ставлю <code>ldap_auth_check: off</code>, т.к. по логам дальше не видно попыток выполнить <code>ldap_ufilter</code>.</p> <p>Подскажите пожалуйста как быть в такой ситуации? Может быть к версии 16.08 что-то поменялось уже? В комментариях к багу <noindex><a href="https://support.process-one.net/browse/EJAB-1480" title="https://support.process-one.net/browse/EJAB-1480" rel="nofollow" >https://support.process-one.net/browse/EJAB-1480</a></noindex> предлагают использовать также <code>ldap_member_selection_mode: &quot;memberattr_dn&quot;</code> но с ним тоже не работает.</p> Mon, 19 Sep 2016 20:21:42 +0000 Murz comment 67061 at https://www.ejabberd.im Благодарю за такое подробное https://www.ejabberd.im/node/4881#comment-67060 <p>Благодарю за такое подробное описание, наконец-то прояснил для себя как это работает! А можете привести пример рабочего конфига для AD-совместимого LDAP-сервера? Я уже какие только варианты не пробовал - никак не могу добиться подгрузки списка юзеров, сгруппированного по группам на ejabberd 16.08. Список пользователей без групп получаю нормально, а вот с группами - ну прям никак.</p> <p>Я использую Zentyal 4.1 Server который эмулирует работу AD на базе Samba LDAP.<br /> Пользователи там почему-то имеют CN вида "CN=Фамилия Имя,CN=Users,DC=example,DC=com" (да-да, прям вот так с пробелом и по-русски) и в группах тоже именно так указываются в поле member.</p> <p>Поэтому на этапе получения списка пользователей для группы я из этой конструкции не могу получить нормальный jabber id. Помогите пожалуйста подобрать рабочие параметры для получения юзеров группы!</p> Mon, 19 Sep 2016 19:56:15 +0000 Murz comment 67060 at https://www.ejabberd.im Абсолютно верно. Но в связи с https://www.ejabberd.im/node/4881#comment-57910 <p>Абсолютно верно.<br /> Но в связи с тем, что web уже вшит mod_shared_roster, это войдет в противоречие с изложенной выше концепцией.<br /> IMHO, для реализации необходимо вынести в отдельный модуль часть mod_shared_rosterа, которая только отдает список из локального хранилища пользователю.<br /> Хотя может быть имеет смысл оставить возможность управления через web правилами отображения?</p> <p>Плюс реализовать хелпер, который будет скрывать доступ к локальному хранилищу (организовывать его через API).<br /> В хелпер можно также добавить вызовы для процедур пре/постобработки(это позволит осуществить действия с информацией в локальном хранилище перед и после загрузки,например вызов хранимок).</p> <p>Дальше для каждого источника данных реализуется специфичный модуль (коннектор), который через вызовы хелпера заполняет структуры в локальном хранилище (в том числе и через web). Для каждого источника данных запускается свой экземпляр коннектора. Такая архитектура (если я не ошибаюсь :)) позволяет решить проблему заполнения ростера от LDAP-серверов в разных каталогах (и вообще от разнородных источников).</p> <p>Вы говорили, что в третьей версии были сделаны шаги по выделению в слоя подключаемых хранилищ.<br /> Если не затруднит, концептуально в чем это заключается?</p> <p>В плане реализации, признаюсь честно, проблемы три<br /> - очень плотный рабочий график<br /> - отсутствие опыта разработки на erlang и парадигме erlang<br /> - просто страшно :D, т.к. в проекте есть ядро разработчиков и roadmap, и влезать со своим самоваром...</p> Fri, 07 Oct 2011 13:18:45 +0000 freebeer comment 57910 at https://www.ejabberd.im Если подытожить, Вы https://www.ejabberd.im/node/4881#comment-57906 <p>Если подытожить, Вы предлагаете сделать альтернативный интерфейс управления (наполнения) mod_shared_roster (в дополнение к единственному на данный момент веб-интерфейсу).</p> <p>В принципе, почему бы и нет.<br /> Для этого потребуется отобразить схему LDAP на схему БД (ну, конечно, только её малой части :)).<br /> Можете попробовать, это было бы интересно.</p> Tue, 04 Oct 2011 08:53:17 +0000 mikekaganski comment 57906 at https://www.ejabberd.im Благодарю за подробный https://www.ejabberd.im/node/4881#comment-57902 <p>Благодарю за подробный ответ!</p> <p>С архитектурой действительно вглубь не лез.<br /> Однако задача mod_shared_roster и mod_shared_roster_ldap одна - сформировать список дополнительных контактов по некоторым правилам. Оба модуля для этого используют некоторый механизм доступа к внешним данным. Считаю, что разумно попытаться максимально унифицировать используемые механизмы.</p> <p>Идея, которую пытался изложить, сводится к следующему:<br /> - Вызовы LDAP дорогие. Язык построения запросов достаточно специфичен.<br /> Используемые поля записей в LDAP зависят от реализации.<br /> - Вызовы к локальной базе - относительно дешевые. Язык запросов более гибок. Структура может быть унифицирована.<br /> - Изменение параметров пользователей в корпоративных системах происходят нечасто.<br /> При такой стоимости запросов проще один раз на достаточно большом промежутке времени выгрузить данные в промежуточное хранилище (локальную базу) и по мере необходимости дергать ее (локальную базу).</p> <p>Т.е. предлагается создать промежуточный унифицированный информационный слой, в который информация может помещаться при помощи разнообразных коннекторов, а извлекаться для отображения только одним.</p> <p>Таким образом, в предлагаемом решении LDAP отображается на "обычную" базу и далее, используя Ваши слова:<br /> "они обычно имеют быстрые каналы связи с ejabberd, и их собственные методы кэширования гораздо лучше справятся с задачей оптимизации времени доступа."</p> <p>- при этом возникает возможность влиять на изменение информации в момент загрузки ее в промежуточное хранилище (это делает специальный коннектор) и в момент формирования списка для пользователя (а это делает коннектор общего назначения). Если при этом прикрутить скриптовую логику пре/пост обработки, то получиться веселый механизм...:) Причем скриптовая логика постобработки в хранилищах на основе SQL серверов практически уже реализована,а стоимость обработки в локальной базе будет приемлемой даже при достаточно сложных алгоритмах.</p> <p>- по поводу тезиса<br /> "а это может случиться очень нескоро, так что, вероятнее всего, кэш вообще не будет использован."</p> <p>мы с Вами, видимо, работаем на значительно разных по качеству линиях связи. :)</p> <p>- по поводу тезиса</p> <p>"А вот насчёт задачи отображения данных - это Вы, извините, путаете mod_shared_roster_ldap и программу-клиент :)"</p> <p>не путаю - информация в сформированном списке задает параметры его отображения: если у нас в клетке мышь, то показать мы можем только мышь. Ракурсы, конечно, могут быть разными ... :)</p> <p>На необходимости изменений не настаиваю. Модуль в существующем варианте весьма функционален и значительно облегчает нам жизнь, за что Вам большое спасибо!!!<br /> Но всегда хочется чего-то еще...:D</p> Tue, 04 Oct 2011 04:01:17 +0000 freebeer comment 57902 at https://www.ejabberd.im Таким образом, в предлагаемом https://www.ejabberd.im/node/4881#comment-57899 <p>Таким образом, в предлагаемом решении LDAP отображается на "обычную" базу и далее, используя Ваши слова:</p> <div class="codeblock"><code>они обычно имеют быстрые каналы связи с ejabberd, и их собственные методы кэширования гораздо лучше справятся с задачей оптимизации времени доступа.</code></div> <p>- при этом возникает возможность влиять на изменение информации в момент загрузки ее в промежуточное хранилище (это делает специальный коннектор) и в момент формирования списка для пользователя (а это делает коннектор общего назначения). Если при этом прикрутить скриптовую логику пре/пост обработки, то получиться веселый механизм...:)</p> <p>- по поводу тезиса</p> <div class="codeblock"><code>а это может случиться очень нескоро, так что, вероятнее всего, кэш вообще не будет использован.</code></div> <p> мы видимо работаем на значительно разных по качеству линиях связи. :)</p> <p>- по поводу тезиса</p> <div class="codeblock"><code>А вот насчёт задачи отображения данных - это Вы, извините, путаете mod_shared_roster_ldap и программу-клиент :)</code></div> <p>не путаю - информация в сформированном списке задает параметры его отображения: если у нас в клетке мышь, то показать мы можем только мышь. Ракурсы, конечно, могут быть разными ... :)</p> <p>На необходимости изменений не настаиваю. Модуль в существующем варианте весьма функционален и значительно облегчает нам жизнь, за что Вам большое спасибо!!!<br /> Но всегда хочется чего-то еще...:D</p> Mon, 03 Oct 2011 17:01:19 +0000 freebeer comment 57899 at https://www.ejabberd.im Благодарю за подробный https://www.ejabberd.im/node/4881#comment-57891 <p>Благодарю за подробный ответ!</p> <p>С архитектурой действительно вглубь не лез.</p> <p>Идея, которую пытался изложить, сводится к следующему:<br /> - Вызовы LDAP дорогие. Язык построения запросов достаточно специфичен.<br /> Используемые поля записей в LDAP зависят от реализации.<br /> - Вызовы к локальной базе - относительно дешевые. Язык запросов более гибок. Структура может быть унифицирована.<br /> - Изменение параметров пользователей в корпоративных системах происходят нечасто.<br /> При такой стоимости запросов проще один раз выгрузить данные в промежуточное хранилище<br /> (локальную базу) и по мере необходимости дергать ее (локальную базу). Таким образом LDAP отображается на "обычную" базу и далее, используя Ваши слова:</p> <div class="codeblock"><code>они обычно имеют быстрые каналы связи с ejabberd, и их собственные методы кэширования гораздо лучше справятся с задачей оптимизации времени доступа. </code></div> <p>- при этом возникает возможность влиять на изменение информации в момент загрузки ее в промежуточное хранилище (это делает специальный коннектор) и в момент формирования списка для пользователя (а это делает коннектор общего назначения). Если при этом прикрутить скриптовую логику пре/пост обработки, то получиться веселый механизм...:) </p> <p>- по поводу тезиса</p> <div class="codeblock"><code>а это может случиться очень нескоро, так что, вероятнее всего, кэш вообще не будет использован.</code></div> <p> мы видимо работаем на значительно разных по качеству линиях связи. :)</p> <p>- по поводу тезиса</p> <div class="codeblock"><code>А вот насчёт задачи отображения данных - это Вы, извините, путаете mod_shared_roster_ldap и программу-клиент :)</code></div> <p>не путаю - информация в сформированном списке задает параметры его отображения: если у нас в клетке мышь, то показать мы можем только мышь. Ракурсы, конечно, могут быть разными ... :)</p> <p>На необходимости изменений не настаиваю. Модуль в существующем варианте весьма функционален и значительно облегчает нам жизнь, за что Вам большое спасибо!!!<br /> Но всегда хочется чего-то еще...:D</p> Mon, 03 Oct 2011 15:00:29 +0000 freebeer comment 57891 at https://www.ejabberd.im freebeer wrote: Извиняюсь, https://www.ejabberd.im/node/4881#comment-57855 <div class="quote-msg"> <div class="quote-author"><em>freebeer</em> wrote:</div> <p>Извиняюсь, что вмешиваюсь</p></div> <p>Добро пожаловать :)</p> <div class="quote-msg"> <div class="quote-author">Quote:</div> <p>но мне вообще не нравится концепция построения модуля.<br /> В нем одновременно решаются задачи получения, форматирования и отображения данных.</p></div> <p>Насчёт форматирования - посмотрите <noindex><a href="https://support.process-one.net/browse/EJAB-1480?focusedCommentId=50230&amp;page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_50230" rel="nofollow" >мой вопрос</a></noindex>, заданный 13 августа на эту тему. Насчёт остальных задач - напишу ниже.</p> <div class="quote-msg"> <div class="quote-author">Quote:</div> <p>Также частично дублируется функционал уже существующего модуля (mod_shared_roster)</p></div> <p>Какой?</p> <div class="quote-msg"> <div class="quote-author">Quote:</div> <p>Считаю, что модуль должен быть разрезан на две части:<br /> 1 - коннектор для загрузки в базу информации о пользователях<br /> 2 - ростер, отвечающий только за отображение информации из заранее сформированного хранилища (т.е. практически унификация существующего shared rostera).</p> <p>Функционал по загрузке данных должен быть выброшен в коннектор, который отвечает за частоту и состав обновления из указанного источника (необязательно LDAP)<br /> В коннекторе предусмотреть возможность постобработки выбранных данных.<br /> Т.е. предлагается такая схема работы<br /> - коннектор вытягивает в базу данные, ограниченные простейшими правилами (недостаток - объем трафика, компенсируется кэшированием в базе сервера).<br /> - коннектор на этапе постобработки форматирует данные при помощи механизмов работы с БД сервера (этим снижаются накладные расходы и повышается гибкость).<br /> - коннектор удаляет записи, у которых истек срок существования<br /> - коннектор оповещает модуль ростера, что данные были обновлены.<br /> - коннектор переходит в режим ожидания </p> <p>Считаю что такая схема организации ростера позволит<br /> - упростить разработку<br /> - создать универсальный механизм получения данных для ростера<br /> - сделать представление данных в ростере более гибким</p></div> <p>Porridge <a href="http://www.ejabberd.im/mod_shared_roster_ldap#comment-56658">уже пытался ответить Вам</a>. Но его ответ, по-видимому, Вас не убедил.<br /> Попробую я :)</p> <p>Вы неправильно представляете себе архитектуру этого модуля (а также mod_shared_roster и в целом ejabberd). Вообще-то как раз предлагаемая Вами архитектура и реализована.</p> <p>Модуль, обозначенный Вами как "ростер" (пункт 2) - это mod_roster, который занимется (унифицированным) сбором ростера из разных источников, чтобы потом передать его клиенту.</p> <p>Модуль-коннектор - это и есть один из модулей mod_shared_roster(_ldap). Этот модуль вызывается модулем mod_roster в момент, когда идёт формирование ростера пользователя, и mod_roster уже подготовил персональный список для данного пользователя. Задачей mod_shared_roster(_ldap) является соединение с "базой" для получения административно заданного дополнительного списка для <strong>данного</strong> (обратите на это внимание) пользователя. Причём разработчики ejabberd уже проделали большую работу по унификации получения данных - насколько это было возможно: если Вы посмотрите на структуру модулей версии 3, там Вы не найдёте mod_roster_odbc или mod_vcard_odbc: те хранилища, которые были концептуально сходны, были вынесены в слой подключаемых хранилищ. LDAP принципиально отличается от остальных back-ends, поддерживаемых ejabberd: здесь схема данных не определяется ejabberd; эта база только для чтения; эта база обычно занята более важными делами, чем обслуживание системы обмена мгновенными сообщениями; её использование практически гарантированно говорит о корпоративном использовании ejabberd. Поэтому попытка сключить её в общую схему привела бы к ненужному усложнению кода, призванного эффективно работать с "обычными" базами (Mnesia/ODBC), при этом не давая никакой выгоды.</p> <p>Попытка требовать от любого модуля, наполняющего ростер, передавать всю необходимую информацию в модуль ростера привела бы фактически к необходимости хранить для каждого пользователя ejabberd свой дополнительный "общий ростер". Причина здесь в том, что процедура запроса общего ростера адресная - т.е. производится для каждого пользователя индивидуально. Технически возможно реализовать такую схему "общих" ростеров, чтобы у каждого он был свой. Так что, прикажете для (возможно) сотен тысяч пользователей хранить дополнительно в кэше списки из (возможно) сотен контактов?</p> <p>При этом для "обычных" баз это не приведёт ни к каким преимуществам: они обычно имеют быстрые каналы связи с ejabberd, и их собственные методы кэширования гораздо лучше справятся с задачей оптимизации времени доступа. Для таких систем (а их - большинство) предложенная Вами схема с дополнительным уровнем кэширования лишь увеличит требования к памяти/CPU и ухудшит их работу.</p> <p>Обратите внимание, что вообще кэширование с таймаутом в такой системе бессмысленно ещё и по другой причине: сохранив ростер для одного пользователя, она не воспользуется им до следующего запроса ростера этим же пользователем - а это может случиться очень нескоро, так что, вероятнее всего, кэш вообще не будет использован.</p> <p>Теперь про коннектор LDAP. Он как раз и реализует Ваши идеи. Он вообще работает по принципу, отличному от mod_shared_roster. Заявленное Вами "дублирование" функционала mod_shared_roster - вообще нонсенс: если Вы посмотрите исходный код этих модулей, Вы не найдёте ни одной функции, которая была бы идентичной для обоих модулей. Они все крайне специфичны и оптимизированы для выполняемых ими (разных для каждого модуля!) задач.</p> <p>Кэширование в этом модуле полезно и эффективно: во-первых, здесь наполнение общего ростера гораздо более унифицировано для всех пользователей, чем в обычном mod_shared_roster, а во-вторых, нужно учитывать, что серьёзные админы доменов обычно не сильно радуются дополнительной нагрузке на свои контроллеры со стороны говорилок (естественно, имеются ввиду серьёзные и часто распределённые, в т.ч. географически, организации).<br /> И в этой связи - замечание относительно "задач форматирования и отображения данных". Задача форматирования данных <em>могла бы</em> решаться аналогично тому, как это сделано в mod_shared_roster - т.е. с использованием специально предназначенного для этих целей mod_vcard(_ldap) (и да, это можно было бы тогда унифицировать) (см. мой вопрос, ссылку на который я дал выше). Но тогда, как я там написал, это приведёт к многократно растущей нагрузке на базу (что допустимо для "обычных" баз, но в случае LDAP сведёт на нет любые механизмы оптимизации, в т.ч. предлагаемые Вами). Так что можете рассматривать эту конкретную особенность данного модуля специфической оптимизацией, реализованной с использованием знания особенностей механизма работы с БД сервера.<br /> А вот насчёт задачи отображения данных - это Вы, извините, путаете mod_shared_roster_ldap и программу-клиент :)</p> <p>Так что я совершенно не согласен с тем, что есть необходимость в предлагаемых Вами изменениях. Повторюсь:<br /> - mod_roster при формировании ростера пользователя унифицированно просит модули-коннекторы добавить в полусформированный ростер дополнительные записи;<br /> - коннекторы индивидуально для каждого пользователя формируют дополнительный список;<br /> - существует два вида коннекторов: "общего назначения", являющийся "универсальным механизмом получения данных для ростера", работающий по своей схеме и имеющий свои настройки, и специальный коннектор, заточенный под LDAP (очень сильно отличающийся по логике).</p> <p>С учётом, что в работе этих коннекторов вообще ничего общего, не знаю, как можно было бы "упростить разработку" или "сделать представление данных в ростере более гибким".</p> Wed, 21 Sep 2011 10:53:18 +0000 mikekaganski comment 57855 at https://www.ejabberd.im Извиняюсь, что вмешиваюсь, но https://www.ejabberd.im/node/4881#comment-57854 <p>Извиняюсь, что вмешиваюсь, но мне вообще не нравится концепция построения модуля.<br /> В нем одновременно решаются задачи получения, форматирования и отображения данных.<br /> Также частично дублируется функционал уже существующего модуля (mod_shared_roster)</p> <p>Считаю, что модуль должен быть разрезан на две части:<br /> 1 - коннектор для загрузки в базу информации о пользователях<br /> 2 - ростер, отвечающий только за отображение информации из заранее сформированного хранилища (т.е. практически унификация существующего shared rostera).</p> <p>Функционал по загрузке данных должен быть выброшен в коннектор, который отвечает за частоту и состав обновления из указанного источника (необязательно LDAP)<br /> В коннекторе предусмотреть возможность постобработки выбранных данных.<br /> Т.е. предлагается такая схема работы<br /> - коннектор вытягивает в базу данные, ограниченные простейшими правилами (недостаток - объем трафика, компенсируется кэшированием в базе сервера).<br /> - коннектор на этапе постобработки форматирует данные при помощи механизмов работы с БД сервера (этим снижаются накладные расходы и повышается гибкость).<br /> - коннектор удаляет записи, у которых истек срок существования<br /> - коннектор оповещает модуль ростера, что данные были обновлены.<br /> - коннектор переходит в режим ожидания </p> <p>Считаю что такая схема организации ростера позволит<br /> - упростить разработку<br /> - создать универсальный механизм получения данных для ростера<br /> - сделать представление данных в ростере более гибким</p> Wed, 21 Sep 2011 06:17:35 +0000 freebeer comment 57854 at https://www.ejabberd.im из личного опыта, может https://www.ejabberd.im/node/4881#comment-57790 <p>из личного опыта, может пригодится кому:<br /> так и не удалось полностью без косяков собрать 2.1.8 под вин, но проблему презенса можно обойти, если заменить эрланг, который ставится инсталятором, на более новую(манипуляции с оригинальной r12b4 не дают эффекта) версию(пробовал r14b01(рекомендована), r14b03(не рекомендована)- разницы не заметил). для этого из более свежей(erlang\bin, erlang\erts-&lt;версия&gt;\bin) версии заменяем в старой(ejabberd\bin) одинаковые по имени файлы(или тупо закидываем всё сразу), кроме erl.ini. затем в ejabberd\lib переносим erlang\lib, оставляя из старых только отсутствующие в эрланге. после этого презенс заработает, но не будет запускаться сервис- для решения оного нужно перекомпилировать(уже новым компилятором erlc) ejabberd\lib\win_service-1.0\src\win_service.erl, поместив win_service.beam в ejabberd\lib\win_service-1.0\ebin</p> <p>зы: благодарность mikekaganski за объяснения и помощь</p> Thu, 25 Aug 2011 23:42:01 +0000 BABUT comment 57790 at https://www.ejabberd.im отправил на пару адресов, https://www.ejabberd.im/node/4881#comment-57779 <p>отправил на пару адресов, найденных при прохождении квеста "найди мыло" ;) не факт, что они верные и дойдёт</p> Wed, 24 Aug 2011 00:19:25 +0000 BABUT comment 57779 at https://www.ejabberd.im Боюсь, я под виндой не https://www.ejabberd.im/node/4881#comment-57769 <p>Боюсь, я под виндой не компилил...</p> <p>Попробовал, вроде, компилится под экспрессом 2010 (configure.bat; nmake /f Makefile.win32), правда, после некоторых плясок с правкой Makefile.inc, который генерится cofigure, но, похоже, это не то... что-то там хреново. Возможно, нужно собирать под mingw.</p> <p>Может быть, попробовать отловить проблему без пересборки? (Каюсь, да, это я предложил пересобрать - но я не знал, что это винда; под *nixами всё ок).</p> <p>Пришлите подробные логи работы (из режима live, с уровнем логов 5, когда не отображается презенс) мне на почту. Попробуем так.</p> Tue, 23 Aug 2011 10:04:30 +0000 mikekaganski comment 57769 at https://www.ejabberd.im не осилил. 2.1.x собирал на https://www.ejabberd.im/node/4881#comment-57768 <p>не осилил. 2.1.x собирал на 2010 экспрессе(ну где в наш атомный век найти 6 версию?). раз сурьёзно ругнулся в src\tls\Makefile.win32 на невозможность исользования несколько сорцов в -Fo, разбил(ну как сообразил) на пару:<br /> ..<br /> SOURCE1 = sha_drv.c<br /> OBJECT1 = sha_drv.o<br /> SOURCE2 = tls_drv.c<br /> OBJECT2 = tls_drv.o<br /> DLL1 = ..\sha_drv.dll<br /> DLL2 = ..\tls_drv.dll<br /> ALL : $(DLL1) $(DLL2) $(BEAMS)<br /> ..<br /> $(DLL1) : $(OBJECT1)<br /> $(LD) $(LD_FLAGS) -out:$(DLL1) $(OBJECT1)<br /> $(DLL2) : $(OBJECT2)<br /> $(LD) $(LD_FLAGS) -out:$(DLL2) $(OBJECT2)<br /> $(OBJECT1) : $(SOURCE1)<br /> $(CC) $(CC_FLAGS) -c -Fo$(OBJECT1) $(SOURCE1)<br /> $(OBJECT2) : $(SOURCE2)<br /> $(CC) $(CC_FLAGS) -c -Fo$(OBJECT2) $(SOURCE2)<br /> в итоге они собрались, но сам(а что вообще должно собраться? %)) нет. последнее, что делает:<br /> ..<br /> c:/EJABBE~1/src/web/mod_http_fileserver.erl:442: Warning: call to httpd_util:to_lower/1 will fail, since it was removed in R12B; use string:to_lower/1<br /> cd ..\odbc<br /> nmake -nologo -f Makefile.win32<br /> erlc -W -I .. -pz .. -o .. ejabberd_odbc.erl<br /> c:/EJABBE~1/src/odbc/ejabberd_odbc.erl:32: Warning: behaviour p1_fsm undefined<br /> erlc -W -I .. -pz .. -o .. ejabberd_odbc_sup.erl<br /> erlc -W -I .. -pz .. -o .. -Dgeneric odbc_queries.erl<br /> cd ..<br /> build target does not exist<br /> ALL target does not exist<br /> и конечно werl -s ejabberd -name ejabberd крашится.<br /> тема непопулярная..:\ может какие-нибудь хинты? ;)</p> Mon, 22 Aug 2011 10:57:54 +0000 BABUT comment 57768 at https://www.ejabberd.im я ни как не пойму почему не https://www.ejabberd.im/node/4881#comment-57753 <p>я ни как не пойму почему не работает версия модуля от 03.08.2011г. и вообще он способен работать с OpenLDAP ? В общем конфиг такой:</p> <p> {mod_shared_roster_ldap, [<br /> {ldap_servers, ["192.168.100.7"]},<br /> {ldap_group_base, "ou=testing,ou=addressbook,dc=example,dc=com"},<br /> {ldap_rfilter, "(objectClass=organizationalUnit)"},<br /> %%{ldap_groupattr, "ou"},<br /> {ldap_gfilter, "(&amp;(objectClass=organizationalUnit)(ou=%g))"},<br /> {ldap_groupdesc, "description"},<br /> {ldap_member_selection_mode, group_children},<br /> {ldap_ufilter, "(&amp;(objectClass=inetOrgPerson)(cn=%u))"},<br /> {ldap_userdesc, "displayName"},<br /> {ldap_auth_check, off}<br /> %%{ldap_useruid, "cn=%u"}<br /> ]},</p> <p>в логах ежика никаких ошибок нет, вообще никаких рапортов.</p> <p>структура ldap <a>http://s1.ipicture.ru/uploads/20110818/TB1JrU45.png</a></p> <p>ткните пальцем, совсем голову сломал</p> Thu, 18 Aug 2011 14:15:06 +0000 kozakman comment 57753 at https://www.ejabberd.im да, бинарник. попробую(займёт https://www.ejabberd.im/node/4881#comment-57714 <p>да, бинарник. попробую(займёт время, навалилось работы)<br /> не со зла, не знал о существовании EJAB-1480. наткнулся при поиске актуальной версии, не прочитал дальше нескольких верхних каментов- виноват, исправился сразу, как только поиск повторно, уже на тему презенса, привёл туда же, но было поздно -.-</p> Tue, 09 Aug 2011 23:32:31 +0000 BABUT comment 57714 at https://www.ejabberd.im