Client does not have read permissions
-
Hello.
I have created the role "mqtt" as at attached screenshot.
User "house" is the member or the "mqtt" role.
I have created the gateway "House" with settings as at attached screenshot.
When I try to enable this gateway, I get the following in the log:2018-05-24 15:23:41,517 ERROR [nioEventLoopGroup-3-12] [io.moquette.spi.impl.ProtocolProcessor:851] Client does not have read permissions on the topic CId=house-mqtt-client_44gNx, username=house, messageId=1, topic=house-out/#
What's my mistake?
-
@saturn on the role you should add
/#
as follows,- Topics publish:
house-in/#, house-out/#
- Topics subscribe:
house-in/#, house-out/#
- Topics publish:
-
Thank you.
It's working now.
Is it posible to use mask or regexp for topics in the role? -
Is it possible to use mask or regexp for topics in the role?
I hope it should,
You can see the actual code here.
// _topic: defined in role // topic: recived from client _topic = _topic.replaceAll("\\+", "\\\\w+").replaceAll("#", "\\.*"); if (topic.matches(_topic)) { return true; }
This code replaces,
+
to\w+
(Example:house-out/+/+/+
becomes ashouse-out/\w+/\w+/\w+
)#
to.*
(Example:house-out/#
becomes ashouse-out/.*
)
And finally matches the received topic from the client(matches as a regular expression).
So your regular expression on the role might work. (if it does not have
+
and#
symbol) -
I have got error again:
2018-05-30 00:14:40,149 ERROR [nioEventLoopGroup-8-10] [io.moquette.spi.impl.ProtocolProcessor:851] Client does not have read permissions on the topic CId=house-1, username=house, messageId=2, topic=house-in/+/+/+/+/+
My options not help:
Topics publishhouse-in, house-in/#, house-in/+/+/+/+/+, house-in/\w+/\w+/\w+/\w+/\w+, house-out/+/+/+/+/+, house-out/\w+/\w+/\w+/\w+/\w+
Topics subscribe
house-out, house-out/#, house-out/+/+/+/+/+, house-out/\w+/\w+/\w+/\w+/\w+, house-in/+/+/+/+/+, house-in/\w+/\w+/\w+/\w+/\w+
What I do wrong again?
-
@saturn Use
+
or#
only.use only
house-in/#, house-out/#
will cover everything.Can you elaborate how you want to control topic? I can give some examples.
-
When I use only "house-in/#, house-out/#" in "Topics publish" and "Topics subscribe" I get the same error:
ERROR [nioEventLoopGroup-8-10] [io.moquette.spi.impl.ProtocolProcessor:851] Client does not have read permissions on the topic CId=house-1, username=house, messageId=2, topic=house-in/+/+/+/+/+
I want to control MySensors network by sending data to the "house-in" and get statistic and status information from "house-out".
-
May be I misunderstand you.
I think you mean that, I should use+
instead of
\w+
and
#
instead of
.*
in role's settings.
But my problems with read permissions was resolved only when I addhouse-out/.*, house-in/.*
to the role's settings.
Thank you for your help. -
-
@jkandasa
Withhouse-out/#, house-in/#
I get
Client does not have read permissions on the topic CId=house-1, username=house, messageId=2, topic=house-in/+/+/+/+/+```
-
house-out/#, house-in/#
You should add this to both subscribe and publish topics. Can you show your MQTT client code?