物联网架构成长之路(7)-EMQ权限验证小结
1. 前言
经过前面几小节,讲了一下插件开发,这一小节主要对一些代码和目录结构进行讲解,这些都是测试过程中一些个人经验,不一定是官方做法。而且也有可能会因为版本不一致导致差异。
2. 目录结构

这个目录结构整体就是从 emq-plugin-template 复制一份过来的,然后修改。
.erlang.mk 这个是编译过程的临时文件,不用管
.git 这个是源代码版本管理,不用管
data 一些系统数据文件,不用管
deps 这个是在make编译的时候,自动下载一些依赖包,不用管
ebin 这个是编译后的二进制文件,不用管
etc 这个是配置文件,EMQ2.0版本后,采用K=V配置形式进行配置
include 这个是插件用到的一些头文件子类的
priv 这个是用来描述etc配置目录下的配置文件,这个是因为Erlang配置文件不是现在流行的K=V形式,所以需要用到priv这个目录。
src 这个是业务逻辑源代码目录
test 这个是单元测试代码,这里暂时不用管
.gitignore 这个是git的文件,不用管
emq_plugin_wunaozai.d 这个是自动生成的文件,不用管
erlang.mk 默认,不用管
LICENSE 不用管
Makefile 需要配置
README.md 默认,不用管
rebar.config 需要增加依赖
3. etc目录
该目录下有 emq_plugin_wunaozai.conf 文件,主要配置一些插件用到的配置信息。

4. include 目录
该目录下有 emq_plugin_wunaozai.hrl 头文件

5. priv 目录
主要参考templates,就是配置一些参数

6. test 目录
这个暂时就不管了。

7. Makefile 文件配置
这个是修改后的Makefile, 主要是增加了Redis依赖,eredis驱动,ecpool连接池等。后面也增加了copy命令,方便开发,这个根据个人习惯。

8. rebar.config 文件配置
增加redis依赖

9. src 目录
暂时有8个文件,每个文件都有其具体用处。
emq_acl_demo_wunaozai.erl 这个文件主要是验证一些ACL权限问题。重写check_ac方法即可完成ACL验证。

emq_auth_demo_wunaozai.erl 这个文件就是对帐号密码进行验证。重写check方法即可。

emq_cli_demo_wunaozai.erl 这个文件主要是提供一些命令行emqttd_clt 一些参数设置之类的。
emq_plugin_wunaozai.erl 这个文件主要是一些钩子Hook的实现,这个后面做数据搜集会用到。
emq_plugin_wunaozai_app.erl 这个文件还是比较重要的,是插件application的入口函数,if_cmd_enabled这个函数用来判断配置文件中是否有开启auth_cmd/auth_acl配置项,如果有配置项的,那就加载对应的功能,如下图所示

emq_plugin_wunaozai_cli.erl 这个从emq_auth_redis复制过来,改一下-module -behaviour - include 之类的,如图中注释的19-20行,那个是我测试一下是否连接到Redis的,可以看出,在创建连接是,会主动建立8个连接,建立连接池,应该是开启的。

emq_plugin_wunaozai_config.erl 直接从emq_auth_redis复制过来,基本不用怎么修改,修改个-model -include 如果keys() -> 配置信息的key有修改的,在86行处也要做相应的修改。
emq_plugin_wunaozai_sup.erl 在第19行处,增加Redis连接池。

10. 运行效果
./_rel/emqttd/bin/emqttd console 启动mqtt服务器,修改cache ./_rel/emqttd/etc/emq.conf 改为 mqtt.cache_acl = false
往Redis设置数据
127.0.0.1:> HMSET mqtt_user:test password test
OK
127.0.0.1:> HSET mqtt_acl:test /OK
(integer)

连接,帐号密码在选项页那里填。上图,可以看到连接成功,然后订阅,失败,失败的原因是,ACL验证失败。在redis上设置
HSET mqtt_acl:test /OK

可以看到,可以正常订阅了,但是发布,还是不行,没有收到,所以要在Redis上设置
HSET mqtt_acl:test /OK

这样就可以收发数据了。注意要实现上述测试,要把mqtt_cache 设置为 false,默认emqttd会设置为true,这样emqttd只会在第一次进行ACL验证。
下面这个是所有emqttd console打印的信息

