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?
    1_1527168004512_gateway.png 0_1527168004511_role.png



  • @saturn on the role you should add /# as follows,

    • Topics publish: house-in/#, house-out/#
    • Topics subscribe: house-in/#, house-out/#


  • Thank you.
    It's working now.
    Is it posible to use mask or regexp for topics in the role?



  • @saturn

    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 as house-out/\w+/\w+/\w+)
    • # to .* (Example: house-out/# becomes as house-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 publish

    house-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 add

    house-out/.*, house-in/.*
    

    to the role's settings.
    Thank you for your help.



  • @saturn

    This one does not work for you?

    house-out/#, house-in/#
    


  • @jkandasa
    With

    house-out/#, house-in/#
    

    I get

    Client does not have read permissions on the topic CId=house-1, username=house, messageId=2, topic=house-in/+/+/+/+/+```


  • @saturn

    house-out/#, house-in/#
    

    You should add this to both subscribe and publish topics. Can you show your MQTT client code?


Log in to reply
 

Suggested Topics

10
Online

527
Users

430
Topics

2.7k
Posts