gofmt bridge/mumble

This commit is contained in:
s3lph
2020-09-24 02:03:13 +02:00
parent db8187b7e5
commit 02b7c37df1
2 changed files with 42 additions and 55 deletions

View File

@@ -6,25 +6,22 @@ import (
"layeh.com/gumble/gumbleutil" "layeh.com/gumble/gumbleutil"
) )
func (b *Bmumble) handleServerConfig(event *gumble.ServerConfigEvent) { func (b *Bmumble) handleServerConfig(event *gumble.ServerConfigEvent) {
b.serverConfigUpdate <- *event b.serverConfigUpdate <- *event
} }
func (b *Bmumble) handleTextMessage(event *gumble.TextMessageEvent) { func (b *Bmumble) handleTextMessage(event *gumble.TextMessageEvent) {
rmsg := config.Message{ rmsg := config.Message{
Text: event.TextMessage.Message, Text: event.TextMessage.Message,
Channel: event.Client.Self.Channel.Name, Channel: event.Client.Self.Channel.Name,
Username: event.TextMessage.Sender.Name, Username: event.TextMessage.Sender.Name,
UserID: event.TextMessage.Sender.Name + "@" + b.Host, UserID: event.TextMessage.Sender.Name + "@" + b.Host,
Account: b.Account, Account: b.Account,
} }
b.Log.Debug("<= Remote message is %+v", rmsg) b.Log.Debug("<= Remote message is %+v", rmsg)
b.Remote <- rmsg b.Remote <- rmsg
} }
func (b *Bmumble) handleConnect(event *gumble.ConnectEvent) { func (b *Bmumble) handleConnect(event *gumble.ConnectEvent) {
// Set the user's "bio"/comment // Set the user's "bio"/comment
if comment := b.GetString("UserComment"); comment != "" { if comment := b.GetString("UserComment"); comment != "" {
@@ -38,15 +35,14 @@ func (b *Bmumble) handleConnect(event *gumble.ConnectEvent) {
b.doJoin(event.Client, b.Channel) b.doJoin(event.Client, b.Channel)
b.Remote <- config.Message{ b.Remote <- config.Message{
Username: "system", Username: "system",
Text: "rejoin", Text: "rejoin",
Channel: "", Channel: "",
Account: b.Account, Account: b.Account,
Event: config.EventRejoinChannels, Event: config.EventRejoinChannels,
} }
} }
} }
func (b *Bmumble) handleUserChange(event *gumble.UserChangeEvent) { func (b *Bmumble) handleUserChange(event *gumble.UserChangeEvent) {
// Only care about changes to self // Only care about changes to self
if event.User != event.Client.Self { if event.User != event.Client.Self {
@@ -58,25 +54,23 @@ func (b *Bmumble) handleUserChange(event *gumble.UserChangeEvent) {
} }
} }
func (b *Bmumble) handleDisconnect(event *gumble.DisconnectEvent) { func (b *Bmumble) handleDisconnect(event *gumble.DisconnectEvent) {
b.connected <- *event b.connected <- *event
} }
func (b *Bmumble) makeDebugHandler() *gumbleutil.Listener {
func (b *Bmumble) makeDebugHandler() (*gumbleutil.Listener) {
handler := gumbleutil.Listener{ handler := gumbleutil.Listener{
Connect: func(e *gumble.ConnectEvent) { b.Log.Debugf("Received connect event: %+v", e) }, Connect: func(e *gumble.ConnectEvent) { b.Log.Debugf("Received connect event: %+v", e) },
Disconnect: func(e *gumble.DisconnectEvent) { b.Log.Debugf("Received disconnect event: %+v", e) }, Disconnect: func(e *gumble.DisconnectEvent) { b.Log.Debugf("Received disconnect event: %+v", e) },
TextMessage: func(e *gumble.TextMessageEvent) { b.Log.Debugf("Received textmessage event: %+v", e) }, TextMessage: func(e *gumble.TextMessageEvent) { b.Log.Debugf("Received textmessage event: %+v", e) },
UserChange: func(e *gumble.UserChangeEvent) { b.Log.Debugf("Received userchange event: %+v", e) }, UserChange: func(e *gumble.UserChangeEvent) { b.Log.Debugf("Received userchange event: %+v", e) },
ChannelChange: func(e *gumble.ChannelChangeEvent) { b.Log.Debugf("Received channelchange event: %+v", e) }, ChannelChange: func(e *gumble.ChannelChangeEvent) { b.Log.Debugf("Received channelchange event: %+v", e) },
PermissionDenied: func(e *gumble.PermissionDeniedEvent) { b.Log.Debugf("Received permissiondenied event: %+v", e) }, PermissionDenied: func(e *gumble.PermissionDeniedEvent) { b.Log.Debugf("Received permissiondenied event: %+v", e) },
UserList: func(e *gumble.UserListEvent) { b.Log.Debugf("Received userlist event: %+v", e) }, UserList: func(e *gumble.UserListEvent) { b.Log.Debugf("Received userlist event: %+v", e) },
ACL: func(e *gumble.ACLEvent) { b.Log.Debugf("Received acl event: %+v", e) }, ACL: func(e *gumble.ACLEvent) { b.Log.Debugf("Received acl event: %+v", e) },
BanList: func(e *gumble.BanListEvent) { b.Log.Debugf("Received banlist event: %+v", e) }, BanList: func(e *gumble.BanListEvent) { b.Log.Debugf("Received banlist event: %+v", e) },
ContextActionChange: func(e *gumble.ContextActionChangeEvent) { b.Log.Debugf("Received contextactionchange event: %+v", e) }, ContextActionChange: func(e *gumble.ContextActionChangeEvent) { b.Log.Debugf("Received contextactionchange event: %+v", e) },
ServerConfig: func(e *gumble.ServerConfigEvent) { b.Log.Debugf("Received serverconfig event: %+v", e) }, ServerConfig: func(e *gumble.ServerConfigEvent) { b.Log.Debugf("Received serverconfig event: %+v", e) },
} }
return &handler return &handler
} }

View File

@@ -12,32 +12,30 @@ import (
"github.com/42wim/matterbridge/bridge" "github.com/42wim/matterbridge/bridge"
"github.com/42wim/matterbridge/bridge/config" "github.com/42wim/matterbridge/bridge/config"
"github.com/42wim/matterbridge/bridge/helper" "github.com/42wim/matterbridge/bridge/helper"
stripmd "github.com/writeas/go-strip-markdown"
"layeh.com/gumble/gumble" "layeh.com/gumble/gumble"
"layeh.com/gumble/gumbleutil" "layeh.com/gumble/gumbleutil"
stripmd "github.com/writeas/go-strip-markdown"
// We need to import the 'data' package as an implicit dependency. // We need to import the 'data' package as an implicit dependency.
// See: https://godoc.org/github.com/paulrosania/go-charset/charset // See: https://godoc.org/github.com/paulrosania/go-charset/charset
_ "github.com/paulrosania/go-charset/data" _ "github.com/paulrosania/go-charset/data"
) )
type Bmumble struct { type Bmumble struct {
client *gumble.Client client *gumble.Client
Nick string Nick string
Host string Host string
Channel string Channel string
local chan config.Message local chan config.Message
running chan error running chan error
connected chan gumble.DisconnectEvent connected chan gumble.DisconnectEvent
serverConfigUpdate chan gumble.ServerConfigEvent serverConfigUpdate chan gumble.ServerConfigEvent
serverConfig gumble.ServerConfigEvent serverConfig gumble.ServerConfigEvent
tlsConfig tls.Config tlsConfig tls.Config
*bridge.Config *bridge.Config
} }
func New(cfg *bridge.Config) bridge.Bridger { func New(cfg *bridge.Config) bridge.Bridger {
b := &Bmumble{} b := &Bmumble{}
b.Config = cfg b.Config = cfg
@@ -49,7 +47,6 @@ func New(cfg *bridge.Config) bridge.Bridger {
return b return b
} }
func (b *Bmumble) Connect() error { func (b *Bmumble) Connect() error {
b.Log.Infof("Connecting %s", b.GetString("Server")) b.Log.Infof("Connecting %s", b.GetString("Server"))
host, portstr, err := net.SplitHostPort(b.GetString("Server")) host, portstr, err := net.SplitHostPort(b.GetString("Server"))
@@ -68,7 +65,7 @@ func (b *Bmumble) Connect() error {
if ckey := b.GetString("TLSClientKey"); ckey != "" { if ckey := b.GetString("TLSClientKey"); ckey != "" {
cert, err := tls.LoadX509KeyPair(cpath, ckey) cert, err := tls.LoadX509KeyPair(cpath, ckey)
if err != nil { if err != nil {
return err return err
} }
b.tlsConfig.Certificates = []tls.Certificate{cert} b.tlsConfig.Certificates = []tls.Certificate{cert}
} }
@@ -105,19 +102,17 @@ func (b *Bmumble) JoinChannel(channel config.ChannelInfo) error {
return b.doJoin(b.client, channel.Name) return b.doJoin(b.client, channel.Name)
} }
func (b *Bmumble) Send(msg config.Message) (string, error) { func (b *Bmumble) Send(msg config.Message) (string, error) {
// Only process text messages // Only process text messages
b.Log.Debugf("=> Received local message %#v", msg) b.Log.Debugf("=> Received local message %#v", msg)
if msg.Event != "" && msg.Event != config.EventUserAction { if msg.Event != "" && msg.Event != config.EventUserAction {
return "", nil return "", nil
} }
b.local <- msg b.local <- msg
return "", nil return "", nil
} }
func (b *Bmumble) connectLoop() { func (b *Bmumble) connectLoop() {
firstConnect := true firstConnect := true
for { for {
@@ -162,10 +157,10 @@ func (b *Bmumble) doConnect() error {
gumbleConfig := gumble.NewConfig() gumbleConfig := gumble.NewConfig()
gumbleConfig.Attach(gumbleutil.Listener{ gumbleConfig.Attach(gumbleutil.Listener{
ServerConfig: b.handleServerConfig, ServerConfig: b.handleServerConfig,
TextMessage: b.handleTextMessage, TextMessage: b.handleTextMessage,
Connect: b.handleConnect, Connect: b.handleConnect,
Disconnect: b.handleDisconnect, Disconnect: b.handleDisconnect,
UserChange: b.handleUserChange, UserChange: b.handleUserChange,
}) })
if b.GetInt("DebugLevel") == 0 { if b.GetInt("DebugLevel") == 0 {
gumbleConfig.Attach(b.makeDebugHandler()) gumbleConfig.Attach(b.makeDebugHandler())
@@ -174,7 +169,7 @@ func (b *Bmumble) doConnect() error {
if password := b.GetString("Password"); password != "" { if password := b.GetString("Password"); password != "" {
gumbleConfig.Password = password gumbleConfig.Password = password
} }
client, err := gumble.DialWithDialer(new(net.Dialer), b.GetString("Server"), gumbleConfig, &b.tlsConfig) client, err := gumble.DialWithDialer(new(net.Dialer), b.GetString("Server"), gumbleConfig, &b.tlsConfig)
if err != nil { if err != nil {
return err return err
@@ -193,7 +188,6 @@ func (b *Bmumble) doJoin(client *gumble.Client, name string) error {
return nil return nil
} }
func (b *Bmumble) doSend() { func (b *Bmumble) doSend() {
// Message sending loop that makes sure server-side // Message sending loop that makes sure server-side
// restrictions and client-side message traits don't conflict // restrictions and client-side message traits don't conflict
@@ -209,17 +203,16 @@ func (b *Bmumble) doSend() {
} }
} }
func (b *Bmumble) processMessage(msg *config.Message) { func (b *Bmumble) processMessage(msg *config.Message) {
b.Log.Debugf("Processing message %s", msg.Text) b.Log.Debugf("Processing message %s", msg.Text)
// If HTML is allowed, convert markdown into HTML, otherwise strip markdown // If HTML is allowed, convert markdown into HTML, otherwise strip markdown
if allowHtml := b.serverConfig.AllowHTML; allowHtml == nil || !*allowHtml { if allowHtml := b.serverConfig.AllowHTML; allowHtml == nil || !*allowHtml {
msg.Text = helper.ParseMarkdown(msg.Text) msg.Text = helper.ParseMarkdown(msg.Text)
} else { } else {
msg.Text = stripmd.Strip(msg.Text) msg.Text = stripmd.Strip(msg.Text)
} }
// If there is a maximum message length, split and truncate the lines // If there is a maximum message length, split and truncate the lines
var msgLines []string var msgLines []string
if maxLength := b.serverConfig.MaximumMessageLength; maxLength != nil { if maxLength := b.serverConfig.MaximumMessageLength; maxLength != nil {
@@ -230,7 +223,7 @@ func (b *Bmumble) processMessage(msg *config.Message) {
// Send the individual lindes // Send the individual lindes
for i := range msgLines { for i := range msgLines {
b.Log.Debugf("Sending line: %s", msgLines[i]) b.Log.Debugf("Sending line: %s", msgLines[i])
b.client.Self.Channel.Send(msg.Username + msgLines[i], false) b.client.Self.Channel.Send(msg.Username+msgLines[i], false)
} }
} }