Skip to content
Snippets Groups Projects
main.go 1022 B
Newer Older
  • Learn to ignore specific revisions
  • Jonas Leder's avatar
    Jonas Leder committed
    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,
    					},
    				},
    			},
    		})
    	}
    
    Jonas Leder's avatar
    Jonas Leder committed
    
    	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())
    	}
    }