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"
)
func (b *Bmumble) handleServerConfig(event *gumble.ServerConfigEvent) {
b.serverConfigUpdate <- *event
}
func (b *Bmumble) handleTextMessage(event *gumble.TextMessageEvent) {
rmsg := config.Message{
Text: event.TextMessage.Message,
Channel: event.Client.Self.Channel.Name,
Text: event.TextMessage.Message,
Channel: event.Client.Self.Channel.Name,
Username: event.TextMessage.Sender.Name,
UserID: event.TextMessage.Sender.Name + "@" + b.Host,
Account: b.Account,
UserID: event.TextMessage.Sender.Name + "@" + b.Host,
Account: b.Account,
}
b.Log.Debug("<= Remote message is %+v", rmsg)
b.Remote <- rmsg
}
func (b *Bmumble) handleConnect(event *gumble.ConnectEvent) {
// Set the user's "bio"/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.Remote <- config.Message{
Username: "system",
Text: "rejoin",
Channel: "",
Account: b.Account,
Event: config.EventRejoinChannels,
Text: "rejoin",
Channel: "",
Account: b.Account,
Event: config.EventRejoinChannels,
}
}
}
func (b *Bmumble) handleUserChange(event *gumble.UserChangeEvent) {
// Only care about changes to 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) {
b.connected <- *event
}
func (b *Bmumble) makeDebugHandler() (*gumbleutil.Listener) {
func (b *Bmumble) makeDebugHandler() *gumbleutil.Listener {
handler := gumbleutil.Listener{
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) },
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) },
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) },
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) },
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) },
ServerConfig: func(e *gumble.ServerConfigEvent) { b.Log.Debugf("Received serverconfig 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) },
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) },
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) },
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) },
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) },
ServerConfig: func(e *gumble.ServerConfigEvent) { b.Log.Debugf("Received serverconfig event: %+v", e) },
}
return &handler
}

View File

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