概述
初步修改代码,将其中的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一下工程,编译通过,表示本插件修改得没有错误,但是并不表示这个插件就能用了,还需要连接到服务器进行整体编译,整体编译见下一篇文章。
最后
以上就是幸福雨为你收集整理的修改emqtt中auth-mysql插件的全部内容,希望文章能够帮你解决修改emqtt中auth-mysql插件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复