Как заблокировать конкретный jabber_id для конкретного человека в ejabberd?

Привет, я установил ejabberd 16.04.43 на свой сервер, и он работает так, как мне нужно.

Теперь у меня есть новое требование заблокировать определенного человека для определенного пользователя.

Позвольте мне рассмотреть несколько пользователей:

kandan
cash
mani
kumar
lokesh

Каждый из них имеет определенный идентификатор jabber в ejabberd, и они взаимодействуют друг с другом с помощью команды

add rosteritem

Теперь мне нужно,

 **kandan blocks cash** such that any further message from kandan to cash or from cash to kandan should not deliver each other , so can anyone tell me how to implement?

я установил с mod_block , но я не могу ответить на то, что я ожидал .. !!!


person Mani Kandan    schedule 27.06.2016    source источник
comment
Вы можете использовать privacy_list для блокировки пользователей.   -  person Hare Kumar    schedule 27.06.2016
comment
Не могли бы вы направить меня, пожалуйста, так как я только что родился в ejabberd.   -  person Mani Kandan    schedule 27.06.2016
comment
Проверьте мой ответ. Замените пример контента вашим фактическим контентом.   -  person Hare Kumar    schedule 27.06.2016


Ответы (2)


Вам необходимо добавить пользователя в список конфиденциальности с действием запретить. А позже, если вы хотите разблокировать, установите действие разрешить.

Пример:

<iq from='[email protected]/orchard' type='set' id='msg1'>
<query xmlns='jabber:iq:privacy'>
  <list name='message-jid-example'>
    <item type='jid'
          value='[email protected]'
          action='deny'
          order='3'>
      <message/>
    </item>
  </list>
</query>
</iq>

документация.

person Hare Kumar    schedule 27.06.2016
comment
Как это вызвать с помощью мода restful? - person Mani Kandan; 27.06.2016
comment
Это должно быть реализовано со стороны клиента. Итак, скажем, если A хочет заблокировать B, он должен отправить из A в B. Но если вы все еще хотите использовать его из бэкэнда, вы можете использовать метод send_stanza из mod_admin_extra. - person Hare Kumar; 27.06.2016
comment
Не могли бы вы прислать мне синтаксис, пожалуйста? ejabberdctl send_stanza kandan localhost - person Mani Kandan; 27.06.2016
comment
ejabberdctl send_stanza kandan localhost ‹iq from='kandan1@localhost type='set' id='block1'› ‹block xmlns='urn:xmpp:blocking'› ‹item jid='karthick@localhost'/› ‹/block› ‹/iq› - person Mani Kandan; 27.06.2016
comment
что значит ничего не получилось? Вы проверяли запись в mnesia против пользователя? Кстати, я думаю, вам нужно использовать метод send_staza_c2s. - person Hare Kumar; 27.06.2016
comment
использую базу данных sql. - person Mani Kandan; 27.06.2016

Для администратора вы можете отправить строфу с помощью команды send_stanza_c2s.

Синтаксис

ejabberdctl send_stanza_c2s Имя пользователя Host ResourceID Stanza

раздел блока:

<iq type='set' id='block123' from='[email protected]'>
     <block xmlns='urn:xmpp:blocking'>
        <item jid='[email protected]'>
        </item>
     </block>
</iq>

Пример

ejabberdctl send_stanza_c2s user1 abc.com 69890942764773790857148098 "<iq type='set' id='block' from='[email protected]'><block xmlns='urn:xmpp:blocking'><item jid='[email protected]'></item></block></iq>"
person Manoj R    schedule 04.10.2016
comment
Большое спасибо за комментарий, но как мы получим идентификатор ресурса. мы не можем обойтись без идентификатора ресурса. - person Mani Kandan; 04.10.2016
comment
Да, идентификатор ресурса должен следовать за командой, с помощью которой вы можете получить идентификатор ресурса ejabberdctl user_resources Имя пользователя Хост - person Manoj R; 04.10.2016