mqtt-proxy

command module
v1.1.1-0...-f7ff9f2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 21, 2016 License: MIT Imports: 10 Imported by: 0

README

mqtt-proxy

This service acts as a front end for mqtt servers peforming preauthentication, load balancing and rate limiting.

setup

Create a table with tokens in it.

CREATE TABLE legends (
	uid int(11) NOT NULL AUTO_INCREMENT,
	mqtt_id varchar(128) COLLATE utf8_bin NOT NULL,
	PRIMARY KEY (uid),
	UNIQUE KEY mqtt_id_UNIQUE (mqtt_id)
) DEFAULT CHARSET=utf8;

CREATE TABLE tokens (
  token_id int(11) NOT NULL AUTO_INCREMENT,
  uid int(11) NOT NULL,
  token varchar(64) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (token_id),
  UNIQUE KEY token_UNIQUE (token)
) DEFAULT CHARSET=utf8;

Configure rabbitmq as a backend for mqtt-proxy by editing or creating /usr/local/etc/rabbitmq/rabbitmq.config.

[{rabbit,        [{tcp_listeners,    {"0.0.0.0", 5672}}]},
 {rabbitmq_mqtt, [{default_user,     <<"guest">>},
                  {default_pass,     <<"guest">>},
                  {allow_anonymous,  true},
                  {vhost,            <<"/">>},
                  {exchange,         <<"amq.topic">>},
                  {subscription_ttl, 1800000},
                  {prefetch,         10},
                  {ssl_listeners,    []},
                  {tcp_listeners,    [2883]},
                  {tcp_listen_options, [binary,
                                        {packet,    raw},
                                        {reuseaddr, true},
                                        {backlog,   128},
                                        {nodelay,   true}]}]}
].

Enable plugins by modifying running the following commands.

rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_mqtt
rabbitmq-plugins enable rabbitmq_tracing

Restart rabbitmq.

rabbitmqctl stop
rabbitmq-server -detached

Port redirection for 443 -> WS port

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 9000

status

  • Preauthentication supports MySQL at the moment

Licensing

mqtt-proxy is licensed under the MIT License. See LICENSE for the full license text.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL