我正在使用mosquitto 1.4.5版本。
我正在尝试使用单独的插件对mosquitto broker主题订阅进行ACL检查,并使用提供的标头进行发布。
为了测试auth插件的集成,我刚刚使用提供的mosquitto auth插件标头打印了一条消息( mosquitto_plugin.h )。
int mosquitto_auth_acl_check(void *user_data, const char *clientid, const char *username, const char *topic, int access)
{
mosquitto_log_printf( MOSQ_LOG_INFO , "ACL Check called");
return MOSQ_ERR_SUCCESS;
}
制作共享对象并更改配置文件的 auth_plugin 属性后,我尝试使用客户端模拟来查看“订阅”和“发布”是否会调用mosquitto_auth_acl_check
。
我所意识到的是,尽管它在提供的标题评论中所说的内容,它永远不会被要求订阅。
在发布方案中,我可以看到记录了 ACL Check called 消息,因此可以假设它调用了该函数。
在订阅方案中,消息未被记录,因此我假设该函数未被调用。
什么原因可能不仅仅是为了订阅?
答案 0 :(得分:4)
由于将通配符订阅与通配符acl进行比较相对困难,因此目前尚未调用订阅。
在将消息即将发送到客户端时检查ACL,这相当于同样的事情,但效率不高。