修改mosquitto-auth-plug的Redis支持模块

修改


mosquitto-auth-plug支持Redis数据库,但是没有mysql模块支持的功能全面。
README.md里说如果使用Redis数据库,将不支持superusers和acl权限控制功能不支持(+/#)通配符,这真的太愚蠢了。

如果一个用户属于superusers,表示这个用户是超级用户,不受acl权限模块控制,这个功能挺有用。而且看mysql的数据库表结构,其实只是多了一个字段标识是否为super而已,使用redis实现也很简单啊,在value最后加一个标识即可。

代码中getuser函数使用了Redis的GET命令,换成哈希存储会更节省内存,最重要的是哈希只有一个key,更好管理。

然后README.md里说acl权限不支持通配符也是乱来,我试了一下Redis的键名和哈希字段都可以包含+和#,所以直接在数据库里写包含通配符的topic根本没问题!

所以打开be-redis.c,根本没几行代码,自己动手加上superusers和把getusers里的GET改为HGET,当然一定要用GET也可以,用键的好处是可以设置过期时间。
存储密码时在密码最后加个:1来标识superuser。或者把superusers跟普通用户分开单独存储。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,172评论 6 13
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,446评论 25 708
  • 今天一早就被窗外噼里啪啦的鞭炮声、锣鼓声震醒了,看看日历,八月初八,果然是个好日子啊,扎堆结婚了。一片喜气洋洋甚是...
    Cesttoi阅读 250评论 0 0
  • 家里搞卫生时,翻出了一个红色的兼收音与放磁带功能的收录机,应该叫收录机吧。看到它,立刻让我想到了很久以前我独自住在...
    如雨随行阅读 431评论 0 0