Project

General

Profile

MUC: problem kicking a user

Steffen Larsen
Added over 4 years ago

Hi Guys,

I have implemented a component that can control a MUC via. different events from out side systems.

The component can create and destroy a room, kick a user, privilege a user, give user a voice etc.

Creating and destroying a room works fine, but I have a problem when my compoent have to kick a user (with lower affiliation).

My configuration for the MUC:

--comp-name-1= muc
--comp-class-1=tigase.muc.MUCComponent
muc/muc-logger-class=tigase.muc.logger.RoomChatLogger
muc/message-filter-enabled[B]=false
muc/muc-lock-new-room[B]=false

On the component side I am receiving these stanzas:

1) The component creates a room (test2):

MUC GOT STANZA: from=null, to=null, DATA=<presence to="muc-event-component@xxx.tld" from="test2@muc.xxx.tld/admin"><x xmlns="http://jabber.org/protocol/muc#user"><item jid="muc-event-component@xxx.tld" affiliation="owner" role="moderator" nick="admin"/><status code="110"/><status code="201"/></x></presence>, SIZE=297, XMLNS=null, PRIORITY=HIGH, PERMISSION=NONE, TYPE=null

MUC GOT STANZA: from=null, to=null, DATA=<message xmlns="jabber:client" type="groupchat" to="muc-event-component@xxx.tld" from="test2@muc.xxx.tld"><body>Welcome! You created new Multi User Chat Room.</body></message>, SIZE=193, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=groupchat

MUC GOT STANZA: from=test2@muc.xxx.tld, to=muc-event-component@xxx.tld, DATA=<iq type="result" to="muc-event-component@xxx.tld" from="test2@muc.xxx.tld"/>, SIZE=95, XMLNS=null, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=result

MUC GOT STANZA: from=test2@muc.xxx.tld, to=muc-event-component@xxx.tld, DATA=<iq type="result" to="muc-event-component@xxx.tld" from="test2@muc.xxx.tld"/>, SIZE=95, XMLNS=null, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=result

2) a user (slarsen) joins test2 room:

MUC GOT STANZA: from=null, to=null, DATA=<presence xmlns="jabber:client" to="muc-event-component@xxx.tld" from="test2@muc.xxx.tld/slarsen">
<priority>5</priority>
<c xmlns="http://jabber.org/protocol/caps" ver="caps-b75d8d2b25" node="http://psi-im.org/caps" ext="ca cs ep-notify-2 html"/>

<x xmlns="vcard-temp:x:update">
<photo>0286542b9e69b832ede2798aca59d7e83e8aa81e</photo>
</x>
<x xmlns="http://jabber.org/protocol/muc#user"><item jid="slarsen@xxx.tld/slarsen" affiliation="none" role="participant" nick="slarsen"/></x></presence>, SIZE=518, XMLNS=jabber:client, PRIORITY=PRESENCE, PERMISSION=NONE, TYPE=null

3) I can see the user in the muc together with my component (admin). See Image attached.

4) I try to kick the user via. the component:

MUC GOT STANZA: from=test2@muc.xxx.tld, to=muc-event-component@xxx.tld, DATA=<iq type="error" to="muc-event-component@xxx.tld/admin" from="test2@muc.xxx.tld"><query xmlns="http://jabber.org/protocol/muc#admin"><item role="none" nick="slarsen"/></query><error code="405" type="cancel"><not-allowed xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" xml:lang="en">You cannot kick</text></error></iq>, SIZE=382, XMLNS=null, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=error

It seems like I am hitting the ModeratorModule.java class in line 96:

if ((newRole != null) && (newAffiliation == null)) {
                if ((newRole == Role.none) && !senderRole.isKickParticipantsAndVisitors()) {
                    throw new MUCException(Authorization.NOT_ALLOWED, "You cannot kick");

why is that? My admin, is moderator role and have a owner affiliation. Do you guys have any ideas?

It seems to be a permission problem, but I actually think that it is somekind of muc configuration that is going wrong when the component sets up and create the MUC.

I have tried to do the same directly in PSI and it seems to work there. I can't see the difference in what I am doing contra PSI (checked the PSI console for debugging the most of it).

-Cheers and thanks in advance!

/Steffen


Replies (18)

Avatar?id=6098&size=32x32

Added by Bartosz Małkowski TigaseTeam over 4 years ago

Can you compile and install latest MUC from branch "devel"?

I added few debugs. Of course you have to add:

--debug = muc

to init.properties.

Then we start checking log.

Added by Steffen Larsen over 4 years ago

Sure thing. Does it operate with tigase-server 5.2.1 stable?.

I'll do it today and update the topic.

/Steffen

Avatar?id=6098&size=32x32

Added by Bartosz Małkowski TigaseTeam over 4 years ago

Hm. May be problem with 5.2.1. I can't confirm or deny :-(

Added by Steffen Larsen over 4 years ago

Ok, I've updated the muc to tigase-muc-2.3.0-SNAPSHOT.jar.

It seems to me that it is dependent of some 5.3.0 snapshot server.

I get this In my log now:

2014-07-30 07:53:27.586 [main]             ThreadExceptionHandler.uncaughtException()  SEVERE: Uncaught thread: "main" exception
java.lang.NoClassDefFoundError: tigase/component/AbstractComponent$ModuleRegisteredHandler
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at tigase.server.MessageRouterConfig.hasClassForServerComponent(MessageRouterConfig.java:514)
    at tigase.server.MessageRouterConfig.getMsgRcvActiveNames(MessageRouterConfig.java:351)
    at tigase.server.MessageRouter.setProperties(MessageRouter.java:759)
    at tigase.conf.ConfiguratorAbstract.setup(ConfiguratorAbstract.java:550)
    at tigase.conf.ConfiguratorAbstract.componentAdded(ConfiguratorAbstract.java:182)
    at tigase.conf.Configurator.componentAdded(Configurator.java:50)
    at tigase.conf.Configurator.componentAdded(Configurator.java:33)
    at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:115)
    at tigase.server.MessageRouter.addRegistrator(MessageRouter.java:141)
    at tigase.server.MessageRouter.setConfig(MessageRouter.java:696)
    at tigase.server.XMPPServer.start(XMPPServer.java:142)
    at tigase.server.XMPPServer.main(XMPPServer.java:112)
Caused by: java.lang.ClassNotFoundException: tigase.component.AbstractComponent$ModuleRegisteredHandler
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at tigase.server.MessageRouterConfig.hasClassForServerComponent(MessageRouterConfig.java:514)
    at tigase.server.MessageRouterConfig.getMsgRcvActiveNames(MessageRouterConfig.java:351)
    at tigase.server.MessageRouter.setProperties(MessageRouter.java:759)
    at tigase.conf.ConfiguratorAbstract.setup(ConfiguratorAbstract.java:550)
    at tigase.conf.ConfiguratorAbstract.componentAdded(ConfiguratorAbstract.java:182)
    at tigase.conf.Configurator.componentAdded(Configurator.java:50)
    at tigase.conf.Configurator.componentAdded(Configurator.java:33)
    at tigase.server.AbstractComponentRegistrator.addComponent(AbstractComponentRegistrator.java:115)
    at tigase.server.MessageRouter.addRegistrator(MessageRouter.java:141)
    at tigase.server.MessageRouter.setConfig(MessageRouter.java:696)
    at tigase.server.XMPPServer.start(XMPPServer.java:142)
    at tigase.server.XMPPServer.main(XMPPServer.java:112)

Avatar?id=6098&size=32x32

Added by Bartosz Małkowski TigaseTeam over 4 years ago

But maybe first, before you use new version you turn on debug in current muc, then you show me log.

Avatar?id=6098&size=32x32

Added by Bartosz Małkowski TigaseTeam over 4 years ago

Then you can't use newest MUC component.

But!

I found that you send everything from single component JID:

to="muc-event-component@xxx.tld" from="test2@muc.xxx.tld/admin"

to="muc-event-component@xxx.tld" from="test2@muc.xxx.tld/slarsen"

You know that sending presence from the same JID to different nickname is treated as changing nickname (http://xmpp.org/extensions/xep-0045.html#changenick)?

Added by Steffen Larsen over 4 years ago

I see your point, but I think that you have misunderstood my logs then.

All of the above logs is from within the component (so everything that is sent to mud-event-component@xxx.tld).

So the first: to="muc-event-component@xxx.tld" from="test2@muc.xxx.tld/admin" is the component it self, that have just created a room and is getting a presence for that.

The second: to="muc-event-component@xxx.tld" from="test2@muc.xxx.tld/slarsen" is the presence the component can see, when the user slarsen@xxx.tld is joining the room and sends a presence to the component.

-I'll ship some more logging, from the MUC module with the debug enabled for that only.

PS: Is there any way to configure the room in the init.properties, so that every room that is created is pre-configured? or is it done in the admin/default.groovy script?

/Steffen

Avatar?id=6098&size=32x32

Added by Bartosz Małkowski TigaseTeam over 4 years ago

aha. OK.

Then the only way is to enable debug for muc and catch logs.

Added by Steffen Larsen over 4 years ago

ok. Here are some logs:

1) The component creating the test room and implicitly is joining it (getting admin as nick)

2014-07-30 07:59:39.589 [in_2-muc]         AbstractComponent.processPacket()  FINER:    Received: <presence from="muc-event-component@xxx.tld" to="test@muc.xxx.tld/admin"><x xmlns="http://jabber.org/protocol/muc"/></presence>
2014-07-30 07:59:39.592 [in_2-muc]         PresenceModule.process()           INFO:     Creating new room 'test@muc.xxx.tld' by user admin' <muc-event-component@xxx.tld>
2014-07-30 07:59:39.592 [in_2-muc]         InMemoryMucRepository.createNewRoom()  FINE: Creating new room 'test@muc.xxx.tld'
2014-07-30 07:59:39.596 [in_2-muc]         PresenceModule.processEntering()   FINEST:   Processing stanza <presence from="muc-event-component@xxx.tld" to="test@muc.xxx.tld/admin"><x xmlns="http://jabber.org/protocol/muc"/></presence>
2014-07-30 07:59:39.596 [in_2-muc]         PresenceModule.processEntering()   FINEST:   Occupant 'admin' <muc-event-component@xxx.tld> is entering room test@muc.xxx.tld as role=moderator, affiliation=owner
2014-07-30 07:59:39.597 [in_2-muc]         Ghostbuster2.add()                 FINE:     muc-event-component@xxx.tld registered in room test@muc.xxx.tld
2014-07-30 07:59:39.598 [in_2-muc]         Ghostbuster2.add()                 FINE:     Start observing muc-event-component@xxx.tld
2014-07-30 07:59:39.599 [in_2-muc]         AbstractComponent$1.write()        FINER:    Sent: <presence from="test@muc.xxx.tld/admin" to="muc-event-component@xxx.tld"><x xmlns="http://jabber.org/protocol/muc#user"><item role="moderator" nick="admin" affiliation="owner" jid="muc-event-component@xxx.tld"/><status code="110"/><status code="201"/></x></presence>
2014-07-30 07:59:39.599 [in_2-muc]         AbstractJDBCHistoryProvider.getHistoryMessages()  FINEST: Using DEFAULT selector: roomJID=test@muc.xxx.tld
2014-07-30 07:59:39.600 [in_0-livestation-SQS-component]  SQSComponent.processPacket()  INFO: GOT A packet to SQS comp: from=null, to=null, DATA=<presence from="test@muc.xxx.tld/admin" to="muc-event-component@xxx.tld"><x xmlns="http://jabber.org/protocol/muc#user"><item role="moderator" nick="admin" affiliation="owner" jid="muc-event-component@xxx.tld"/><status code="110"/><status code="201"/></x></presence>, SIZE=296, XMLNS=null, PRIORITY=HIGH, PERMISSION=NONE, TYPE=null
2014-07-30 07:59:39.601 [in_0-livestation-SQS-component]  StanzaHelper.configureRoom()  INFO: IQ configure room: from=null, to=test@muc.xxx.tld, DATA=<iq from="muc-event-component@xxx.tld" type="set" to="test@muc.xxx.tld"><query xmlns="http://jabber.org/protocol/muc#owner"><x type="submit" xmlns="jabber:x:data"/></query></iq>, SIZE=195, XMLNS=null, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=set
2014-07-30 07:59:39.603 [in_2-muc]         AbstractJDBCHistoryProvider.processResultSet()  FINEST: Select messages for muc-event-component@xxx.tld from room test@muc.xxx.tld
2014-07-30 07:59:39.603 [in_2-muc]         AbstractComponent$1.write()        FINER:    Sent: <message from="test@muc.xxx.tld" type="groupchat" to="muc-event-component@xxx.tld" xmlns="jabber:client"><body>Welcome! You created new Multi User Chat Room.</body></message>
2014-07-30 07:59:39.604 [in_2-muc]         AbstractComponent.processPacket()  FINER:    Received: <iq from="muc-event-component@xxx.tld" type="set" to="test@muc.xxx.tld"><query xmlns="http://jabber.org/protocol/muc#owner"><x type="submit" xmlns="jabber:x:data"/></query></iq>
2014-07-30 07:59:39.605 [in_0-livestation-SQS-component]  SQSComponent.processPacket()  INFO: GOT A packet to SQS comp: from=null, to=null, DATA=<message from="test@muc.xxx.tld" type="groupchat" to="muc-event-component@xxx.tld" xmlns="jabber:client"><body>Welcome! You created new Multi User Chat Room.</body></message>, SIZE=192, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=groupchat
2014-07-30 07:59:39.605 [in_2-muc]         Ghostbuster2.update()              FINER:    Update activity of muc-event-component@xxx.tld
2014-07-30 07:59:39.605 [in_0-livestation-SQS-component]  SQSComponent.processPacket()  INFO: Configuring room: test
2014-07-30 07:59:39.606 [in_0-livestation-SQS-component]  StanzaHelper.configureRoom()  INFO: IQ configure room: from=null, to=test@muc.xxx.tld, DATA=<iq from="muc-event-component@xxx.tld" type="set" to="test@muc.xxx.tld"><query xmlns="http://jabber.org/protocol/muc#owner"><x type="submit" xmlns="jabber:x:data"/></query></iq>, SIZE=195, XMLNS=null, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=set
2014-07-30 07:59:39.606 [in_2-muc]         AbstractComponent$1.write()        FINER:    Sent: <iq from="test@muc.xxx.tld" type="result" to="muc-event-component@xxx.tld"/>
2014-07-30 07:59:39.607 [in_0-livestation-SQS-component]  SQSComponent.processPacket()  INFO: GOT A packet to SQS comp: from=test@muc.xxx.tld, to=muc-event-component@xxx.tld, DATA=<iq from="test@muc.xxx.tld" type="result" to="muc-event-component@xxx.tld"/>, SIZE=94, XMLNS=null, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=result
2014-07-30 07:59:39.607 [in_2-muc]         AbstractComponent.processPacket()  FINER:    Received: <iq from="muc-event-component@xxx.tld" type="set" to="test@muc.xxx.tld"><query xmlns="http://jabber.org/protocol/muc#owner"><x type="submit" xmlns="jabber:x:data"/></query></iq>
2014-07-30 07:59:39.607 [in_0-livestation-SQS-component]  SQSComponent.processPacket()  INFO: RESULT from MUC ROOM :  test@muc.xxx.tld
2014-07-30 07:59:39.608 [in_2-muc]         Ghostbuster2.update()              FINER:    Update activity of muc-event-component@xxx.tld
2014-07-30 07:59:39.608 [in_0-livestation-SQS-component]  SQSComponent.processPacket()  INFO: RESULT Stanza received :  from=test@muc.xxx.tld, to=muc-event-component@xxx.tld, DATA=<iq from="test@muc.xxx.tld" type="result" to="muc-event-component@xxx.tld"/>, SIZE=94, XMLNS=null, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=result
2014-07-30 07:59:39.608 [in_2-muc]         AbstractComponent$1.write()        FINER:    Sent: <iq from="test@muc.xxx.tld" type="result" to="muc-event-component@xxx.tld"/>

2) slarsen@xxx.tld is joining the test room (and get slarsen as nick)

