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()) } }