diff --git a/docs/notif/mqtt.md b/docs/notif/mqtt.md index d4ae4ffc..8f082d5e 100644 --- a/docs/notif/mqtt.md +++ b/docs/notif/mqtt.md @@ -8,6 +8,7 @@ You can send notifications to any MQTT compatible server with the following sett ```yaml notif: mqtt: + scheme: mqtt host: localhost port: 1883 username: guest @@ -19,6 +20,7 @@ You can send notifications to any MQTT compatible server with the following sett | Name | Default | Description | |--------------------|---------------|---------------| +| `scheme`[^1] | `mqtt` | MQTT server scheme (`mqtt`, `mqtts`, `ws` or `wss`) | | `host`[^1] | `localhost` | MQTT server host | | `port`[^1] | `1883` | MQTT server port | | `username` | | MQTT username | @@ -30,6 +32,7 @@ You can send notifications to any MQTT compatible server with the following sett | `qos` | `0` | Ensured message delivery at specified Quality of Service (QoS) | !!! abstract "Environment variables" + * `DIUN_NOTIF_MQTT_SCHEME` * `DIUN_NOTIF_MQTT_HOST` * `DIUN_NOTIF_MQTT_PORT` * `DIUN_NOTIF_MQTT_USERNAME` diff --git a/internal/config/config_test.go b/internal/config/config_test.go index d9bf694c..365b37ae 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -123,6 +123,7 @@ func TestLoadFile(t *testing.T) { MsgType: model.NotifMatrixMsgTypeNotice, }, Mqtt: &model.NotifMqtt{ + Scheme: "mqtt", Host: "localhost", Port: 1883, Username: "guest", diff --git a/internal/config/fixtures/config.test.yml b/internal/config/fixtures/config.test.yml index 6940ee69..17fb777b 100644 --- a/internal/config/fixtures/config.test.yml +++ b/internal/config/fixtures/config.test.yml @@ -44,6 +44,7 @@ notif: password: bar roomID: "!abcdefGHIjklmno:matrix.org" mqtt: + scheme: "mqtt" host: "localhost" port: 1883 username: "guest" diff --git a/internal/config/fixtures/config.validate.yml b/internal/config/fixtures/config.validate.yml index 20e7ecca..c631d0b9 100644 --- a/internal/config/fixtures/config.validate.yml +++ b/internal/config/fixtures/config.validate.yml @@ -44,6 +44,7 @@ notif: password: bar roomID: "!abcdefGHIjklmno:matrix.org" mqtt: + scheme: "mqtt" host: "localhost" port: 1883 username: "guest" diff --git a/internal/model/notif_mqtt.go b/internal/model/notif_mqtt.go index 65a460c3..ea10efaf 100644 --- a/internal/model/notif_mqtt.go +++ b/internal/model/notif_mqtt.go @@ -1,6 +1,7 @@ package model type NotifMqtt struct { + Scheme string `yaml:"scheme,omitempty" json:"scheme,omitempty" validate:"required,oneof=mqtt mqtts ws wss"` Host string `yaml:"host,omitempty" json:"host,omitempty" validate:"required"` Port int `yaml:"port,omitempty" json:"port,omitempty" validate:"required,min=1"` Username string `yaml:"username,omitempty" json:"username,omitempty" validate:"omitempty"` @@ -21,6 +22,7 @@ func (s *NotifMqtt) GetDefaults() *NotifMqtt { // SetDefaults sets the default values func (s *NotifMqtt) SetDefaults() { + s.Scheme = "mqtt" s.Host = "localhost" s.Port = 1883 s.QoS = 0 diff --git a/internal/notif/mqtt/client.go b/internal/notif/mqtt/client.go index 7b16397d..1257f346 100644 --- a/internal/notif/mqtt/client.go +++ b/internal/notif/mqtt/client.go @@ -49,7 +49,7 @@ func (c *Client) Send(entry model.NotifEntry) error { return err } - broker := fmt.Sprintf("tcp://%s:%d", c.cfg.Host, c.cfg.Port) + broker := fmt.Sprintf("%s://%s:%d", c.cfg.Scheme, c.cfg.Host, c.cfg.Port) opts := MQTT.NewClientOptions().AddBroker(broker).SetClientID(c.cfg.Client) opts.Username = username opts.Password = password