wow that took awhile
This commit is contained in:
@@ -4,7 +4,9 @@ import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
"strings"
|
||||
"syscall"
|
||||
|
||||
"github.com/42wim/matterbridge/bridge/config"
|
||||
"github.com/42wim/matterbridge/gateway"
|
||||
@@ -20,6 +22,7 @@ var (
|
||||
flagDebug = flag.Bool("debug", false, "enable debug")
|
||||
flagVersion = flag.Bool("version", false, "show version")
|
||||
flagGops = flag.Bool("gops", false, "enable gops agent")
|
||||
flagMuted = flag.Bool("muted", false, "start with Jackbox announcements muted")
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -44,6 +47,11 @@ func main() {
|
||||
if strings.Contains(version.Release, "-dev") {
|
||||
logger.Println("WARNING: THIS IS A DEVELOPMENT VERSION. Things may break.")
|
||||
}
|
||||
|
||||
// Debug: Log muted flag state
|
||||
if *flagMuted {
|
||||
logger.Info("Muted flag detected: --muted")
|
||||
}
|
||||
|
||||
cfg := config.NewConfig(rootLogger, *flagConfig)
|
||||
cfg.BridgeValues().General.Debug = *flagDebug
|
||||
@@ -61,13 +69,48 @@ func main() {
|
||||
if err != nil {
|
||||
logger.Fatalf("Starting gateway failed: %s", err)
|
||||
}
|
||||
|
||||
// Set initial mute state BEFORE starting (so it's set when callbacks are created)
|
||||
if *flagMuted && r.JackboxManager != nil {
|
||||
r.JackboxManager.SetMuted(true)
|
||||
logger.Warn("🔇 Jackbox announcements starting MUTED (use SIGUSR1 to toggle)")
|
||||
}
|
||||
|
||||
// Setup signal handler for mute toggle (before starting)
|
||||
setupMuteToggle(r, logger)
|
||||
|
||||
if err = r.Start(); err != nil {
|
||||
logger.Fatalf("Starting gateway failed: %s", err)
|
||||
}
|
||||
|
||||
logger.Printf("Gateway(s) started successfully. Now relaying messages")
|
||||
select {}
|
||||
}
|
||||
|
||||
func setupMuteToggle(r *gateway.Router, logger *logrus.Entry) {
|
||||
if r.JackboxManager == nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Create channel for SIGUSR1 signal
|
||||
sigChan := make(chan os.Signal, 1)
|
||||
signal.Notify(sigChan, syscall.SIGUSR1)
|
||||
|
||||
// Start goroutine to handle signal
|
||||
go func() {
|
||||
for range sigChan {
|
||||
isMuted := r.JackboxManager.ToggleMuted()
|
||||
if isMuted {
|
||||
logger.Warn("🔇 Jackbox announcements MUTED")
|
||||
} else {
|
||||
logger.Info("🔊 Jackbox announcements UNMUTED")
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
logger.Info("Signal handler ready: Send SIGUSR1 to toggle mute (kill -SIGUSR1 <pid> or docker kill -s SIGUSR1 <container>)")
|
||||
}
|
||||
|
||||
func setupLogger() *logrus.Logger {
|
||||
logger := &logrus.Logger{
|
||||
Out: os.Stdout,
|
||||
|
||||
Reference in New Issue
Block a user