Giter Site home page Giter Site logo

haskell-hummingbird's People

Contributors

lpeterse avatar lupino avatar sclausen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

haskell-hummingbird's Issues

hummingbird: /run/hummingbird: getFileStatus: does not exist (No such file or directory)

I try to run hummingbird for the first time:

$ sudo hummingbird broker
[2019-01-28 10:54:53 CET : hummingbird : INFO] Started hummingbird MQTT message broker.
[2019-01-28 10:54:53 CET : SimpleAuthenticator : INFO] Creating new SimpleAuthenticator.
[2019-01-28 10:54:53 CET : SimpleAuthenticator : INFO] Looking for principal definitions in "/etc/hummingbird/principals".
[2019-01-28 10:54:53 CET : SimpleAuthenticator : DEBUG] Inspecting path "/etc/hummingbird/principals".
[2019-01-28 10:54:53 CET : SimpleAuthenticator : DEBUG] Inspecting path "/etc/hummingbird/principals/mqtt-default.yml".
[2019-01-28 10:54:53 CET : SimpleAuthenticator : DEBUG] Loaded SimplePrincipalConfig {cfgUUID = e4f7f759-a7f0-4ae7-8140-766269e1c503, cfgUsername = Just (Username "mqtt-default"), cfgPasswordHash = Just "$2y$14$z1TeFmnk9zirP1Ml55lVyuOWOhaYyqlHlvd6meaze2KDYPH8hrdsS", cfgQuota = Nothing, cfgPermissions = fromList [("#",Identity [Publish,Subscribe,Retain])], cfgPubKeys = [PubKeyRSA (PublicKey {public_size = 256, public_n = 22308942959693450164805414784622039119953869676598494040490474876845113011423244363133504464639934332123824098648383695629950150740661240301797557789182881627518325410401761214390870746782142890256330810683259925120714609191450018846802295942368288474822201833573214569087558505560609454735289847189481477441119371414955982136284383371075357537016744791612856244809403031774668623777419463250379304610626415753799894380826997107551511307557394469393256023125370558067711177534861949701053775350975064219762470558885671887833718238237288150961742044857994737398622408909061802106648686005822374306713833889769779813399, public_e = 65537})]}
[2019-01-28 10:54:53 CET : SimpleAuthenticator : INFO] Found 1 principal definitions.
hummingbird: /run/hummingbird: getFileStatus: does not exist (No such file or directory)

Use as library

Hello,
I would like to run a MQTT server with my own callbacks.
Is it possible with Hummingbird/haskell-mqtt?
Thanks

Start with certificates

I'm trying to follow the README file, but this instruction is not clear:

mosquitto_pub  -h localhost -p 8883 -V mqttv311 \
  --cafile "resources/hummingbird_ca.crt" \
  --cert "resources/mqtt-default.crt" \
  --key "resources/mqtt-default.key" \
  -t "abc/def" \
  -m "asdasd"

Where does come from the files hummingbird_ca.crt and mqtt-default.crt? They are not in the repo and are not generated by the create-self-signed-cert.sh script.

Retained store shall be a separate service

The retained messages shall not be stored in the broker instances itself, but this shall be handled by a separate hummingbird-retention service.

  • An idea is to use LevelDB as a storage backend.

$WHOAMI topic

Note to self: Users should have a way to find out who they are and what they are allowed to do (permissions and quotas etc.).

docker doesnt build

aep@derp: ~/Downloads/haskell-hummingbird-0.4.2.0 docker build . -t humingbird
Sending build context to Docker daemon  159.7kB
Step 1/14 : FROM        ubuntu:16.04
 ---> 747cb2d60bbe
Step 2/14 : MAINTAINER	Lars Petersen <[email protected]>
 ---> Running in f5ad4deedb4a
Removing intermediate container f5ad4deedb4a
 ---> 7772596c02eb
Step 3/14 : RUN         locale-gen en_US.UTF-8
 ---> Running in a50bdaf25e7b
/bin/sh: 1: locale-gen: not found
The command '/bin/sh -c locale-gen en_US.UTF-8' returned a non-zero code: 127

Hummingbird pwhash hanging

Hello,
I just installed the Debian distribution on my Ubuntu 16.04:

sudo dpkg -i hummingbird_0.8.1.0-1_amd64.deb 
sudo cp /usr/share/hummingbird/resources/principals/mqtt-default.yml /etc/hummingbird/principals/
sudo hummingbird pwhash

But nothing happens next. It hangs on the last command forever.

Distinct message routing on multiple sessions with same user.

A feature would be nice, breaking with the mqtt-spec though, which allows to set a config option on user base which enables distinct message routing per topic to multiple connected sessions with the same user.

If this is not being rejected directly, I will elaborate the idea.

Stream CLI responses

stream cli responses instead of transmitting en bloc. For example with 20.000 connected clients one probably wants to transmit these, at least, chunked. This would result in less waiting time for the first results and one could cancel the request intermediate.

Implement bridge mode / clustering

It shall be possible to create a cluster of several broker instances in order to have high-availability.

As a first shot, here's the plan:

  • The cluster is configured statically through the config files. Every broker needs to know about how to reach the other brokers (via URLs). The cluster configuration may be reconfigured without restart through the config hot-reload feature (n*n connections and traffic is not an issue yet).
  • Every broker sends all upstream messages to all other brokers.
  • Every broker publishes all messages from other brokers downstream.
  • Sessions are local to broker instances.

It is highly desirable that it does not matter which broker instance a client connects to. Here's the second step:

  • The client identifier serves as a routing key. It shall be hashed and mapped to a broker instance (% number of brokers). It the client connected to an instance that is not the target, it's traffic shall be routed to the target instance. This is transparent for the client.

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.