From ed7104207347e3a5e7c4bcc5be3ec971823f83c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 2 Sep 2025 09:37:11 +0200 Subject: [PATCH] Add MQTT Server for debugging purposes Add an MQTT server (aka 'broker') that logs all published messages. This is purely for debugging Flamenco Manager's events. Although it should work fine as MQTT broker, it's not meant for production use. Run the server with `go run ./cmd/mqtt-server` --- cmd/mqtt-server/README.md | 29 ++++++++ cmd/mqtt-server/hook.go | 79 ++++++++++++++++++++++ cmd/mqtt-server/main.go | 84 ++++++++++++++++++++++++ cmd/mqtt-server/mqtt_server.go | 59 +++++++++++++++++ go.mod | 15 +++-- go.sum | 29 ++++++++ internal/manager/eventbus/mqtt_client.go | 1 - 7 files changed, 291 insertions(+), 5 deletions(-) create mode 100644 cmd/mqtt-server/README.md create mode 100644 cmd/mqtt-server/hook.go create mode 100644 cmd/mqtt-server/main.go create mode 100644 cmd/mqtt-server/mqtt_server.go 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,