How to enable MUC/Sub model in ejabberd 16.09? - xmpp

I installed ejabberd 16.09. But, How to enable muc/sub model in ejabberd yml file? Is this feature available in ejabberd community addition?
I am sending stanza like
<iq from='sam#localhost'
to='test#conference.localhost'
type='get'
id='ik3vs715'>
<query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>
but i am not getting responcse like
<feature var="urn:xmpp:mucsub:0" />
please reply

You should query room configuration and check "enable subscription" option

Related

XEP-0430 Inbox query is not working in openfire

I am using openfire 4.6.0 using which I am querying for Inbox( XEP-0430: Inbox) messages but I am getting the following error. Whether the feature XEP-0430 is available in openfire?
IQ Query:
<iq id="7025d773-fb53-4afa-89de-3be4d7167277" type="get" xmlns="jabber:client">
<inbox xmlns="urn:xmpp:inbox:1"/>
</iq>
Response:
<inbox xmlns="urn:xmpp:inbox:1"/>
<error xmlns="jabber:client" code="503" type="cancel">
<service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
The list of supported protocol extensions of Openfire is published at https://download.igniterealtime.org/openfire/docs/latest/documentation/protocol-support.html. The extension that you are looking for, XEP-0430 'Inbox', is not listed there.

ejabberd MUC Archive Management Query Response

I'm using ejabberd 15.09 and have enabled archive management for every MUC in the server configuration like below:
mod_mam:
default: always
mod_muc:
## host: "conference.#HOST#"
access: muc
access_create: muc_create
access_persistent: muc_create
access_admin: muc_admin
default_room_options:
mam: true
persistent: true
public: true
Also inspection on the admin panel for Ejabberd shows that messages are getting archived as the number of elements in archive table goes up after each message is sent to the MUC. This is verifying that archiving is enabled for the session.
To query the server for message archive from MUC, I am sending this iq packet:
<iq type='set' id='testid1'>
<query xmlns='urn:xmpp:mam:1'>
<x xmlns='jabber:x:data' type='submit'>
<field var='FORM_TYPE' type='hidden'>
<value>urn:xmpp:mam:1</value>
</field>
<field var='with'>
<value>testmyroomnow#conference.ip/</value>
</field>
</x>
</query>
</iq>
Response received from the server doesn't contain any messages.
<message from='user#ip' to='user#ip/Gajim'>
<fin xmlns='urn:xmpp:mam:0' complete='true'>
<set xmlns='http://jabber.org/protocol/rsm'>
<count>0</count>
</set>
</fin>
</message>
This MUC already contains some messages but querying like above is not returning any message. It seems that the format of xml stanza is not correct. Either the format for sending JID for conference is not correct or something else.
Not sure what to do as I'm already using the latest version of Ejabberd which is showing to support archive of MUC. Other that what I'm doing here, I have no idea how to query a MUC archive from ejabberd server.
You need to query the MUC service for MUC archive. The user MAM service only stores message for one-to-one conversation.
Please also note that you are not using the latest ejabberd. As of today, latest version is 15.11. I recommend you use the latest one regarding MAM MUC, as several clarifications has been made to XEP-0313 and were added to latest ejabberd.
Here is example query, sending MAM query stanza to MUC room itself:
<iq type='set' id='juliet1' to='tech#conference.process-one.net'>
<query xmlns='urn:xmpp:mam:0' queryid='f27'>
<set xmlns='http://jabber.org/protocol/rsm'>
<max>10</max>
</set>
</query>
</iq>

PubSub module returning error

