From 209eeb76c2233ae675ef77ffd2f61b7ae8b39eda Mon Sep 17 00:00:00 2001 From: Gustavo Bertoli Date: Mon, 23 Feb 2026 16:01:25 +0100 Subject: [PATCH 1/2] Add Mosquitto Plugin entry to MiddlewareCppData --- src/tableData/MiddlewareData/MiddlewareCppData.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/tableData/MiddlewareData/MiddlewareCppData.js b/src/tableData/MiddlewareData/MiddlewareCppData.js index e8ca1951..52c7868c 100644 --- a/src/tableData/MiddlewareData/MiddlewareCppData.js +++ b/src/tableData/MiddlewareData/MiddlewareCppData.js @@ -5,6 +5,13 @@ export const MiddlewareCppData = [ "A HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, via plugin: [nginx-casbin-module](https://github.com/casbin-cpp/nginx-casbin-module)", image: "/img/ecosystem/nginx.png", }, + { + title: "[Mosquitto Plugin](https://github.com/gubertoli/mosquitto-casbin)", + author: "[@gubertoli](https://github.com/gubertoli)", + description: + "Plugin for Mosquitto MQTT broker v2.0+ to manage access control via Casbin", + image: "/img/ecosystem/mosquitto.png", + }, ].map((item) => { return { ...item, From 1beadfc93ac2bb52ba80ab78b4906588ea2d32d0 Mon Sep 17 00:00:00 2001 From: Gustavo Bertoli Date: Mon, 23 Feb 2026 17:09:29 +0100 Subject: [PATCH 2/2] add mosquitto logo for MiddlewareCppData.js change --- static/img/ecosystem/mosquitto.png | Bin 0 -> 24770 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 static/img/ecosystem/mosquitto.png diff --git a/static/img/ecosystem/mosquitto.png b/static/img/ecosystem/mosquitto.png new file mode 100644 index 0000000000000000000000000000000000000000..cc5dcda161ce33a6f7d3fad749f0e21e9b66c0ce GIT binary patch literal 24770 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