2014-07-30 08:00:27.783 [in_3-muc]         AbstractComponent.processPacket()  FINER:    Received: <iq id="aacaa" to="muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<query xmlns="http://jabber.org/protocol/disco#items"/>
</iq>
2014-07-30 08:00:27.783 [in_3-muc]         AbstractComponent$1.write()        FINER:    Sent: <iq id="aacaa" to="slarsen@xxx.tld/slarsen" from="muc.xxx.tld" type="result" xmlns="jabber:client"><query xmlns="http://jabber.org/protocol/disco#items"><item name="" jid="test@muc.xxx.tld"/></query></iq>
2014-07-30 08:00:29.000 [in_3-muc]         AbstractComponent.processPacket()  FINER:    Received: <iq id="aacba" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<query xmlns="http://jabber.org/protocol/disco#info"/>
</iq>
2014-07-30 08:00:29.000 [in_3-muc]         AbstractComponent$1.write()        FINER:    Sent: <iq id="aacba" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="result" xmlns="jabber:client"><query xmlns="http://jabber.org/protocol/disco#info"><identity name="" type="text" category="conference"/><feature var="http://jabber.org/protocol/muc"/><feature var="muc_semianonymous"/><feature var="muc_unmoderated"/><feature var="muc_open"/><feature var="muc_temporary"/><feature var="muc_public"/><feature var="muc_unsecured"/></query></iq>
2014-07-30 08:00:29.003 [in_3-muc]         AbstractComponent.processPacket()  FINER:    Received: <iq id="aacca" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<query xmlns="http://jabber.org/protocol/disco#info"/>
</iq>
2014-07-30 08:00:29.004 [in_3-muc]         AbstractComponent$1.write()        FINER:    Sent: <iq id="aacca" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="result" xmlns="jabber:client"><query xmlns="http://jabber.org/protocol/disco#info"><identity name="" type="text" category="conference"/><feature var="http://jabber.org/protocol/muc"/><feature var="muc_semianonymous"/><feature var="muc_unmoderated"/><feature var="muc_open"/><feature var="muc_temporary"/><feature var="muc_public"/><feature var="muc_unsecured"/></query></iq>
2014-07-30 08:00:30.217 [in_3-muc]         AbstractComponent.processPacket()  FINER:    Received: <iq id="aacda" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<query xmlns="http://jabber.org/protocol/disco#items"/>
</iq>
2014-07-30 08:00:30.218 [in_3-muc]         AbstractComponent.processStanzaPacket()  FINEST: XMPP error condition: forbidden generated by tigase.muc.modules.DiscoItemsModule.process(DiscoItemsModule.java:172)  when processing from=sess-man@zooldk.local, to=null, DATA=<iq id="aacda" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<query xmlns="http://jabber.org/protocol/disco#items"/>
</iq>, SIZE=175, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=ADMIN, TYPE=get
2014-07-30 08:00:30.218 [in_3-muc]         AbstractComponent.sendException()  FINEST:   Sending back: from=test@muc.xxx.tld, to=sess-man@zooldk.local, DATA=<iq id="aacda" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="error" xmlns="jabber:client"><query xmlns="http://jabber.org/protocol/disco#items"/><error type="auth" code="403"><forbidden xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>, SIZE=269, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=error
2014-07-30 08:00:30.219 [in_3-muc]         AbstractComponent$1.write()        FINER:    Sent: <iq id="aacda" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="error" xmlns="jabber:client"><query xmlns="http://jabber.org/protocol/disco#items"/><error type="auth" code="403"><forbidden xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
2014-07-30 08:00:30.221 [in_3-muc]         AbstractComponent.processPacket()  FINER:    Received: <iq id="aacea" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<item xmlns="jabber:iq:browse"/>
</iq>
2014-07-30 08:00:30.222 [in_3-muc]         AbstractComponent.processStanzaPacket()  FINEST: XMPP error condition: feature-not-implemented generated by tigase.component.AbstractComponent.processStanzaPacket(AbstractComponent.java:244)  when processing from=sess-man@zooldk.local, to=null, DATA=<iq id="aacea" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<item xmlns="jabber:iq:browse"/>
</iq>, SIZE=152, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=ADMIN, TYPE=get
2014-07-30 08:00:30.222 [in_3-muc]         AbstractComponent.sendException()  FINEST:   Sending back: from=test@muc.xxx.tld, to=sess-man@zooldk.local, DATA=<iq id="aacea" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="error" xmlns="jabber:client"><item xmlns="jabber:iq:browse"/><error type="cancel" code="501"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>, SIZE=262, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=error
2014-07-30 08:00:30.222 [in_3-muc]         AbstractComponent$1.write()        FINER:    Sent: <iq id="aacea" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="error" xmlns="jabber:client"><item xmlns="jabber:iq:browse"/><error type="cancel" code="501"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
2014-07-30 08:00:30.234 [in_3-muc]         AbstractComponent.processPacket()  FINER:    Received: <iq id="aacfa" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<query xmlns="jabber:iq:agents"/>
</iq>
2014-07-30 08:00:30.234 [in_3-muc]         AbstractComponent.processStanzaPacket()  FINEST: XMPP error condition: feature-not-implemented generated by tigase.component.AbstractComponent.processStanzaPacket(AbstractComponent.java:244)  when processing from=sess-man@zooldk.local, to=null, DATA=<iq id="aacfa" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<query xmlns="jabber:iq:agents"/>
</iq>, SIZE=153, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=ADMIN, TYPE=get
2014-07-30 08:00:30.234 [in_3-muc]         AbstractComponent.sendException()  FINEST:   Sending back: from=test@muc.xxx.tld, to=sess-man@zooldk.local, DATA=<iq id="aacfa" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="error" xmlns="jabber:client"><query xmlns="jabber:iq:agents"/><error type="cancel" code="501"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>, SIZE=263, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=error
2014-07-30 08:00:30.235 [in_3-muc]         AbstractComponent$1.write()        FINER:    Sent: <iq id="aacfa" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="error" xmlns="jabber:client"><query xmlns="jabber:iq:agents"/><error type="cancel" code="501"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
2014-07-30 08:00:37.183 [hostnames]        UserRepoRepository.reload()        CONFIG:   All loaded items: {braintrust.dk=Domain: braintrust.dk, enabled: true, anonym: true, register: true, maxusers: 0, tls: false, s2sSecret: null, domainFilter: ALL, livestation.com=Domain: livestation.com, enabled: true, anonym: true, register: true, maxusers: 0, tls: false, s2sSecret: null, domainFilter: ALL}