I'm working on getting Jappix running. I'm using ejabberd as my XMPP server and I've got everything working except comments and viewing attachments - group chat, single chat, external authentication, private messages, friend lists, presence and other works as intended.
My configuration is the same as the one the Jappix project provides on their jappix/jappix-tools github repository. I have no errors in my ejabberd log, the only thing I got while debugging and digging everything up is that this is an example stanza sent to the server:
<iq xmlns="jabber:client" type="get" id="get_31-30" to="pubsub.mydomain.com" xml:lang="en">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<items node="urn:xmpp:microblog:0:comments/3aca5f972fe7198805bdd1a20f502f35"/>
</pubsub>
</iq>
And this is the response I get from the server:
<iq xmlns="jabber:client" from="pubsub.mydomain.com" to="arqu#mydomain.com/jappix (1378149270017)" type="error" id="get_31-30" xml:lang="en" xmlns:xml="http://www.w3.org/XML/1998/namespace">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<items node="urn:xmpp:microblog:0:comments/3aca5f972fe7198805bdd1a20f502f35"/>
</pubsub>
<error code="503" type="cancel">
<service-unavailable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>
And in Jappix I just get the usual "Service Unavailable" error message.
Additional info:
My BOSH is the internal one of ejabberd and works fine as far as i know, I've setup the reverse proxy and everything else to make it work. Still could be something related to this and not reaching the service on some other port maybe?
It looks like you do not have pubsub enabled/installed on your server.
Have you tried any other pubsub request?

XMPP Component indicating presence

I have an XEP-0114 based XMPP component that works fine with the Openfire server. Ejabberd however complains about it.
First thing it does (after having authenticated) is to indicate presence. It does so by sending this:
<presence from="tictactoe.komogvind.dk"/>
I get this reply
<presence type="error" to="tictactoe.komogvind.dk" xmlns:stream="http://etherx.jabber.org/streams">
<error code="400" type="modify">
<bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</presence>
What am I missing?

Xmpp ejabberd and add-user command

I have two ejabberd servers, one local one distant online on foobar.com.
Using xmpp pidgin console i can send iq stanzas for tests:
Local server hostname is eepc
<iq to='eeepc' from='greg#eeepc' id='get-registred-users-num-1' type='set'>
<command xmlns='http://jabber.org/protocol/commands' action='execute' node='http://jabber.org/protocol/admin#get-registered-users-num'/>
</iq>
<iq from='eeepc' to='greg#eeepc/3493331071251540036345753' id='get-registred-users-num-1' type='result'>
<command xmlns='http://jabber.org/protocol/commands' sessionid='2009-08-29T14:01:55.714639Z' node='http://jabber.org/protocol/admin#get-registered-users-num' status='completed'>
<x xmlns='jabber:x:data'>
<field type='hidden' var='FORM_TYPE'>
<value>http://jabber.org/protocol/admin</value>
</field>
<field type='text-single' label='Number of registered users' var='registeredusersnum'>
<value>7</value>
</field>
</x>
</command>
</iq>
Distant Server
<iq to='foobar.com' from='greg#foobar.com' id='get-registred-users-num-1' type='set'>
<command xmlns='http://jabber.org/protocol/commands' action='execute' node='http://jabber.org/protocol/admin#get-registered-users-num'/>
</iq>
<iq from='foobar.com' to='greg#foobar.com/36523779951251567671615394' id='get-registred-users-num-1' type='error'>
<command xmlns='http://jabber.org/protocol/commands' action='execute' node='http://jabber.org/protocol/admin#get-registered-users-num'/>
<error code='404' type='cancel'>
<item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</error>
</iq>
I don't understand why i get a , i could not see any particular options to tell the server to accept commands from remote ?
Maybe mod_configure is simply not loaded on the distant server.
You can check via lists:member(mod_configure, gen_mod:loaded_modules("foobar.com")). in an ejabberd admin shell.
I cannot imagine that this is about being a remote user, because no s2s connection is needed between foobar.com and greg#foobar.com.
Looking in the mod_configure.erl source code there seems to be an ACL check to make sure the configure adhoc commands are only allowed when the requester is on a user account has configure priv on that virtual host. By default I think they don't.
acl:match_rule(LServer, configure, From)
You may need to add something like...
{access, configure, [{allow, greg#foobar.com}]}.
...to your ejabberd.cfg file.