Merge pull request #1723 from gravitl/refactor_mqtt_to_wss

Refactor mqtt to wss
This commit is contained in:
dcarns 2022-11-10 11:32:42 -05:00 committed by GitHub
commit 3d683924b1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 23 additions and 16 deletions

View file

@ -125,10 +125,10 @@ services:
- "8883"
labels:
- traefik.enable=true
- traefik.tcp.routers.mqtt.rule=HostSNI(`broker.NETMAKER_BASE_DOMAIN`)
- traefik.tcp.routers.mqtt.tls.certresolver=http
- traefik.tcp.services.mqtt.loadbalancer.server.port=8883
- traefik.tcp.routers.mqtt.entrypoints=websecure
- traefik.http.routers.mqtt_websocket.rule=Host(`broker.NETMAKER_BASE_DOMAIN`)
- traefik.http.routers.mqtt_websocket.entrypoints=websecure
- traefik.http.routers.mqtt_websocket.tls.certresolver=http
- traefik.http.services.mqtt_websocket.loadbalancer.server.port=8883
prometheus:
container_name: prometheus
image: gravitl/netmaker-prometheus:latest

View file

@ -129,11 +129,11 @@ services:
- "8883"
labels:
- traefik.enable=true
- traefik.tcp.routers.mqtts.rule=HostSNI(`broker.NETMAKER_BASE_DOMAIN`)
- traefik.tcp.routers.mqtts.tls.passthrough=true
- traefik.tcp.services.mqtts-svc.loadbalancer.server.port=8883
- traefik.tcp.routers.mqtts.service=mqtts-svc
- traefik.tcp.routers.mqtts.entrypoints=websecure
- traefik.http.routers.mqtt_websocket.rule=Host(`broker.NETMAKER_BASE_DOMAIN`)
- traefik.http.routers.mqtt_websocket.entrypoints=websecure
- traefik.http.routers.mqtt_websocket.tls.passthrough=true
- traefik.http.services.mqtts-svc.loadbalancer.server.port=8883
- traefik.http.routers.mqtt_websocket.service=mqtts-svc
volumes:
traefik_certs: {} # ssl certificates - auto generated
shared_certs: {} # netmaker certs generated for MQ comms - used by nodes/servers

View file

@ -122,10 +122,10 @@ services:
- "8883"
labels:
- traefik.enable=true
- traefik.tcp.routers.mqtt.rule=HostSNI(`broker.NETMAKER_BASE_DOMAIN`)
- traefik.tcp.routers.mqtt.tls.certresolver=http
- traefik.tcp.services.mqtt.loadbalancer.server.port=8883
- traefik.tcp.routers.mqtt.entrypoints=websecure
- traefik.http.routers.mqtt_websocket.rule=Host(`broker.NETMAKER_BASE_DOMAIN`)
- traefik.http.routers.mqtt_websocket.entrypoints=websecure
- traefik.http.routers.mqtt_websocket.tls.certresolver=http
- traefik.http.services.mqtt_websocket.loadbalancer.server.port=8883
volumes:
traefik_certs: {}
sqldata: {}

View file

@ -1,8 +1,10 @@
per_listener_settings false
listener 8883
protocol websockets
allow_anonymous false
listener 1883
protocol websockets
allow_anonymous false
plugin /usr/lib/mosquitto_dynamic_security.so

View file

@ -212,7 +212,7 @@ func setupMQTTSingleton(cfg *config.ClientConfig) error {
if err != nil {
return fmt.Errorf("could not read secrets file %w", err)
}
opts.AddBroker("mqtts://" + server + ":" + port)
opts.AddBroker("wss://" + server + ":" + port)
opts.SetUsername(cfg.Node.ID)
opts.SetPassword(string(pass))
mqclient = mqtt.NewClient(opts)
@ -239,7 +239,7 @@ func setupMQTT(cfg *config.ClientConfig) error {
if err != nil {
return fmt.Errorf("could not read secrets file %w", err)
}
opts.AddBroker(fmt.Sprintf("mqtts://%s:%s", server, port))
opts.AddBroker(fmt.Sprintf("wss://%s:%s", server, port))
opts.SetUsername(cfg.Node.ID)
opts.SetPassword(string(pass))
opts.SetClientID(ncutils.MakeRandomString(23))

View file

@ -235,7 +235,12 @@ func GetMessageQueueEndpoint() (string, bool) {
} else if config.Config.Server.MQHOST != "" {
host = config.Config.Server.MQHOST
}
secure := strings.Contains(host, "mqtts") || strings.Contains(host, "ssl")
secure := strings.Contains(host, "wss") || strings.Contains(host, "ssl")
if secure {
host = "wss://" + host
} else {
host = "ws://" + host
}
return host + ":" + GetMQServerPort(), secure
}