[asterisk-users] XMPP issues in Asterisk 11.6.0 for distributed device states...
Kevin Larsen
kevin.larsen at pioneerballoon.com
Tue Mar 18 11:01:06 CDT 2014
I have been working with distributed device states in Asterisk using XMPP
attached to an OpenFire server. I have it working well across two servers
and want to roll it out across every server in my company. All servers are
Asterisk 11.6.0. I am running into a problem that seems like it should be
a bit easier to solve than it is seeming to be. On the third server I am
rolling into this solution, I get plenty of the following:
res_xmpp.c:1398 xmpp_pubsub_handle_error: Error performing
operation on PubSub node device_state, 403.
So, basically, servers 1 and 2 continue to hum along nicely updating their
device state, but server 3 gets a 403 forbidden message when it tries to
deal with device state. I believe this has to do with the permissions set
up on the device state node. I have a small example that demonstrates the
creation of a new node.
In the Asterisk CLI, I ran 'xmpp create collection asterisk test' on
server 3, which was successful and can be seen on servers 1 and 2 with
'xmpp list nodes asterisk'
The debug output from server 3 for this is as follows:
<--- XMPP sent to 'asterisk' --->
<iq to='pubsub.xmpp' from='server3 at xmpp/astvoip3' type='set' id='aaacy'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<create node='test'/>
<configure>
<x xmlns='jabber:x:data' type='submit'>
<field var='FORM_TYPE' type='hidden'>
<value>http://jabber.org/protocol/pubsub#owner</value>
</field>
<field var='pubsub#node_type'>
<value>collection</value>
</field>
<field var='FORM_TYPE' type='hidden'>
<value>http://jabber.org/protocol/pubsub#node_config</value>
</field>
<field var='pubsub#deliver_payloads'>
<value>1</value>
</field>
<field var='pubsub#persist_items'>
<value>1</value>
</field>
<field var='pubsub#access_model'>
<value>whitelist</value>
</field>
</x>
</configure>
</pubsub>
</iq>
<------------->
<--- XMPP sent to 'asterisk' --->
<iq to='pubsub.xmpp' from='server3 at xmpp/astvoip3' type='set' id='aaacz'>
<pubsub xmlns='http://jabber.org/protocol/pubsub#owner'>
<affiliations node='test'>
<affiliation jid='server1 at xmpp' affiliation='owner'/>
<affiliation jid='server2 at xmpp' affiliation='owner'/>
<affiliation jid='server1 at xmpp/astvoip1' affiliation='owner'/>
<affiliation jid='server2 at xmpp/astvoip2' affiliation='owner'/>
</affiliations>
</pubsub>
</iq>
<------------->
As we can see, the first message creates the test node and sets the access
model to whitelist, so only jids in the whitelist are allowed to modify
it. The second message then sets the appropriate server 1 and server 2
jids to be owners, thus meeting the requirements of the whitelist.
Since these nodes are persistent, it would appear that server 3 cannot
properly access device_state because it was never whitelisted when the
node was created originally. I am fairly certain that I can solve this by
deleting all my nodes and letting them be recreated, but that seems
extreme as I put more servers into the system. Any thoughts on a better
way to handle xmpp and making sure new servers can access the proper
nodes?
Kevin Larsen - Systems Analyst - Pioneer Balloon Company
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20140318/84e17293/attachment.html>
More information about the asterisk-users
mailing list