2014-07-30 08:00:54.397 [in_3-muc]         AbstractComponent.processPacket()  FINER:    Received: <presence to="test@muc.xxx.tld/slarsen" from="slarsen@xxx.tld/slarsen" xmlns="jabber:client">
<priority>5</priority>
<c ver="caps-b75d8d2b25" ext="ca cs ep-notify-2 html" node="http://psi-im.org/caps" xmlns="http://jabber.org/protocol/caps"/>
<x xmlns="http://jabber.org/protocol/muc"/>
<x xmlns="vcard-temp:x:update">
<photo>0286542b9e69b832ede2798aca59d7e83e8aa81e</photo>
</x>
</presence>
2014-07-30 08:00:54.397 [in_3-muc]         PresenceModule.processEntering()   FINEST:   Processing stanza <presence to="test@muc.xxx.tld/slarsen" from="slarsen@xxx.tld/slarsen" xmlns="jabber:client">
<priority>5</priority>
<c ver="caps-b75d8d2b25" ext="ca cs ep-notify-2 html" node="http://psi-im.org/caps" xmlns="http://jabber.org/protocol/caps"/>
<x xmlns="http://jabber.org/protocol/muc"/>
<x xmlns="vcard-temp:x:update">
<photo>0286542b9e69b832ede2798aca59d7e83e8aa81e</photo>
</x>
</presence>
2014-07-30 08:00:54.397 [in_3-muc]         AbstractComponent$1.write()        FINER:    Sent: <presence from="test@muc.xxx.tld/admin" to="slarsen@xxx.tld/slarsen"><x xmlns="http://jabber.org/protocol/muc#user"><item role="moderator" nick="admin" affiliation="owner"/></x></presence>
2014-07-30 08:00:54.397 [in_3-muc]         PresenceModule.processEntering()   FINEST:   Occupant 'slarsen' <slarsen@xxx.tld/slarsen> is entering room test@muc.xxx.tld as role=participant, affiliation=none
2014-07-30 08:00:54.397 [in_3-muc]         Ghostbuster2.add()                 FINE:     slarsen@xxx.tld/slarsen registered in room test@muc.xxx.tld
2014-07-30 08:00:54.398 [in_3-muc]         Ghostbuster2.add()                 FINE:     Start observing slarsen@xxx.tld/slarsen
2014-07-30 08:00:54.398 [in_3-muc]         AbstractComponent$1.write()        FINER:    Sent: <presence to="muc-event-component@xxx.tld" from="test@muc.xxx.tld/slarsen" xmlns="jabber:client">
<priority>5</priority>
<c ver="caps-b75d8d2b25" ext="ca cs ep-notify-2 html" node="http://psi-im.org/caps" xmlns="http://jabber.org/protocol/caps"/>

