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


  • ADMIN

    @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?


  • ADMIN

    @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?


  • ADMIN

    @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.


  • ADMIN

    @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/+/+/+/+/+```

  • ADMIN

    @saturn

    house-out/#, house-in/#
    

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


 

Suggested Topics

6
Online

377
Users

356
Topics

2.1k
Posts