Здесь вы можете задать любые вопросы по MyChat, по работе программы, её настройке, лицензированию и т.д.
Opticman
Проблема с импортом пользователей из Active Directory в MyChat Server 4.8.
В версии 4.8 есть два варианта для импорта из AD - либо сервер ставится на контроллер домена, либо через скрипт делается экспорт в файл и потом этот файл импортируется в MyChat Server.
Так вот, не везде это работает. В моём случае дело идёт так:
- первый вариант - сервер установлен и запущен на контроллере домена (Windows Server 2003 R2 SP2) от имени администратора домена, в администрировании ввожу имя домена, нажимаю "Получить пользователей из AD" и получаю ошибку "Пользователи не найдены или компьютер не в домене". Причём видно, что MyChat Server домен явно видит, так как если ввести заведомо неверное имя домена, то сервер начинает долго его искать, а если ввести правильное имя, то ошибка появляется сразу.
- второй вариант - сервер установлен и запущен абы где, а на контроллер домена копируется файл скрипта для экспорта пользователей в файл "users.ad". Запускаю файл скрипта (на контроллере домена) в командной строке из-под администратора домена, он запускается, что-то делает несколько секунд и потом выдаёт:
dsget failed:Directory object not found.
type dsget /? for help.Export completed successfully.
И файл "users.ad" не создаётся.

Разгадка
Скрипт простой, поэтому я решил разобрать его и выяснить, почему он не работает. И выяснил. Проблема была в самой главной строке - в запросе в AD:
dsquery user -name * -limit 0 | dsget user -samid (многа_букафф) > users.ad
Если эту строку выполнить вручную в командной строке, то будет та же ошибка "dsget failed:Directory object not found."
Однако всё встаёт на свои места, если конкретизировать запрос:
dsquery user ou=filial,dc=mycompany,dc=ru -name * -limit 0 | dsget user -samid (и так далее)
В крупных компаниях пользователей в AD распределяют по подразделениям (ou), соответственно у меня в домене "mycompany.ru" (это имя домена я придумал для примера, но настоящее имя похожее) в его корне создано подразделение с именем "Filial", где сидят те юзеры, которых я хочу экспортировать в "users.ad".
Вывод: у меня запрос в AD отрабатывает, если указано где искать - "ou=filial,dc=mycompany,dc=ru". Причём просто "dc=mycompany,dc=ru" недостаточно, тоже будет ошибка.
По поводу users.ad, который у меня не создавался даже при исправленном запросе: я скрипт запускал откуда угодно - и с Рабочего стола, и с диска C, под полнейшими правами (то есть ничто не мешало файлу "users.ad" создаться в том же месте, где лежит файл скрипта), но "users.ad" не создавался. Я написал абсолютный адрес, например "C:\users.ad", тогда файл создался.
В результате рабочая команда запроса выглядела у меня так:
dsquery user ou=GRPB_User,dc=grpb,dc=ru -name * -limit 0 | dsget user -samid (многа_букафф) > C:\users.ad

Почему так происходит - не знаю, мой случай, возможно, имеет какую-то специфику в AD (не я её создавал).
Скрипт я исправил, а вот встроенную функцию импорта только разрабы могут скорректировать. Хотелось бы, чтобы встроенная в MyChat Server функция импорта была более аккуратная и детальная, может даже с возможностью выбора подразделения домена, откуда надо импортировать. То, что сейчас - "Получить пользователей из AD" - очень убого для крупной компании.
Аватара пользователя
Андрей Раков
Добрый день, спасибо за обстоятельный комментарий.

Опишу ситуацию в общих чертах:

1. Импорт пользователей из AD напрямую в сервер - эту функцию мы закроем т.к. она во многих случаях дает промахи и для ее работы нужно устанавливать сервер MyChat на контроллер (иногда это не удобно).

2. Импорт пользователей с помощью скрипта - это 100% работоспособный вариант, но, как вы заметили, могут возникнуть некоторые "непонятности", такие как относительные пути. Насчет указания явно, откуда импортировать пользователей - в принципе это не обязательно, тот скрипт, что распространяется с дистрибутивом, пытается получить всех пользователей AD, но, если администратору нужно получить пользователей из конкретного подразделения, эти параметры нужно указать вручную.

В связи с этим мы решили изменить схему взаимодействия с AD - будет разработано приложение-сервис, которое будет запускаться на контроллере домена и соединяться с MyChat. В нем можно будет указать в GUI режиме, какие подразделения конкретно необходимо импортировать и указать период синхронизации списка пользователей домена.
Аватара пользователя
Алексей Пикуров
Немного улучшили функцию импорта пользователей из Active Directory. Теперь работает через LDAP и надеемся, отпадёт необходимость импорта через скрипт и внешний файл: viewtopic.php?p=6370#p6370

На очереди работ теперь импорт подразделений из AD в базу сервера MyChat и автоматический синхронизатор пользовательских учёток.