<x xmlns="vcard-temp:x:update">
<photo>0286542b9e69b832ede2798aca59d7e83e8aa81e</photo>
</x>
<x xmlns="http://jabber.org/protocol/muc#user"><item role="participant" nick="slarsen" affiliation="none" jid="slarsen@xxx.tld/slarsen"/></x></presence>
2014-07-30 08:00:54.398 [in_3-muc]         AbstractComponent$1.write()        FINER:    Sent: <presence to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld/slarsen" xmlns="jabber:client">
<priority>5</priority>
<c ver="caps-b75d8d2b25" ext="ca cs ep-notify-2 html" node="http://psi-im.org/caps" xmlns="http://jabber.org/protocol/caps"/>

<x xmlns="vcard-temp:x:update">
<photo>0286542b9e69b832ede2798aca59d7e83e8aa81e</photo>
</x>
<x xmlns="http://jabber.org/protocol/muc#user"><item role="participant" nick="slarsen" affiliation="none"/><status code="110"/></x></presence>
2014-07-30 08:00:54.398 [in_0-livestation-SQS-component]  SQSComponent.processPacket()  INFO: GOT A packet to SQS comp: from=null, to=null, DATA=<presence to="muc-event-component@xxx.tld" from="test@muc.xxx.tld/slarsen" xmlns="jabber:client">
<priority>5</priority>
<c ver="caps-b75d8d2b25" ext="ca cs ep-notify-2 html" node="http://psi-im.org/caps" xmlns="http://jabber.org/protocol/caps"/>

