gofmt bridge/mumble
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user