processone / ejabberd

Robust, Ubiquitous and Massively Scalable Messaging Platform (XMPP, MQTT, SIP Server)
https://www.process-one.net/en/ejabberd/
Other
6.1k stars 1.51k forks source link

XEP-0405: Mix Service Query #4006

Closed dkliss closed 1 year ago

dkliss commented 1 year ago

Hi,

I am having some issues with setting up a Mix service as below:

I followed configuration, which is mentioned in link below.

https://docs.ejabberd.im/tutorials/mix-010/

I can create and join a channel. But I am seeing two issues:

  1. In my service discovery feature I am not seeing urn:xmpp:mix:pam:2" and also it is not in "result" stanza received after join request. Is this required or can it be ignored? Ejabberd server should send this to client within result or also at service discovery get request.
  2. I am only receiving messages and participants in result but not all nodes (i.e. presence, info are missing).

Specific stanza I have sent is below with client join.

<iq id="JRRDARHAU" type="set" from="test1@testserver.com/61cabb00-b3fc-11ed-9f45-37a4d953211b" to="test1@testserver.com"><client-join xmlns="urn:xmpp:mix:pam:2" channel="myFirstChatRoom@mix.testserver.com"><join xmlns="urn:xmpp:mix:core:1"><subscribe node="urn:xmpp:mix:nodes:messages"/><subscribe node="urn:xmpp:mix:nodes:presence"/><subscribe node="urn:xmpp:mix:nodes:participants"/><subscribe node="urn:xmpp:mix:nodes:info"/></join></client-join>

Response from server is received, but without "urn:xmpp:mix:pam:2" as well as missing few nodes.

<iq xml:lang='en' to='test@testserver.com/61cabb00-b3fc-11ed-9f45-37a4d953211b' from='test1@testserver.com' type='result' id='JRRDARHAU'><client-join xmlns='urn:xmpp:mix:core:1'><join jid='38868c7810e73b7f2d7b#myFirstChatRoom@mix.testserver.com'><subscribe node='urn:xmpp:mix:nodes:messages'/><subscribe node='urn:xmpp:mix:nodes:participants'/></join></client-join></iq>

Any guidance is appreciated. Thanks!

Before creating a ticket, please consider if this should fit the discussion forum better.

Environment

Configuration (only if needed): grep -Ev '^$|^\s*#' ejabberd.yml

loglevel: 4
...

Errors from error.log/crash.log

No errors

Bug description

Please, give us a precise description (what does not work, what is expected, etc.)

dkliss commented 1 year ago

One issue is resolved.

I can discover urn:xmpp:mix:pam:2 following below following XEP-0405.

My issue was that the "result" response was To a "Full JID" only for this MIX PAM, which seems a bit unique.

Other discovery command also receives servername in "from" field of "result", as shown in next example.

The XEP-0405 does not specify server name in response and hence, it was more or less my own issue.


PAM: Servername not included in "from" field.

<iq id='lx09df27'
    to='hag66@shakespeare.example/UUID-c8y/1573'
    type='result'>
  <query xmlns='http://jabber.org/protocol/disco#info'>
    <feature var='urn:xmpp:mix:pam:2'/>
    <feature var='urn:xmpp:mix:pam:2#archive'/>
  </query>
</iq>

Other example: Server name included in response "from field".

<iq from='capulet.com' to='juliet@capulet.com/chamber' type='result' id='disco1'>
  <query xmlns='http://jabber.org/protocol/disco#info'>
    ...
    <feature var='urn:xmpp:blocking'/>
    ...
  </query>
</iq>
dkliss commented 1 year ago

Closing this issue as "channel client-join" still works even if I don't receive "urn:xmpp:mix:pam:2" name space in result response for stanza below, hence, not sure if this is an issue because of my own understanding.

Sharing few info below on my observations.

Reference: https://docs.ejabberd.im/tutorials/mix-010/

OBSERVATION: urn:xmpp:mix:pam:2 Not received.

SENT: Sent stanza similar to below from the attached reference (with latest namespaces).

<iq type='set'
    to='hag66@shakespeare.example'
    id='E6E10350-76CF-40C6-B91B-1EA08C332FC7'>
  <client-join xmlns='urn:xmpp:mix:pam:0'
               channel='coven@mix.shakespeare.example'>
    <join xmlns='urn:xmpp:mix:core:0'>
      <nick>third witch</nick>
      <subscribe node='urn:xmpp:mix:nodes:messages'></subscribe>
      <subscribe node='urn:xmpp:mix:nodes:presence'></subscribe>
      <subscribe node='urn:xmpp:mix:nodes:participants'></subscribe>
      <subscribe node="urn:xmpp:mix:nodes:info"></subscribe>

    </join>
  </client-join>
</iq>

EXPECTED RESLT as per https://docs.ejabberd.im/tutorials/mix-010/

<iq type="result"
    from="hag66@shakespeare.example"
    to="hag66@shakespeare.example/MacBook-Pro-de-Mickael"
    id="E6E10350-76CF-40C6-B91B-1EA08C332FC7">
  <client-join xmlns='urn:xmpp:mix:pam:0'>
    <join xmlns="urn:xmpp:mix:core:0"
          jid='d79d011852b97adfaad6#coven@mix.shakespeare.example'>
      <nick>third witch</nick>
      <subscribe node='urn:xmpp:mix:nodes:messages'></subscribe>
      <subscribe node='urn:xmpp:mix:nodes:presence'></subscribe>
      <subscribe node='urn:xmpp:mix:nodes:participants'></subscribe>
      <subscribe node="urn:xmpp:mix:nodes:info"></subscribe>
   </join>
  </client-join>
</iq>

MY RESULT I did not receive " xmlns="urn:xmpp:mix:pam:0" (urn:xmpp:mix:pam:2 in my case), which is in above stanza. But channel join was successful. Also, i only receive two nodes, messages and participants.

<iq type="result"
    from="hag66@shakespeare.example"
    to="hag66@shakespeare.example/MacBook-Pro-de-Mickael"
    id="E6E10350-76CF-40C6-B91B-1EA08C332FC7">
  <client-join xmlns='urn:xmpp:mix:core:1'>
    <join  jid='d79d011852b97adfaad6#coven@mix.shakespeare.example'>
      <nick>third witch</nick>
      <subscribe node="urn:xmpp:mix:nodes:messages"></subscribe>
      <subscribe node="urn:xmpp:mix:nodes:participants"></subscribe>
   </join>
  </client-join>
</iq>

Few other notes:

XEP Reference: https://xmpp.org/extensions/xep-0369.html

NOTE 1: For channel response below (Example 18), the stanza I received is actually showing "full JID" and not the "bare JID "as per example below. The XEP says "The channel responds to the user's sever with an IQ-result addressed to the user's bare JID, which will be processed as specified in MIX-PAM." Not sure this is an issue or if there is a relation with MIX-PAM

Example 18. Channel responds to User's Server[¶](https://xmpp.org/extensions/xep-0369.html#example-18)
<iq type='result'
    from='coven@mix.shakespeare.example'
    to='hag66@shakespeare.example'
    id='E6E10350-76CF-40C6-B91B-1EA08C332FC7'>
  <join xmlns='urn:xmpp:mix:core:1'
        id='123456'>
    <subscribe node='urn:xmpp:mix:nodes:messages'/>
    <subscribe node='urn:xmpp:mix:nodes:presence'/>
    <subscribe node='urn:xmpp:mix:nodes:participants'/>
    <subscribe node='urn:xmpp:mix:nodes:info'/>
    <nick>third witch</nick>
  </join>
</iq>

NOTE 2: I received name space as "urn:xmpp:mix:core:0" whereas the new name space is urn:xmpp:mix:core:1 as shown below from XEP. Note sure if this is an issue but sharing in case.

Example 20. Channel Distributes New Participant Information[¶](https://xmpp.org/extensions/xep-0369.html#example-20)
<message from='coven@mix.shakespeare.example'
         to='hecate@shakespeare.example'
         id='5A9C7398-DB13-4BFA-A091-2D466C710AAF'>
  <event xmlns='http://jabber.org/protocol/pubsub#event'>
    <items node='urn:xmpp:mix:nodes:participants'>
      <item id='123456'>
        <participant xmlns='urn:xmpp:mix:core:1'>
          <jid>hag66@shakespeare.example</jid>
          <nick>third witch</nick>
        </participant>
      </item>
    </items>
  </event>
</message>