<x xmlns="vcard-temp:x:update">
<photo>0286542b9e69b832ede2798aca59d7e83e8aa81e</photo>
</x>
<x xmlns="http://jabber.org/protocol/muc#user"><item role="participant" nick="slarsen" affiliation="none" jid="slarsen@xxx.tld/slarsen"/></x></presence>, SIZE=517, XMLNS=jabber:client, PRIORITY=PRESENCE, PERMISSION=NONE, TYPE=null
2014-07-30 08:00:54.398 [in_3-muc]         AbstractJDBCHistoryProvider.getHistoryMessages()  FINEST: Using DEFAULT selector: roomJID=test@muc.xxx.tld

3) component (admin nick) trying to kick the slarsen (nick) user

2014-07-30 08:01:31.459 [in_1-muc]         AbstractComponent.processPacket()  FINER:    Received: <iq from="muc-event-component@xxx.tld/admin" type="set" to="test@muc.xxx.tld"><query xmlns="http://jabber.org/protocol/muc#admin"><item role="none" nick="slarsen"/></query></iq>
2014-07-30 08:01:31.461 [in_1-muc]         AbstractComponent.processStanzaPacket()  FINEST: XMPP error condition: not-allowed with message: "You cannot kick" generated by tigase.muc.modules.ModeratorModule.checkItem(ModeratorModule.java:113)  when processing from=muc-event-component@xxx.tld, to=test@muc.xxx.tld, DATA=<iq from="muc-event-component@xxx.tld/admin" type="set" to="test@muc.xxx.tld"><query xmlns="http://jabber.org/protocol/muc#admin"><item role="none" nick="slarsen"/></query></iq>, SIZE=195, XMLNS=null, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=set
2014-07-30 08:01:31.462 [in_1-muc]         AbstractComponent.sendException()  FINEST:   Sending back: from=test@muc.xxx.tld, to=muc-event-component@xxx.tld, DATA=<iq from="test@muc.xxx.tld" type="error" to="muc-event-component@xxx.tld/admin"><query xmlns="http://jabber.org/protocol/muc#admin"><item role="none" nick="slarsen"/></query><error type="cancel" code="405"><not-allowed xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xml:lang="en" xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">You cannot kick</text></error></iq>, SIZE=381, XMLNS=null, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=error
2014-07-30 08:01:31.462 [in_1-muc]         AbstractComponent$1.write()        FINER:    Sent: <iq from="test@muc.xxx.tld" type="error" to="muc-event-component@xxx.tld/admin"><query xmlns="http://jabber.org/protocol/muc#admin"><item role="none" nick="slarsen"/></query><error type="cancel" code="405"><not-allowed xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xml:lang="en" xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">You cannot kick</text></error></iq>
Avatar?id=6098&size=32x32

