Giter VIP home page Giter VIP logo

smoking-hivemq's Introduction

HiveMQ SMOKER Extension

This is a implementation of a HiveMQ extension to make the Broker a SMOKER (Secure MQTT Broker) using the MQTT 5 enhanced authentication and client-managed authorization. The implementation is based on the BSc Thesis "Client-managed anonymous authentication and authorization for MQTT" or "SMOKER" written by Lukas Läderach and Cédric von Allmen at the Bern University of Applied Sciences. The thesis was finished in January 2020. The resulting papers, which also serve as a basis for the implementation can be found here:

Run

Using local HiveMQ installation

  1. Clone this repository into a Java 13 maven project.

  2. Run mvn package goal from Maven to build the extension

  3. Move the file: "target/hivemq-smoker-{version}-distribution.zip" to the directory: "HIVEMQ_HOME/extensions"

  4. Unzip the file.

  5. Make sure that the user, which is running the broker process, has R/W access to the path configured in store.file.path config

  6. Start HiveMQ

  7. Connect to broker with TCP (port 1883) or websocket (port 8000 and context /mqtt)

Using docker

  1. Build docker container using docker build -t smoker .

  2. Run the container using docker run -d -p 8000:8000 -p 1883:1883 smoker

  3. Connect to broker with TCP (port 1883) or websocket (port 8000 and context /mqtt)

Development & Debug

To run and debug the extension locally you need to have a plain HiveMQ installation on your system.

  1. Make sure setting the correct path of your local HiveMQ installation to the hiveMQDir property in the pom.xml

  2. Make sure that the broker instance has R/W access to the path configured in store.file.path property in the smive.properties

  3. Run mvn clean install -P RunWithHiveMQ

  4. If you want to debug, you can attach the debugger to the process started by maven

smoking-hivemq's People

Stargazers

kalloc avatar

Watchers

Lukas Läderach avatar Boris Djurdjevic avatar  avatar Joris avatar SaschaPWittwer avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.