ejabberd 中的隐私列表

Privacy lists in ejabberd

我想阻止所有来自我名册的在线状态更新。我尝试通过发送以下 IQ 来使用隐私列表。

<iq id='oQQwF-18' type='set'>
  <query xmlns='jabber:iq:privacy'>
    <list name="subscription">
      <item action="deny" order="9" type="subscription" value="to">
        <presence-in/>
      </item>
    </list>
  </query>
</iq>

我可以看到隐私列表正在存储在 MySQL 中,但我仍然收到花名册好友的状态更新。

我知道 mod_client_state,但我想先试试隐私列表。

在XEP-0016中,匹配订阅类型时,需要分别匹配每个订阅类型。使用上面的节,您将阻止来自订阅状态为 "to" 的用户的传入存在节,但大概他们中的大多数订阅状态为 "both"(有些可能具有 "from")。试试这个:

<iq id='oQQwF-18' type='set'>
  <query xmlns='jabber:iq:privacy'>
    <list name="subscription">
      <item action="deny" order="9" type="subscription" value="to">
        <presence-in/>
      </item>
      <item action="deny" order="10" type="subscription" value="from">
        <presence-in/>
      </item>
      <item action="deny" order="11" type="subscription" value="both">
        <presence-in/>
      </item>
    </list>
  </query>
</iq>

此外,您可能需要将subscription列表设置为活动隐私列表:

<iq type='set' id='active1'>
<query xmlns='jabber:iq:privacy'>
  <active name='subscription'/>
</query>
</iq>