Added by Bartosz Małkowski TigaseTeam over 4 years ago

I can't see what is wrong.

It is possible to upgrade whole Tigase to latest version?

We don't want to support older versions.

Added by Steffen Larsen over 4 years ago

Hi,

Sure I can try to upgrade to master or develop branch, but I am running 5.2.1 which should be considered the latest stable one, right?

I just noticed some errors when the user (slarsen) joins in #2:

2014-07-30 08:00:27.783 [in_3-muc]         AbstractComponent.processPacket()  FINER:    Received: <iq id="aacaa" to="muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<query xmlns="http://jabber.org/protocol/disco#items"/>
</iq>
2014-07-30 08:00:27.783 [in_3-muc]         AbstractComponent$1.write()        FINER:    Sent: <iq id="aacaa" to="slarsen@xxx.tld/slarsen" from="muc.xxx.tld" type="result" xmlns="jabber:client"><query xmlns="http://jabber.org/protocol/disco#items"><item name="" jid="test@muc.xxx.tld"/></query></iq>
2014-07-30 08:00:29.000 [in_3-muc]         AbstractComponent.processPacket()  FINER:    Received: <iq id="aacba" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<query xmlns="http://jabber.org/protocol/disco#info"/>
</iq>
2014-07-30 08:00:29.000 [in_3-muc]         AbstractComponent$1.write()        FINER:    Sent: <iq id="aacba" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="result" xmlns="jabber:client"><query xmlns="http://jabber.org/protocol/disco#info"><identity name="" type="text" category="conference"/><feature var="http://jabber.org/protocol/muc"/><feature var="muc_semianonymous"/><feature var="muc_unmoderated"/><feature var="muc_open"/><feature var="muc_temporary"/><feature var="muc_public"/><feature var="muc_unsecured"/></query></iq>
2014-07-30 08:00:29.003 [in_3-muc]         AbstractComponent.processPacket()  FINER:    Received: <iq id="aacca" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<query xmlns="http://jabber.org/protocol/disco#info"/>
</iq>
2014-07-30 08:00:29.004 [in_3-muc]         AbstractComponent$1.write()        FINER:    Sent: <iq id="aacca" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="result" xmlns="jabber:client"><query xmlns="http://jabber.org/protocol/disco#info"><identity name="" type="text" category="conference"/><feature var="http://jabber.org/protocol/muc"/><feature var="muc_semianonymous"/><feature var="muc_unmoderated"/><feature var="muc_open"/><feature var="muc_temporary"/><feature var="muc_public"/><feature var="muc_unsecured"/></query></iq>
2014-07-30 08:00:30.217 [in_3-muc]         AbstractComponent.processPacket()  FINER:    Received: <iq id="aacda" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<query xmlns="http://jabber.org/protocol/disco#items"/>
</iq>
2014-07-30 08:00:30.218 [in_3-muc]         AbstractComponent.processStanzaPacket()  FINEST: XMPP error condition: forbidden generated by tigase.muc.modules.DiscoItemsModule.process(DiscoItemsModule.java:172)  when processing from=sess-man@zooldk.local, to=null, DATA=<iq id="aacda" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<query xmlns="http://jabber.org/protocol/disco#items"/>
</iq>, SIZE=175, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=ADMIN, TYPE=get
2014-07-30 08:00:30.218 [in_3-muc]         AbstractComponent.sendException()  FINEST:   Sending back: from=test@muc.xxx.tld, to=sess-man@zooldk.local, DATA=<iq id="aacda" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="error" xmlns="jabber:client"><query xmlns="http://jabber.org/protocol/disco#items"/><error type="auth" code="403"><forbidden xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>, SIZE=269, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=error
2014-07-30 08:00:30.219 [in_3-muc]         AbstractComponent$1.write()        FINER:    Sent: <iq id="aacda" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="error" xmlns="jabber:client"><query xmlns="http://jabber.org/protocol/disco#items"/><error type="auth" code="403"><forbidden xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
2014-07-30 08:00:30.221 [in_3-muc]         AbstractComponent.processPacket()  FINER:    Received: <iq id="aacea" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<item xmlns="jabber:iq:browse"/>
</iq>
2014-07-30 08:00:30.222 [in_3-muc]         AbstractComponent.processStanzaPacket()  FINEST: XMPP error condition: feature-not-implemented generated by tigase.component.AbstractComponent.processStanzaPacket(AbstractComponent.java:244)  when processing from=sess-man@zooldk.local, to=null, DATA=<iq id="aacea" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<item xmlns="jabber:iq:browse"/>
</iq>, SIZE=152, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=ADMIN, TYPE=get
2014-07-30 08:00:30.222 [in_3-muc]         AbstractComponent.sendException()  FINEST:   Sending back: from=test@muc.xxx.tld, to=sess-man@zooldk.local, DATA=<iq id="aacea" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="error" xmlns="jabber:client"><item xmlns="jabber:iq:browse"/><error type="cancel" code="501"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>, SIZE=262, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=error
2014-07-30 08:00:30.222 [in_3-muc]         AbstractComponent$1.write()        FINER:    Sent: <iq id="aacea" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="error" xmlns="jabber:client"><item xmlns="jabber:iq:browse"/><error type="cancel" code="501"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
2014-07-30 08:00:30.234 [in_3-muc]         AbstractComponent.processPacket()  FINER:    Received: <iq id="aacfa" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<query xmlns="jabber:iq:agents"/>
</iq>
2014-07-30 08:00:30.234 [in_3-muc]         AbstractComponent.processStanzaPacket()  FINEST: XMPP error condition: feature-not-implemented generated by tigase.component.AbstractComponent.processStanzaPacket(AbstractComponent.java:244)  when processing from=sess-man@zooldk.local, to=null, DATA=<iq id="aacfa" to="test@muc.xxx.tld" from="slarsen@xxx.tld/slarsen" type="get" xmlns="jabber:client">
<query xmlns="jabber:iq:agents"/>
</iq>, SIZE=153, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=ADMIN, TYPE=get
2014-07-30 08:00:30.234 [in_3-muc]         AbstractComponent.sendException()  FINEST:   Sending back: from=test@muc.xxx.tld, to=sess-man@zooldk.local, DATA=<iq id="aacfa" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="error" xmlns="jabber:client"><query xmlns="jabber:iq:agents"/><error type="cancel" code="501"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>, SIZE=263, XMLNS=jabber:client, PRIORITY=NORMAL, PERMISSION=NONE, TYPE=error
2014-07-30 08:00:30.235 [in_3-muc]         AbstractComponent$1.write()        FINER:    Sent: <iq id="aacfa" to="slarsen@xxx.tld/slarsen" from="test@muc.xxx.tld" type="error" xmlns="jabber:client"><query xmlns="jabber:iq:agents"/><error type="cancel" code="501"><feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
2014-07-30 08:00:37.183 [hostnames]        UserRepoRepository.reload()        CONFIG:   All loaded items: {braintrust.dk=Domain: braintrust.dk, enabled: true, anonym: true, register: true, maxusers: 0, tls: false, s2sSecret: null, domainFilter: ALL, livestation.com=Domain: livestation.com, enabled: true, anonym: true, register: true, maxusers: 0, tls: false, s2sSecret: null, domainFilter: ALL}

Do you have any idea why they come?

And do you know how I can pre configure the room?? can I do it in the init.property file or in the default.groovy script?. I do not want to do it every time I create a room. :-)

-Cheers!

/Steffen

Avatar?id=6023&size=32x32

Added by Artur Hefczyc TigaseTeam over 4 years ago

Bartosz Malkowski wrote:

We don't want to support older versions.

Bartosz, 5.2.1 is not an older version. It is our latest stable which we fully support. We will issue a big fixes if necessary for this version.

Avatar?id=6098&size=32x32

Added by Bartosz Małkowski TigaseTeam over 4 years ago

Oops. Sorry. I though we have newest one.

Then I will create branch and add debug code.

Added by Steffen Larsen over 4 years ago

No problem :-)

I have tried to reproduce my scenario in pure PSI with two users. One is creating the chat and is implicitly an owner and another one joining, and that is working fine.

So there must be something in my component that I am doing wrong.

/Steffen

Added by Steffen Larsen over 4 years ago

I would really really appreciate if you could study the logs that I am producing via. the component vs. the one that are produced via. a normal user that creates a MUC.

/Steffen

Avatar?id=6098&size=32x32

Added by Bartosz Małkowski TigaseTeam over 4 years ago

Sure. I can.

You want to attach logs here or you want to send it to me via mail?

Added by Steffen Larsen over 4 years ago

Hi Bartosz,

Is it ok to send it to you by email?. I don't have your email, but I believe that Artur have mine. Neither of us prob. want to leave our email address here in the forum, right?

PS: Thanks for your help so far. Im really stuck at this permission problem!

/Steffen

Added by Steffen Larsen over 4 years ago

Just a heads ok.

Everything is now fixed.

The problem was the resource. So either removing them or setting the same resource on the component fixed it.

Thanks for all the help Bartosz! :-)

/Steffen

    (1-18/18)