3 releases

0.1.3 Nov 20, 2024
0.1.2 Nov 20, 2024
0.1.0 Mar 15, 2023

#687 in Database interfaces

Download history 5/week @ 2024-09-23 271/week @ 2024-11-18

271 downloads per month

MIT license

13KB
244 lines

Mosquitto Dynamic Security (Mosquitto Auth Plugin - Rust)

Mosquitto authentication and ACL (Access control list) checking plugin. It is working based on MYSQL database.

Configuration

How to install?

Download mosquitto-auth.so file and load .conf file as follows mosquitto -c mosquitto.conf

Download

Move mosquitto-auth/linux-64/mosquitto_auth.so to /etc/mosquitto/mosquitto_auth.so

sudo chown mosquitto:mosquitto /etc/mosquitto/mosquitto_auth.so
sudo chmod 755 /etc/mosquitto/mosquitto_auth.so

Then edit mosquitto.conf file from /etc/mosquitto/

Add the following code in /etc/mosquitto/mosquitto.conf file.

The mosquitto.conf file

plugin /etc/mosquitto/mosquitto-auth.so
listener 1883

How to edit the environment (.env) file location?

Edit systemd Linux services environment .env file location. Enter the following code in the terminal.

sudo systemctl edit mosquitto

[Service]
EnvironmentFile=/etc/mosquitto/.env

Configure the MySQL Database

Download mosquitto.sql file and import it to your mysql by phpmyadmin. Then add database credentials in /etc/mosquitto/.env file.

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=mosquitto
DB_USERNAME=root
DB_PASSWORD="Pass"

Feel free to PM: https://ciphercoin.com/contact. I can help you to configure.

Documentation

Authentication is working based on MYSQL users table. This plugin is checking username and password. Add username and password in the users table.

ACL: Add access details acls table.

column Value Permission
rw 1 READ
rw 2 WRITE
rw 4 SUBSCRIBE
rw 8 UNSUBSCRIBE

How To Test?

Download mosquitto.sql then import it by phpmyadmin.

Step 1: service mosquitto restart

Step 2: Open the new terminal then enter mosquitto_sub -t "test/su" -u arshid -P Pass@123

Step 3: Open the new terminal then enter mosquitto_pub -t "test/su" -m "This is a message !" -u arshid -P Pass@123

Dependencies

~13–28MB
~433K SLoC