-
Jonas Leder authoredJonas Leder authored
main.go 1022 B
package mqttserver
import (
"os"
"github.com/wind-c/comqtt/v2/mqtt"
"github.com/wind-c/comqtt/v2/mqtt/hooks/auth"
"github.com/wind-c/comqtt/v2/mqtt/listeners"
"jonasled.dev/jonasled/ems-esp-logger/log"
)
func Start() {
server := mqtt.New(nil)
if os.Getenv("MQTT_USERNAME") == "" {
_ = server.AddHook(new(auth.AllowHook), nil)
} else {
_ = server.AddHook(new(auth.Hook), &auth.Options{
Ledger: &auth.Ledger{
Auth: auth.AuthRules{
{
Username: auth.RString(os.Getenv("MQTT_USERNAME")),
Password: auth.RString(os.Getenv("MQTT_PASSWORD")),
Allow: true,
},
},
},
})
}
if os.Getenv("MQTT_LISTEN") == "" {
log.Log.Fatal("please set MQTT_LISTEN")
}
tcp := listeners.NewTCP("t1", os.Getenv("MQTT_LISTEN"), nil)
err := server.AddListener(tcp)
if err != nil {
log.Log.Fatal("Failed creating TCP listener on ", os.Getenv("MQTT_LISTEN"), err.Error())
}
err = server.Serve()
if err != nil {
log.Log.Fatal("Failed starting MQTT server: ", err.Error())
}
}