Maximimum length of credentials (username, password, clientid) in MQTT v3.1.1
The CONNECT packet The MQTT CONNECT Control packet always contains a payload. It is the first packet, which the client must send to the server after the connection is established. It can only be sent once by the client, if a second CONNECT packet is sent, the server (broker) must process it as a protocol…
WeiterlesenDebugging VerneMQ connection / authentication problems for dual authentication with webhooks and vmq_diversity
TL;DR https://github.com/vernemq/vernemq/blob/master/apps/vmq_diversity/src/vmq_diversity_plugin.erl includes a statement which will block authentication / authorization through any other channels if your Lua script returns “false”: will lead to: instead of trying other plugins, as you might have assumed! In order to avoid this problem, simply do not return anything from your Lua script, if you do not want to…
WeiterlesenVerneMQ: econnrefused & Webhook example
Webhooks activate webhooks like this in your vernemq.conf.local (.local when running on docker, so that settings at bottom of the file will persist): plugins.vmq_webhooks = on vmq_webhooks.js_auth_on_register.hook = auth_on_register vmq_webhooks.js_auth_on_register.endpoint = http://container_picockpit:1200/example/path Note that if your webhook is not accessible (econnrefused), the db based authentication will also fail … ! If you get errors like…
Weiterlesenenvoy serving a static response
Besides routing and redirecting you can serve static responses with Envoy. In this case I want to serve a forbidden response (403) route_config: virtual_hosts: – name: picockpit domains: [“picockpit.local:443”, “picockpit.local”] routes: – match: { prefix: “/demo” } direct_response: status: 403 body: inline_string: “Forbidden.” – match: {prefix: “/”} route: {cluster: target_picockpit} It can also serve…
WeiterlesenPython Paho MQTT client self-signed certificates websockets, howto
Using Paho in Python with websockets and self-signed certificates for a https:// websocket connection has a couple of pitfalls, so I’m addressing this with some sample code here: import ssl import time import paho.mqtt.client as mqtt class PCPMQTTClient: def on_connect(self, client, userdata, flags, rc): self.connection_status = rc if rc == 0: self.connected_flag = True self.connection_error_flag…
WeiterlesenVerneMQ Docker overwrites my configuration
Situation You edit vernemq.conf, only to find that your configuration is overwritten by VerneMQ on the next start (using the official Docker container). Specifically, the section with the listeners at the end of the file is “forced upon you”. Solution VerneMQ is started using a script (start_vernemq). The script can be seen here: https://github.com/vernemq/docker-vernemq/blob/master/bin/vernemq.sh The…
Weiterlesenenvoy not connecting to VerneMQ for MQTT over websockets, error code 503
Some quick background information for anyone running into the same issues, and how to debug them. Error code 503 This is the error code I am getting: Error during WebSocket handshake: Unexpected response code: 503. Set envoy logging to debug Here’s my docker-compose.yaml for envoy: version: ‘3.7’ services: envoy: build: context: ./ dockerfile: Dockerfile container_name:…
Weiterlesenenvoy websockets per route configuration, JavaScript test setup
In my article yesterday I discussed the configuration & test of envoy for proxying websockets at length. Today I would like to add some additional information. correct syntax for websocket upgrade per route You can enable websocket upgrade per route. No need to add it globally: – name: envoy.http_connection_manager config: #upgrade_configs: # – upgrade_type: websocket …
Weiterlesenenvoy, docker and websockets – debugging and configuration
Websockets are an exciting technology, allowing you to upgrade a HTTP connection to a long-running persistent binary connection, which you can use to send bi-directional messages. As an aside, the MQTT protocol can be transported using websockets – which is the only (?) way for a JavaScript client delivered by the website, for instance. In…
Weiterlesen