修改emqtt中auth-mysql插件

来源:互联网 发布:华师网络教育平台 编辑:程序博客网 时间:2024/06/05 16:21

初步修改代码,将其中的emq改为自己公司的名字,以下假设为abc;

非常简单的方法是找到所有文件中的“emq”改为“abc”就行了,然后在make的时候查看哪里出错改哪里;


auth-mysql插件位置在这里;

先git clone到本地,使用eclipse+erlide插件打开,erlang环境的配置不多说,eclipse+erlide插件配置方式可以参考这位博主ZMyths的博客;

然后用eclipse打开项目并且修改代码(其实修改部分随便用个编辑器就行了,不过为了后续开发,可以先熟悉一下eclipse);

修改步骤:

1.首先看目录:


目录所有文件名(包括整个工程文件的名字)都可以改成我们自己的名字,在这里,我把emq全部换成abc;

说明一点:test目录暂时不用修改。

2.然后是文件里的内容

(1)etc下的conf配置文件

这个文件是用来让插件连接到数据库的配置,包括连接到数据库的用户名和密码等等,话不多说,直接上图



首先,我们这个插件是实在原有的插件中间加进去的,而不是把原来的emq_auth_mysql插件修改为我们的插件,在用户的登录过程中,如果原有的emq_auth_mysql插件与我们自己改的abc_auth_mysql同时开启,会造成变量命名上的冲突(至于是什么冲突,我也不太清楚),因此,我们这里必须把所有的字段都修改掉,我这里是在每个字段前面加了公司简称"abc.";

同时,在图中的红色标记中,Username和Password都要把注释去掉,并且加上自己数据库的用户名和密码,当然数据库地址和名字都得换掉;

同时注意将password_hash改为plain(明文)格式,不改会导致后续通信的错误。

(2)include下的hrl文件,比较简单,直接上图


把emq改为公司简称abc即可,也即变成abc_auth_mysql,注意后续可能会用到该abc_auth_mysql

(3)priv下的schema文件,直接上图



首先将其中的emq改为abc,同时与数据库中字段有关联的各项都要与conf文件中的字段名一致。

(4)src文件下的源代码文件,修改的原则是,如果代码引入的包以及使用的函数,并不是在本工程的文件中定义的,一律不能改,反之,一律要改,以几张图作为例子


这是在emq_acl_mysql.erl文件中的预处理阶段的代码,其中-module表示的是本文件名,因此需要修改为abc,而下面的-behavior和-include_lib引入的都不是本工程下的包或函数,所以不能改,再看下面的emq_auth_mysql.erl文件中的代码;


可以看到-include和-import引入的都是本工程下的文件,因此,必须修改;


上面说的预处理中的修改,下面看代码“正文”中的部分,直接上图


这是emq_acl_mysql中的部分代码,可以看到里面的emq_auth_mysql_cli:query是本工程下的文件和函数,因此需要修改;

同样在本文件中的代码,下图:


其中emqttd_access_rule:match并不是本工程下的文件和函数,因此,不能修改。

src目录下的所有其他源代码文件都按照此原则修改。

(4)test目录下文件暂不修改


3.Makefile文件



里面的PROJECT名字改为需要暴露给服务器的名字

app.config里面引用的配置文件和schema文件名字都要修改


至此,本插件中所有的都修改完了,make一下工程,编译通过,表示本插件修改得没有错误,但是并不表示这个插件就能用了,还需要连接到服务器进行整体编译,整体编译见下一篇文章。


原创粉丝点击