物联网架构成长之路(7)-EMQ权限验证小结的更多相关文章
- 物联网架构成长之路(6)-EMQ权限控制
1. 前言 EMQTT属于一个比较小众的开源软件,很多资料不全,很麻烦,很多功能都是靠猜测,还有就是看官方提供的那几个插件,了解. 2. 说明 上一小节的插件 emq_plugin_wunaozai ...
- 物联网架构成长之路(31)-EMQ基于HTTP权限验证
看过之前的文章就知道,我之前是通过搞插件,或者通过里面的MongoDB来进行EMQ的鉴权登录和权限验证.但是前段时间发现,还是通过HTTP WebHook 方式来调用鉴权接口比较适合实际使用.还是实现 ...
- 物联网架构成长之路(33)-EMQ数据存储到influxDB
一.前言 时隔一年半,技术变化特别快,学习也要跟上才行.以前写过EMQ数据转存问题,当时用了比较笨的方法,通过写插件的方式,把MQTT里面的数据发送到数据库进行存储.当时也是为了学习erlang和em ...
- 物联网架构成长之路(3)-EMQ消息服务器了解
1. 了解 物联网最基础的就是通信了.通信协议,物联网协议好像有那么几个,以前各个协议都有优劣,最近一段时间,好像各大厂商都采用MQTT协议,所以我也不例外,不搞特殊,采用MQTT协议,选定了协议,接 ...
- 物联网架构成长之路(4)-EMQ插件创建
1. 说明 以下用到的知识,是建立在我目前所知道的知识领域,以后如果随着知识的拓展,不一定会更新内容.由于不是EMQ公司的人,EMQ的文档又很少,很多知识点都是靠猜的.2. 一些资料 架构设计 htt ...
- 物联网架构成长之路(5)-EMQ插件配置
1. 前言 上一小结说了插件的创建,这一节主要怎么编写代码,以及具体流程之类的.2. 增加一句Hello World 修改 ./deps/emq_plugin_wunaozai/src/emq_plu ...
- 物联网架构成长之路(25)-Docker构建项目用到的镜像1
0. 前言 现在项目处于初级阶段,按照规划,先构建几个以后可能会用到的Image,并上传到阿里云的Docker仓库.以后博客中用到的Image,大部分都会用到这几个基础的Image,构建一个简单的物联 ...
- 物联网架构成长之路(11)-Redis缓存主从复制
1. 说明 在我的物联网平台框架框架中,会用到Redis这个中间件.作为EMQ权限认证的缓存.https://www.cnblogs.com/think-in-java/p/5123884.html ...
- 物联网架构成长之路(16)-SpringCloud从入门到吹水
1.前言 Spring Cloud 现在比较流行,版本更新也是蛮快的,网上资料也是很多.很多参考网上资料就可以学到了.这里给个 http://blog.csdn.net/forezp/article/ ...
随机推荐
- dijkstra基础
#include<iostream> #include<queue> #include<cstdio> #include<cstring> #inclu ...
- 091实战 Nginx配置(日志服务器中关于日志的产生)
一:概括 1.需要配置的概括 定义日志格式 日志的分割字段:^A 日志格式:IP地址^A服务器时间^A请求参数 配置location,记录请求日志到本地磁盘 将数据按照给定的日志格式存储到本地磁盘 二 ...
- 树莓派(Raspbian系统)中使用pyinstaller封装Python代码为可执行程序
一.前言 将做好的Python软件运行在树莓派上时,不想公开源码,就需要对文件进行封装(或称打包),本文主要介绍使用pyinstaller封装Python代码为可执行程序. Python是一个脚本语言 ...
- JS高级-原型等概念深入理解
一 数据类型: 基本(值)数据类型: string number undefined null boolean 对象(引用)类型 [ 查找对象的属性时,会查找原型链 设置属性时,一般在构造函数里面设置 ...
- VUE 打包后关于 -webkit-box-orient: vertical; 消失,导致多行溢出不管用问题
VUE 打包后 -webkit-box-orient: vertical; 样式消失,导致页面样式爆炸,看了看解决方案,在这里总结一下: 实际上是 optimize-css-assets-webpac ...
- window配置右键菜单
window配置右键菜单 cmd -> regeidt :打开注册表 文件右键 依次点开HKEY_CLASSES_ROOT ---> * ---> shell. 右键shell,新建 ...
- 4923: [Lydsy1706月赛]K小值查询 平衡树 非旋转Treap
国际惯例的题面:这种维护排序序列,严格大于的进行操作的题都很套路......我们按照[0,k],(k,2k],(2k,inf)分类讨论一下就好.显然第一个区间的不会变化,第二个区间的会被平移进第一个区 ...
- POJ.2065.SETI(高斯消元 模线性方程组)
题目链接 \(Description\) 求\(A_0,A_1,A_2,\cdots,A_{n-1}\),满足 \[A_0*1^0+A_1*1^1+\ldots+A_{n-1}*1^{n-1}\equ ...
- linux命令(及解压tar.gz文件)
https://wenku.baidu.com/view/f5805017866fb84ae45c8df3.html 1.压缩命令: 命令格式:tar -zcvf 压缩文件名.tar.gz ...
- iOS主流机型更新
主流机型更新后,舍弃了原有的iPhone 4 ,iPhone 4s, iPhone 5 ,iPhone 5s.增加了iPhone X,iPhone 8和iPhone 8 plus. 总体上屏幕趋于一个 ...