From 1f0840bb74ac4f18b0503eef1602d4a9b07eb9ce Mon Sep 17 00:00:00 2001 From: Tyler Stiene Date: Sat, 13 Feb 2021 21:06:24 -0500 Subject: [PATCH] remove local mumble user list --- bridge.go | 30 ++++++++++-------------------- main.go | 3 +-- mumble-handlers.go | 15 +-------------- 3 files changed, 12 insertions(+), 36 deletions(-) diff --git a/bridge.go b/bridge.go index 6e6bac5..3bce175 100644 --- a/bridge.go +++ b/bridge.go @@ -53,10 +53,6 @@ type BridgeState struct { DiscordUsers map[string]discordUser DiscordUsersMutex sync.Mutex - // Map of Mumble users tracked by this bridge - MumbleUsers map[string]bool - MumbleUsersMutex sync.Mutex - // Total Number of Mumble users MumbleUserCount int @@ -184,9 +180,6 @@ func (b *BridgeState) startBridge() { b.Connected = false wg.Wait() log.Println("Terminating Bridge") - b.MumbleUsersMutex.Lock() - b.MumbleUsers = make(map[string]bool) - b.MumbleUsersMutex.Unlock() b.DiscordUsers = make(map[string]discordUser) } @@ -199,25 +192,24 @@ func (b *BridgeState) discordStatusUpdate() { if err != nil { log.Printf("error pinging mumble server %v\n", err) - b.DiscordSession.UpdateListeningStatus("an error pinging mumble") + status = "an error polling mumble" } else { - b.MumbleUsersMutex.Lock() b.MumbleUserCount = resp.ConnectedUsers if b.Connected { b.MumbleUserCount = b.MumbleUserCount - 1 - } - if b.MumbleUserCount == 0 { - status = "No users in Mumble" - } else { - if len(b.MumbleUsers) > 0 { - status = fmt.Sprintf("%v/%v users in Mumble\n", len(b.MumbleUsers), b.MumbleUserCount) + + if b.MumbleUserCount == 0 { + status = "No users in Mumble" } else { - status = fmt.Sprintf("%v users in Mumble\n", b.MumbleUserCount) + channelCount := len(b.MumbleClient.Self.Channel.Users) - 1 + status = fmt.Sprintf("%v/%v users in Mumble\n", channelCount, b.MumbleUserCount) } + } else { + status = fmt.Sprintf("%v users in Mumble\n", b.MumbleUserCount) } - b.MumbleUsersMutex.Unlock() - b.DiscordSession.UpdateListeningStatus(status) } + + b.DiscordSession.UpdateListeningStatus(status) } } @@ -236,7 +228,6 @@ func (b *BridgeState) AutoBridge() { return } - b.MumbleUsersMutex.Lock() b.DiscordUsersMutex.Lock() if !b.Connected && b.MumbleUserCount > 0 && len(b.DiscordUsers) > 0 { @@ -248,7 +239,6 @@ func (b *BridgeState) AutoBridge() { b.BridgeDie <- true } - b.MumbleUsersMutex.Unlock() b.DiscordUsersMutex.Unlock() } } diff --git a/main.go b/main.go index b39e224..826764d 100644 --- a/main.go +++ b/main.go @@ -39,7 +39,7 @@ func main() { mumbleUsername := flag.String("mumble-username", lookupEnvOrString("MUMBLE_USERNAME", "Discord"), "MUMBLE_USERNAME, mumble username, (default: discord)") mumblePassword := flag.String("mumble-password", lookupEnvOrString("MUMBLE_PASSWORD", ""), "MUMBLE_PASSWORD, mumble password, optional") mumbleInsecure := flag.Bool("mumble-insecure", lookupEnvOrBool("MUMBLE_INSECURE", false), " MUMBLE_INSECURE, mumble insecure, optional") - mumbleChannel := flag.String("mumble-channel", lookupEnvOrString("MUMBLE_CHANNEL", ""), "MUMBLE_CHANNEL, mumble channel to start in, using '/' to seperate nested channels, optional") + mumbleChannel := flag.String("mumble-channel", lookupEnvOrString("MUMBLE_CHANNEL", ""), "MUMBLE_CHANNEL, mumble channel to start in, using '/' to separate nested channels, optional") mumbleDisableText := flag.Bool("mumble-disable-text", lookupEnvOrBool("MUMBLE_DISABLE_TEXT", false), "MUMBLE_DISABLE_TEXT, disable sending text to mumble, (default false)") discordToken := flag.String("discord-token", lookupEnvOrString("DISCORD_TOKEN", ""), "DISCORD_TOKEN, discord bot token, required") discordGID := flag.String("discord-gid", lookupEnvOrString("DISCORD_GID", ""), "DISCORD_GID, discord gid, required") @@ -110,7 +110,6 @@ func main() { }, Connected: false, DiscordUsers: make(map[string]discordUser), - MumbleUsers: make(map[string]bool), } // MUMBLE SETUP diff --git a/mumble-handlers.go b/mumble-handlers.go index 6350c68..e7504b3 100644 --- a/mumble-handlers.go +++ b/mumble-handlers.go @@ -21,19 +21,6 @@ func (l *MumbleListener) mumbleConnect(e *gumble.ConnectEvent) { } func (l *MumbleListener) mumbleUserChange(e *gumble.UserChangeEvent) { - l.Bridge.MumbleUsersMutex.Lock() - if e.Type.Has(gumble.UserChangeConnected) || e.Type.Has(gumble.UserChangeChannel) || e.Type.Has(gumble.UserChangeDisconnected) { - l.Bridge.MumbleUsers = make(map[string]bool) - for _, user := range l.Bridge.MumbleClient.Self.Channel.Users { - //note, this might be too slow for really really big channels? - //event listeners block while processing - //also probably bad to rebuild the set every user change. - if user.Name != l.Bridge.MumbleClient.Self.Name { - l.Bridge.MumbleUsers[user.Name] = true - } - } - } - l.Bridge.MumbleUsersMutex.Unlock() if e.Type.Has(gumble.UserChangeConnected) { @@ -54,7 +41,7 @@ func (l *MumbleListener) mumbleUserChange(e *gumble.UserChangeEvent) { arr = append(arr, l.Bridge.DiscordUsers[u].username) } - s = s + strings.Join(arr[:], ",") + s = s + strings.Join(arr[:], ", ") l.Bridge.DiscordUsersMutex.Unlock() e.User.Send(s)