Как получить список контроля доступа в многопользовательскую чат-комнату от внешнего автора на ejabberd - PullRequest
0 голосов
/ 14 декабря 2011

ejabberd настроен с использованием external_auth для аутентификации в базе данных пользователей моего веб-приложения. Я хотел бы иметь возможность создавать MUC (чат-комнату) для модераторов сайта и автоматически добавлять этих пользователей в чат, исключая всех остальных пользователей.

В конце концов я также хотел бы иметь возможность сопоставить функциональность групп моего сайта с MUC в ejabberd.

Внешний API-аутентификация для ejabberd, по-видимому, не обеспечивает детального контроля доступа, в основном позволяя запрашивать, зарегистрирован ли пользователь и успешно ли комбинация имени пользователя и пароля аутентифицирует пользователя.

Единственная ссылка, которую я видел на acl для MUC, находится здесь: http://www.ejabberd.im/aclpopulate Но, похоже, для этого нужно установить привилегии через интерфейс webadmin.

Нет ли способа сделать это автоматически из внешней аутентификации?

Ответы [ 2 ]

2 голосов
/ 30 января 2012

Чтобы ответить на мой собственный вопрос, кажется, что невозможно сделать то, что мне нужно, с помощью внешней аутентификации.Я закончил тем, что интегрировал команды ejabberd в жизненный цикл пользователя / группы моего веб-приложения, который оказался быстрее, чем я ожидал, и получил дополнительный бонус, заключающийся в том, что он в миллион раз быстрее, чем при использовании внешней аутентификации (я использую внутреннюю базу данных пользователей ejabberd, используя ejabberdctlдля создания пользователей, обновления паролей, добавления и удаления из общих списков и создания muc's).

Чтобы помочь с этим процессом, я создал оболочку PHP для ejabberdctl, которая свободно доступна на github:

https://github.com/tomlancaster/Ejabberd-Wrapper-PHP

Пожалуйста, не стесняйтесь использовать и злоупотреблять им по своему усмотрению.

0 голосов
/ 14 декабря 2011

Если у вас есть собственный модуль аутентификации, в этом случае вы можете перенаправить процесс аутентификации в ejabberd. В файле ejabberd_auth.erl аутентификация перенаправления файла путем изменения двух функций check_password_with_authmodule / 3 и check_password_with_authmodule / 5. Из вашего модуля аутентификации верните обратно термин, как возвращают эти две функции.

Если ваш модуль аутентификации находится на другой машине, создайте сокетное соединение для связи с вашим модулем аутентификации, получите результат и передайте результат функции check_password_with_authmodul.

После этих изменений перестройте ejabberd и запустите.

...