diff --git a/cmd/mqtt-server/README.md b/cmd/mqtt-server/README.md new file mode 100644 index 00000000..e0f90b4a --- /dev/null +++ b/cmd/mqtt-server/README.md @@ -0,0 +1,29 @@ +# MQTT Server + +This is a little MQTT server for test purposes. It logs all messages that +clients publish. + +**WARNING:** This is just for test purposes. There is no encryption, no +authentication, and no promise of any performance. Havnig said that, it can be +quite useful to see all the events that Flamenco Manager is sending out. + +## Running the Server + +``` +go run ./cmd/mqtt-server +``` + +## Connecting Flamenco Manager + +You can configure Flamenco Manager for it, by setting this in your +`flamenco-manager.yaml`: + +```yaml +mqtt: + client: + broker: "tcp://localhost:1883" + clientID: flamenco + topic_prefix: flamenco + username: "" + password: "" +``` diff --git a/cmd/mqtt-server/hook.go b/cmd/mqtt-server/hook.go new file mode 100644 index 00000000..86769251 --- /dev/null +++ b/cmd/mqtt-server/hook.go @@ -0,0 +1,79 @@ +// SPDX-License-Identifier: MIT +// SPDX-FileCopyrightText: 2022 mochi-mqtt, mochi-co +// SPDX-FileContributor: mochi-co, Sybren + +package main + +import ( + "encoding/json" + "log/slog" + + mqtt "github.com/mochi-mqtt/server/v2" + "github.com/mochi-mqtt/server/v2/hooks/storage" + "github.com/mochi-mqtt/server/v2/packets" + "github.com/rs/zerolog" +) + +type PacketLoggingHook struct { + mqtt.HookBase + Logger zerolog.Logger +} + +// ID returns the ID of the hook. +func (h *PacketLoggingHook) ID() string { return "payload-logger" } +func (h *PacketLoggingHook) Provides(b byte) bool { return b == mqtt.OnPacketRead } + +// OnPacketRead is called when a new packet is received from a client. +func (h *PacketLoggingHook) OnPacketRead(cl *mqtt.Client, pk packets.Packet) (packets.Packet, error) { + if pk.FixedHeader.Type != packets.Publish { + return pk, nil + } + + logger := h.Logger.With(). + Str("topic", pk.TopicName). + Uint8("qos", pk.FixedHeader.Qos). + Uint16("id", pk.PacketID). + Logger() + + var payload any + err := json.Unmarshal(pk.Payload, &payload) + if err != nil { + logger.Info(). + AnErr("cause", err). + Str("payload", string(pk.Payload)). + Msg("could not unmarshal JSON") + return pk, nil + } + + logger.Info(). + Interface("payload", payload). + Msg("packet") + + return pk, nil +} + +func (h *PacketLoggingHook) Init(config any) error { return nil } +func (h *PacketLoggingHook) Stop() error { return nil } +func (h *PacketLoggingHook) OnStarted() {} +func (h *PacketLoggingHook) OnStopped() {} + +func (h *PacketLoggingHook) SetOpts(l *slog.Logger, opts *mqtt.HookOptions) {} + +func (h *PacketLoggingHook) OnPacketSent(cl *mqtt.Client, pk packets.Packet, b []byte) {} +func (h *PacketLoggingHook) OnRetainMessage(cl *mqtt.Client, pk packets.Packet, r int64) {} + +func (h *PacketLoggingHook) OnQosPublish(cl *mqtt.Client, pk packets.Packet, sent int64, resends int) { +} + +func (h *PacketLoggingHook) OnQosComplete(cl *mqtt.Client, pk packets.Packet) {} +func (h *PacketLoggingHook) OnQosDropped(cl *mqtt.Client, pk packets.Packet) {} +func (h *PacketLoggingHook) OnLWTSent(cl *mqtt.Client, pk packets.Packet) {} +func (h *PacketLoggingHook) OnRetainedExpired(filter string) {} +func (h *PacketLoggingHook) OnClientExpired(cl *mqtt.Client) {} +func (h *PacketLoggingHook) StoredClients() (v []storage.Client, err error) { return v, nil } +func (h *PacketLoggingHook) StoredSubscriptions() (v []storage.Subscription, err error) { + return v, nil +} +func (h *PacketLoggingHook) StoredRetainedMessages() (v []storage.Message, err error) { return v, nil } +func (h *PacketLoggingHook) StoredInflightMessages() (v []storage.Message, err error) { return v, nil } +func (h *PacketLoggingHook) StoredSysInfo() (v storage.SystemInfo, err error) { return v, nil } diff --git a/cmd/mqtt-server/main.go b/cmd/mqtt-server/main.go new file mode 100644 index 00000000..748be04d --- /dev/null +++ b/cmd/mqtt-server/main.go @@ -0,0 +1,84 @@ +package main + +import ( + "context" + "flag" + "log/slog" + "os" + "os/signal" + "runtime" + "syscall" + "time" + + "github.com/mattn/go-colorable" + "github.com/rs/zerolog" + "github.com/rs/zerolog/log" + slogzerolog "github.com/samber/slog-zerolog/v2" + + "projects.blender.org/studio/flamenco/internal/appinfo" + "projects.blender.org/studio/flamenco/pkg/sysinfo" +) + +func main() { + output := zerolog.ConsoleWriter{Out: colorable.NewColorableStdout(), TimeFormat: time.RFC3339} + log.Logger = log.Output(output) + + osDetail, err := sysinfo.Description() + if err != nil { + osDetail = err.Error() + } + log.Info(). + Str("os", runtime.GOOS). + Str("osDetail", osDetail). + Str("arch", runtime.GOARCH). + Msgf("starting %v MQTT Server", appinfo.ApplicationName) + + parseCliArgs() + + mainCtx, mainCtxCancel := context.WithCancel(context.Background()) + defer mainCtxCancel() + + // Create signals channel to run server until interrupted + sigs := make(chan os.Signal, 1) + signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) + go func() { + <-sigs + mainCtxCancel() + }() + + run_mqtt_server(mainCtx) +} + +func parseCliArgs() { + var quiet, debug, trace bool + + flag.BoolVar(&quiet, "quiet", false, "Only log warning-level and worse.") + flag.BoolVar(&debug, "debug", false, "Enable debug-level logging.") + flag.BoolVar(&trace, "trace", false, "Enable trace-level logging.") + + flag.Parse() + + var logLevel zerolog.Level + var slogLevel slog.Level + switch { + case trace: + logLevel = zerolog.TraceLevel + slogLevel = slog.LevelDebug + case debug: + logLevel = zerolog.DebugLevel + slogLevel = slog.LevelDebug + case quiet: + logLevel = zerolog.WarnLevel + slogLevel = slog.LevelWarn + default: + logLevel = zerolog.InfoLevel + slogLevel = slog.LevelInfo + } + zerolog.SetGlobalLevel(logLevel) + + // Hook up slog to zerolog. + slogLogger := slog.New(slogzerolog.Option{ + Level: slogLevel, + Logger: &log.Logger}.NewZerologHandler()) + slog.SetDefault(slogLogger) +} diff --git a/cmd/mqtt-server/mqtt_server.go b/cmd/mqtt-server/mqtt_server.go new file mode 100644 index 00000000..57d792ca --- /dev/null +++ b/cmd/mqtt-server/mqtt_server.go @@ -0,0 +1,59 @@ +package main + +import ( + "context" + "log/slog" + "os" + + mqtt "github.com/mochi-mqtt/server/v2" + "github.com/mochi-mqtt/server/v2/hooks/auth" + "github.com/mochi-mqtt/server/v2/listeners" + "github.com/rs/zerolog/log" +) + +const address = ":1883" + +func run_mqtt_server(ctx context.Context) { + + // Create the new MQTT Server. + options := mqtt.Options{ + Logger: slog.Default(), + } + server := mqtt.New(&options) + + // Allow all connections. + if err := server.AddHook(new(auth.AllowHook), nil); err != nil { + log.Error().Err(err).Msg("could not allow all connections, server may be unusable") + } + + // Log incoming packets. + hook := PacketLoggingHook{ + Logger: log.Logger, + } + if err := server.AddHook(&hook, nil); err != nil { + log.Error().Err(err).Msg("could not add packet-logging hook, server may be unusable") + } + + // Create a TCP listener on a standard port. + tcp := listeners.NewTCP(listeners.Config{ID: "test-server", Address: address}) + tcpLogger := log.With().Str("address", address).Logger() + if err := server.AddListener(tcp); err != nil { + tcpLogger.Error().Err(err).Msg("listening for TCP connections") + os.Exit(2) + } + tcpLogger.Info().Msg("listening for TCP connections") + + // Start the MQTT server. + err := server.Serve() + if err != nil { + log.Error().Err(err).Msg("starting the server") + os.Exit(3) + } + + // Run server until interrupted + <-ctx.Done() + + log.Info().Msg("shutting down server") + server.Close() + log.Info().Msg("shutting down") +} diff --git a/go.mod b/go.mod index 9f228619..00d0906c 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/disintegration/imaging v1.6.2 github.com/dop251/goja v0.0.0-20230812105242-81d76064690d github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d - github.com/eclipse/paho.golang v0.12.0 + github.com/eclipse/paho.golang v0.22.0 github.com/fromkeith/gossdp v0.0.0-20180102154144-1b2c43f6886e github.com/gertd/go-pluralize v0.2.1 github.com/getkin/kin-openapi v0.132.0 @@ -20,10 +20,10 @@ require ( github.com/graarh/golang-socketio v0.0.0-20170510162725-2c44953b9b5f github.com/labstack/echo/v4 v4.9.1 github.com/magefile/mage v1.15.0 - github.com/mattn/go-colorable v0.1.12 + github.com/mattn/go-colorable v0.1.13 github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c github.com/pressly/goose/v3 v3.25.0 - github.com/rs/zerolog v1.26.1 + github.com/rs/zerolog v1.33.0 github.com/stretchr/testify v1.11.0 github.com/zcalusic/sysinfo v1.0.1 github.com/ziflex/lecho/v3 v3.1.0 @@ -68,7 +68,7 @@ require ( github.com/google/cel-go v0.24.1 // indirect github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e // indirect github.com/gorilla/mux v1.8.0 // indirect - github.com/gorilla/websocket v1.5.0 // indirect + github.com/gorilla/websocket v1.5.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect @@ -86,6 +86,7 @@ require ( github.com/mfridman/interpolate v0.0.2 // indirect github.com/mfridman/xflag v0.1.0 // indirect github.com/microsoft/go-mssqldb v1.9.2 // indirect + github.com/mochi-mqtt/server/v2 v2.7.9 // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/ncruces/go-strftime v0.1.9 // indirect github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 // indirect @@ -102,6 +103,10 @@ require ( github.com/prometheus/procfs v0.15.1 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/riza-io/grpc-go v0.2.0 // indirect + github.com/rs/xid v1.5.0 // indirect + github.com/samber/lo v1.47.0 // indirect + github.com/samber/slog-common v0.18.1 // indirect + github.com/samber/slog-zerolog/v2 v2.7.3 // indirect github.com/segmentio/asm v1.2.0 // indirect github.com/sethvargo/go-retry v0.3.0 // indirect github.com/shopspring/decimal v1.4.0 // indirect @@ -118,6 +123,8 @@ require ( github.com/wasilibs/wazero-helpers v0.0.0-20240620070341-3dff1577cd52 // indirect github.com/ydb-platform/ydb-go-genproto v0.0.0-20241112172322-ea1f63298f77 // indirect github.com/ydb-platform/ydb-go-sdk/v3 v3.108.1 // indirect + github.com/zhouhui8915/engine.io-go v0.0.0-20150910083302-02ea08f0971f // indirect + github.com/zhouhui8915/go-socket.io-client v0.0.0-20200925034401-83ee73793ba4 // indirect github.com/ziutek/mymysql v1.5.4 // indirect go.opentelemetry.io/otel v1.37.0 // indirect go.opentelemetry.io/otel/trace v1.37.0 // indirect diff --git a/go.sum b/go.sum index 1d8e43e1..22190730 100644 --- a/go.sum +++ b/go.sum @@ -40,6 +40,7 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/coder/websocket v1.8.12 h1:5bUXkEPPIbewrnkU8LTCLVaxi4N4J8ahufH2vlo4NAo= github.com/coder/websocket v1.8.12/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cubicdaiya/gonp v1.0.4 h1:ky2uIAJh81WiLcGKBVD5R7KsM/36W6IqqTy6Bo6rGws= @@ -68,6 +69,8 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/eclipse/paho.golang v0.12.0 h1:EXQFJbJklDnUqW6lyAknMWRhM2NgpHxwrrL8riUmp3Q= github.com/eclipse/paho.golang v0.12.0/go.mod h1:TSDCUivu9JnoR9Hl+H7sQMcHkejWH2/xKK1NJGtLbIE= +github.com/eclipse/paho.golang v0.22.0 h1:JhhUngr8TBlyUZDZw/L6WVayPi9qmSmdWeki48i5AVE= +github.com/eclipse/paho.golang v0.22.0/go.mod h1:9ZiYJ93iEfGRJri8tErNeStPKLXIGBHiqbHV74t5pqI= github.com/elastic/go-sysinfo v1.8.1/go.mod h1:JfllUnzoQV/JRYymbH3dO1yggI3mV2oTKSXsDHM+uIM= github.com/elastic/go-sysinfo v1.15.4 h1:A3zQcunCxik14MgXu39cXFXcIw2sFXZ0zL886eyiv1Q= github.com/elastic/go-sysinfo v1.15.4/go.mod h1:ZBVXmqS368dOn/jvijV/zHLfakWTYHBZPk3G244lHrU= @@ -179,6 +182,8 @@ github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/graarh/golang-socketio v0.0.0-20170510162725-2c44953b9b5f h1:utzdm9zUvVWGRtIpkdE4+36n+Gv60kNb7mFvgGxLElY= github.com/graarh/golang-socketio v0.0.0-20170510162725-2c44953b9b5f/go.mod h1:8gudiNCFh3ZfvInknmoXzPeV17FSH+X2J5k2cUPIwnA= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= @@ -251,10 +256,14 @@ github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= @@ -265,6 +274,8 @@ github.com/mfridman/xflag v0.1.0 h1:TWZrZwG1QklFX5S4j1vxfF1sZbZeZSGofMwPMLAF29M= github.com/mfridman/xflag v0.1.0/go.mod h1:/483ywM5ZO5SuMVjrIGquYNE5CzLrj5Ux/LxWWnjRaE= github.com/microsoft/go-mssqldb v1.9.2 h1:nY8TmFMQOHpm2qVWo6y4I2mAmVdZqlGiMGAYt64Ibbs= github.com/microsoft/go-mssqldb v1.9.2/go.mod h1:GBbW9ASTiDC+mpgWDGKdm3FnFLTUsLYN3iFL90lQ+PA= +github.com/mochi-mqtt/server/v2 v2.7.9 h1:y0g4vrSLAag7T07l2oCzOa/+nKVLoazKEWAArwqBNYI= +github.com/mochi-mqtt/server/v2 v2.7.9/go.mod h1:lZD3j35AVNqJL5cezlnSkuG05c0FCHSsfAKSPBOSbqc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -321,10 +332,22 @@ github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6po github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/xid v1.4.0 h1:qd7wPTDkN6KQx2VmMBLrpHkiyQwgFXRnkOLacUiaSNY= +github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.26.0/go.mod h1:yBiM87lvSqX8h0Ww4sdzNSkVYZ8dL2xjZJG1lAuGZEo= github.com/rs/zerolog v1.26.1 h1:/ihwxqH+4z8UxyI70wM1z9yCvkWcfz/a3mj48k/Zngc= github.com/rs/zerolog v1.26.1/go.mod h1:/wSSJWX7lVrsOwlbyTRSOJvqRlc+WjWlfes+CiJ+tmc= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc= +github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU= +github.com/samber/slog-common v0.18.1 h1:c0EipD/nVY9HG5shgm/XAs67mgpWDMF+MmtptdJNCkQ= +github.com/samber/slog-common v0.18.1/go.mod h1:QNZiNGKakvrfbJ2YglQXLCZauzkI9xZBjOhWFKS3IKk= +github.com/samber/slog-zerolog/v2 v2.7.3 h1:/MkPDl/tJhijN2GvB1MWwBn2FU8RiL3rQ8gpXkQm2EY= +github.com/samber/slog-zerolog/v2 v2.7.3/go.mod h1:oWU7WHof4Xp8VguiNO02r1a4VzkgoOyOZhY5CuRke60= github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= github.com/sethvargo/go-retry v0.3.0 h1:EEt31A35QhrcRZtrYFDTBg91cqZVnFL2navjDrah2SE= @@ -387,6 +410,10 @@ github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zcalusic/sysinfo v1.0.1 h1:cVh8q3codjh43AGRTa54dJ2Zq+qPejv8n2VWpxKViwc= github.com/zcalusic/sysinfo v1.0.1/go.mod h1:LxwKwtQdbTIQc65drhjQzYzt0o7jfB80LrrZm7SWn8o= +github.com/zhouhui8915/engine.io-go v0.0.0-20150910083302-02ea08f0971f h1:tx1VqrLN1pol7xia95NVBbG09QHmMJjGvn67sR70qDA= +github.com/zhouhui8915/engine.io-go v0.0.0-20150910083302-02ea08f0971f/go.mod h1:9U9sAGG8VWujCrAnepe5aiOeqyEtBoKTcne9l0pztac= +github.com/zhouhui8915/go-socket.io-client v0.0.0-20200925034401-83ee73793ba4 h1:1/TmoDdySJm4tUorORqfPUjPgZVmF772DZVn5/JBaF8= +github.com/zhouhui8915/go-socket.io-client v0.0.0-20200925034401-83ee73793ba4/go.mod h1:gqWuIplvY8EL+k2pUZAe/G21MnuGElct4jKx0HaO+UM= github.com/ziflex/lecho/v3 v3.1.0 h1:65bSzSc0yw7EEhi44lMnkOI877ZzbE7tGDWfYCQXZwI= github.com/ziflex/lecho/v3 v3.1.0/go.mod h1:dwQ6xCAKmSBHhwZ6XmiAiDptD7iklVkW7xQYGUncX0Q= github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= @@ -502,8 +529,10 @@ golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20250807160809-1a19826ec488 h1:3doPGa+Gg4snce233aCWnbZVFsyFMo/dR40KK/6skyE= diff --git a/internal/manager/eventbus/mqtt_client.go b/internal/manager/eventbus/mqtt_client.go index 43dc7301..669aa021 100644 --- a/internal/manager/eventbus/mqtt_client.go +++ b/internal/manager/eventbus/mqtt_client.go @@ -87,7 +87,6 @@ func NewMQTTForwarder(config MQTTClientConfig) *MQTTForwarder { ConnectRetryDelay: connectRetryDelay, OnConnectionUp: client.onConnectionUp, OnConnectError: client.onConnectionError, - Debug: paho.NOOPLogger{}, ClientConfig: paho.ClientConfig{ ClientID: config.ClientID, OnClientError: client.onClientError,