Как заблокировать анонимного пользователя в XMPP

Чтобы реализовать функциональность чата в моем приложении, я интегрировал в него инфраструктуру XMPP. Функция запроса на добавление в друзья отсутствует, поэтому пользователи могут отправлять сообщения другим пользователям, не отправляя запрос на присоединение. Из-за этой функциональности я не создал в приложении никакого реестра или списка конфиденциальности, а также был реализован режим анонимного чата.

Все работает нормально, за исключением функции блокировки пользователя, поскольку это анонимный пользовательский чат, поэтому для пользователей нет списка конфиденциальности, а расширение XMPP XEP-016 поддерживает блокировку только через список конфиденциальности.

Я также пытался искать альтернативы, и одна из них — реализовать XEP-0191, но, к сожалению, Open Fire не поддерживает это расширение.

Так что технари, пожалуйста, помогите мне решить эту проблему. Далее мои вопросы.

  1. Нужно ли мне создавать список/реестр конфиденциальности, чтобы заблокировать пользователя в режиме анонимного пользовательского чата. Это решение выглядит непрактичным, поскольку у моего приложения могут быть тысячи пользователей.

  2. Должен ли я изменить сервер Jabber с открытого огня на EJabber? Поддерживает ли Ejabber XEP-0191?

Помимо вышеизложенного, пожалуйста, дайте мне знать, если вы, ребята, знаете какой-либо другой обходной путь, чтобы заблокировать / разблокировать пользователя в режиме анонимного чата в Jabber.


person sandy    schedule 05.05.2013    source источник


Ответы (3)


У меня нет опыта работы с сервером EJabber, но XEP 0191 определенно является тем протоколом, который вам нужен.

Вы можете посмотреть здесь http://www.ejabberd.im/protocols и убедиться, что EJabber поддерживает ваш протокол.

Мой совет будет сменить сервер.

person Asaf Shveki    schedule 15.05.2013

Блок в любом случае спорный. Если вы заблокируете человека, он может просто создать нового анонимного пользователя и снова начать связываться с вами. Хотя это может показаться слишком трудоемким, его можно легко настроить для рассылки спам-сообщений. Каждые 30 минут вы создаете новую учетную запись и спамите всех, получаете кик и повторяете.

По крайней мере, вам придется внедрить XEP-0191 (список блокировки на стороне сервера) и выяснить, как поступать с анонимными новыми учетными записями.

person Phil Hannent    schedule 16.05.2013

К сожалению, я должен придерживаться сервера Open fire. Чтобы решить проблему с блокировкой пользователей, мне пришлось просмотреть документацию XMPP и, наконец, найти решение в XEP-0016, это расширение действительно имеет возможность поддерживать блокировку анонимных пользователей. Для этого необходимо создать список конфиденциальности на сервере, используя метод - (void)setListWithName:(NSString *)privacyListName items:(NSArray *)items fromUser:(NSString *)user;. После этого пометьте созданный список как активный список, вызвав метод - (void)setActiveListName:(NSString *)privacyListName;.

XEP-0016 не имеет ничего общего с Ростером и может блокировать чат анонимных пользователей.

person sandy    schedule 21.05.2013
comment
У меня есть приложение, похожее на ваше, и я не могу заблокировать анонимного пользователя. Не могли бы вы поделиться, как именно вы добились этой функциональности. Я использую xmpp с сервером ejabber. - person Sunil_Vaishnav; 19.07.2014
comment
@Sunil_Vaishnav, вам нужно будет вести список конфиденциальных заблокированных пользователей на сервере jabber. Каждый раз, когда пользователь блокируется/разблокируется, вам нужно будет вносить изменения в этот список конфиденциальности. Пожалуйста, обратитесь к XEP-0016 для получения дополнительной информации. - person sandy; 29.07.2014
comment
@sandy, @ Sunil_Vaishnav Я хочу просто заблокировать и разблокировать пользователя в XMPP. Пожалуйста, найдите ссылку ниже для получения дополнительной информации. stackoverflow.com/q/46155095/2910061 Спасибо. - person Ilesh P; 11.09.2017