2015-01-13 3 views
0

Я пытаюсь получить список всех пользователей, зарегистрированных на сервере. Мой сервер - Ejabberd. Когда я использую обнаружение службы на узле all users, я получаю ошибку 403. Вот мой запрос строфа и ошибка строфа -disco # items возвращает код ошибки 403

Запрос

<iq id="U7" type="get" to="server.lt" xmlns="jabber:client"> 
    <query node="all user" xmlns="http://jabber.org/protocol/disco#items" /> 
</iq> 

Response

<iq from="server.lt" to="[email protected]/res" id="U8" type="error" xmlns="jabber:client"> 
    <query xmlns="http://jabber.org/protocol/disco#items" node="all users" /> 
    <error code="403" type="auth"> 
    <forbidden xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /> 
    </error> 
</iq> 

Когда я проверил на сервере, я не нашел mod_disco там, так что я добавил новый модуль mod_disco. Нужно ли делать дальнейшие изменения на сервере или есть ли какие-либо проблемы в моей строфе запроса?

Update:
Я попытался, давая мой доступ администратора пользователя, и команда сделала работу, но это не практично, чтобы дать каждому пользователю доступ администратора. Есть ли способ сделать это с помощью клиента или сервера без использования доступа администратора для пользователя?

ответ

1

Доступ к информационному узлу all users является жестко запрограммированным для использования правила доступа configure. В конфигурации по умолчанию, он установлен, чтобы только админы сервера:

%% Only admins can use the configuration interface: 
{access, configure, [{allow, admin}]}. 

Там нет никакого способа, чтобы настроить ejabberd, чтобы дать доступ к только all users без предоставления доступа настроить все остальное, это все или ничего. Вам нужно будет изменить исходный код, чтобы достичь того, чего вы хотите.

+0

Я полагаю, мне нужно будет предоставить всем пользователям доступ. Как я могу это сделать? Должен ли я заменить администратора на пользователя? – noob

+0

Если у вас есть объявление типа '{acl, user, ....}', вы можете это сделать. Конфигурация по умолчанию включает в себя «локальный» ACL, поэтому вы можете изменить приведенное выше на '{access, configure, [{allow, local}]}'. Обратите внимание, что это даст всем локальным пользователям право создавать и удалять пользователей и изменять пароли других пользователей. – legoscia

+0

Спасибо. Сервер для частного использования в любом случае. На самом деле у меня нет доступа к конфигурационному файлу ejabberd, можно ли это сделать с помощью панели администрирования? В нем есть mod_adhoc и mod_configure модуль. – noob

 Смежные вопросы

  • Нет связанных вопросов^_^