From 5fab104467abdacf59e3b0c64d44e4849d9c4f1d Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Sun, 2 Jan 2022 22:48:27 +0000 Subject: [PATCH] Auth plugin v2, v3 testings. --- test/broker/09-plugin-auth-acl-pub.py | 2 ++ test/broker/09-plugin-auth-acl-sub.py | 7 ++++++- test/broker/c/auth_plugin_v2.c | 15 +++++++++++++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/test/broker/09-plugin-auth-acl-pub.py b/test/broker/09-plugin-auth-acl-pub.py index 2a865c58..78acd408 100755 --- a/test/broker/09-plugin-auth-acl-pub.py +++ b/test/broker/09-plugin-auth-acl-pub.py @@ -64,5 +64,7 @@ def do_test(plugin_ver): print(stde.decode('utf-8')) exit(rc) +do_test(2) +do_test(3) do_test(4) do_test(5) diff --git a/test/broker/09-plugin-auth-acl-sub.py b/test/broker/09-plugin-auth-acl-sub.py index 65f89126..b135d530 100755 --- a/test/broker/09-plugin-auth-acl-sub.py +++ b/test/broker/09-plugin-auth-acl-sub.py @@ -25,7 +25,10 @@ def do_test(plugin_ver): mid_fail = 54 subscribe_packet_fail = mosq_test.gen_subscribe(mid_fail, "#", 0) - suback_packet_fail = mosq_test.gen_suback(mid_fail, 0x80) + if plugin_ver == 2: + suback_packet_fail = mosq_test.gen_suback(mid_fail, 0) + else: + suback_packet_fail = mosq_test.gen_suback(mid_fail, 0x80) broker = mosq_test.start_broker(filename=os.path.basename(__file__), use_conf=True, port=port) @@ -49,5 +52,7 @@ def do_test(plugin_ver): print(stde.decode('utf-8')) exit(rc) +do_test(2) +do_test(3) do_test(4) do_test(5) diff --git a/test/broker/c/auth_plugin_v2.c b/test/broker/c/auth_plugin_v2.c index 13735641..0b0b1dd7 100644 --- a/test/broker/c/auth_plugin_v2.c +++ b/test/broker/c/auth_plugin_v2.c @@ -62,8 +62,19 @@ int mosquitto_auth_acl_check(void *user_data, const char *clientid, const char * (void)clientid; (void)topic; - if(!strcmp(username, "readonly") && access == MOSQ_ACL_READ){ + if(access != MOSQ_ACL_READ && access != MOSQ_ACL_WRITE){ + return MOSQ_ERR_ACL_DENIED; + }else if(username && !strcmp(username, "readonly") && access == MOSQ_ACL_READ){ return MOSQ_ERR_SUCCESS; + }else if(username && !strcmp(username, "readwrite")){ + if((!strcmp(topic, "readonly") && access == MOSQ_ACL_READ) + || !strcmp(topic, "writeable")){ + + return MOSQ_ERR_SUCCESS; + }else{ + return MOSQ_ERR_ACL_DENIED; + } + }else{ return MOSQ_ERR_ACL_DENIED; } @@ -75,7 +86,7 @@ int mosquitto_auth_unpwd_check(void *user_data, const char *username, const char if(!strcmp(username, "test-username") && password && !strcmp(password, "cnwTICONIURW")){ return MOSQ_ERR_SUCCESS; - }else if(!strcmp(username, "readonly")){ + }else if(!strcmp(username, "readonly") || !strcmp(username, "readwrite")){ return MOSQ_ERR_SUCCESS; }else if(!strcmp(username, "test-username@v2")){ return MOSQ_ERR_SUCCESS;