How do I only allow contacts who are on my roster list to send me messages? Is there any XEP responsible to do that? Or will I need to do this client-side?
Asked
Active
Viewed 610 times
1
-
I'm fairly sure that by default converse.js doesn't show messages received from users who are not in your roster. – JC Brand Feb 19 '16 at 09:19
1 Answers
1
Yes, OpenFire supports XEP-0016: Privacy Lists (see this question), which can be used to block stanzas according to various criteria.
You can't explicitly block stanzas for contacts not in your roster, but you can block by subscription status none
, which can more or less accomplish the same goal. You could send something like this:
<iq from='romeo@example.net/orchard' type='set' id='msg3'>
<query xmlns='jabber:iq:privacy'>
<list name='message-sub-example'>
<item type='subscription'
value='none'
action='deny'
order='5'>
<message/>
</item>
</list>
</query>
</iq>
This creates a privacy list called message-sub-example
, containing a rule to block any messages from contacts with subscription type none
, including contacts not in the roster. For this list to take effect, you need to make it the active list:
<iq from='romeo@example.net/orchard' type='set' id='active1'>
<query xmlns='jabber:iq:privacy'>
<active name='message-sub-example'/>
</query>
</iq>
-
Yes, it might be worth learning about the four subscription states: `none`, `to`, `from` and `both`. Unlike other IM systems, presence subscriptions are not necessarily symmetric: if X can see Y, Y may or may not be able to see X. – legoscia Feb 18 '16 at 18:06