commit 329512dee8bc1fffbf510737dea9ed00633a3f9f
Author: Wim <wim@42.be>
Date: Sat Nov 05 01:11:28 2016 +0000
diff --git a/bridge/config/config.go b/bridge/config/config.go
index 8922289..32c8c74 100644
--- a/bridge/config/config.go
+++ b/bridge/config/config.go
@@ -1223 +12219 @@ func OverrideCfgFromEnv(cfg *Config, protocol string, account string) {
}
}
}
+
+func GetIconURL(msg *Message, cfg *Protocol) string {
+ iconURL := cfg.IconURL
+ iconURL = strings.Replace(iconURL, "{NICK}", msg.Username, -1)
+ iconURL = strings.Replace(iconURL, "{BRIDGE}", msg.Origin, -1)
+ iconURL = strings.Replace(iconURL, "{PROTOCOL}", msg.Protocol, -1)
+ return iconURL
+}
+
+func GetNick(msg *Message, cfg *Protocol) string {
+ nick := cfg.RemoteNickFormat
+ nick = strings.Replace(nick, "{NICK}", msg.Username, -1)
+ nick = strings.Replace(nick, "{BRIDGE}", msg.Origin, -1)
+ nick = strings.Replace(nick, "{PROTOCOL}", msg.Protocol, -1)
+ return nick
+}
diff --git a/bridge/discord/discord.go b/bridge/discord/discord.go
index 446977a..7995a06 100644
--- a/bridge/discord/discord.go
+++ b/bridge/discord/discord.go
@@ -1037 +1038 @@ func (b *bdiscord) Send(msg config.Message) error {
flog.Errorf("Could not find channelID for %v", msg.Channel)
return nil
}
- b.c.ChannelMessageSend(channelID, msg.Username+msg.Text)
+ nick := config.GetNick(&msg, b.Config)
+ b.c.ChannelMessageSend(channelID, nick+msg.Text)
return nil
}
diff --git a/bridge/gitter/gitter.go b/bridge/gitter/gitter.go
index 95c41af..5daf777 100644
--- a/bridge/gitter/gitter.go
+++ b/bridge/gitter/gitter.go
@@ -1058 +1059 @@ func (b *Bgitter) Send(msg config.Message) error {
flog.Errorf("Could not find roomID for %v", msg.Channel)
return nil
}
+ nick := config.GetNick(&msg, b.Config)
// add ZWSP because gitter echoes our own messages
- return b.c.SendMessage(roomID, msg.Username+msg.Text+" ")
+ return b.c.SendMessage(roomID, nick+msg.Text+" ")
}
func (b *Bgitter) getRoomID(channel string) string {
diff --git a/bridge/irc/irc.go b/bridge/irc/irc.go
index 30f2772..61b55da 100644
--- a/bridge/irc/irc.go
+++ b/bridge/irc/irc.go
@@ -12312 +12313 @@ func (b *Birc) Send(msg config.Message) error {
b.Command(&msg)
return nil
}
+ nick := config.GetNick(&msg, b.Config)
for _, text := range strings.Split(msg.Text, "\n") {
if len(b.Local) < b.Config.MessageQueue {
if len(b.Local) == b.Config.MessageQueue-1 {
text = text + " <message clipped>"
}
- b.Local <- config.Message{Text: text, Username: msg.Username, Channel: msg.Channel}
+ b.Local <- config.Message{Text: text, Username: nick, Channel: msg.Channel}
} else {
flog.Debugf("flooding, dropping message (queue at %d)", len(b.Local))
}
diff --git a/bridge/mattermost/mattermost.go b/bridge/mattermost/mattermost.go
index 6236579..7f7340b 100644
--- a/bridge/mattermost/mattermost.go
+++ b/bridge/mattermost/mattermost.go
@@ -10610 +10610 @@ func (b *Bmattermost) Protocol() string {
func (b *Bmattermost) Send(msg config.Message) error {
flog.Debugf("Receiving %#v", msg)
- return b.SendType(msg.Username, msg.Text, msg.Channel, "")
-}
+ nick := config.GetNick(&msg, b.Config)
+ message := msg.Text
+ channel := msg.Channel
-func (b *Bmattermost) SendType(nick string, message string, channel string, mtype string) error {
if b.Config.PrefixMessagesWithNick {
/*if IsMarkup(message) {
message = nick + "\n\n" + message
@@ -1227 +1227 @@ func (b *Bmattermost) SendType(nick string, message string, channel string, mtyp
matterMessage := matterhook.OMessage{IconURL: b.Config.IconURL}
matterMessage.Channel = channel
matterMessage.UserName = nick
- matterMessage.Type = mtype
+ matterMessage.Type = ""
matterMessage.Text = message
err := b.mh.Send(matterMessage)
if err != nil {
diff --git a/bridge/slack/slack.go b/bridge/slack/slack.go
index 3b0a6c8..412c925 100644
--- a/bridge/slack/slack.go
+++ b/bridge/slack/slack.go
@@ -9413 +9412 @@ func (b *Bslack) Origin() string {
func (b *Bslack) Send(msg config.Message) error {
flog.Debugf("Receiving %#v", msg)
- if msg.FullOrigin != b.FullOrigin() {
- return b.SendType(msg.Username, msg.Text, msg.Channel, "")
+ if msg.FullOrigin == b.FullOrigin() {
+ return nil
}
- return nil
-}
-
-func (b *Bslack) SendType(nick string, message string, channel string, mtype string) error {
+ nick := config.GetNick(&msg, b.Config)
+ message := msg.Text
+ channel := msg.Channel
if b.Config.PrefixMessagesWithNick {
message = nick + " " + message
}
@@ -1087 +1077 @@ func (b *Bslack) SendType(nick string, message string, channel string, mtype str
matterMessage := matterhook.OMessage{IconURL: b.Config.IconURL}
matterMessage.Channel = channel
matterMessage.UserName = nick
- matterMessage.Type = mtype
+ matterMessage.Type = ""
matterMessage.Text = message
err := b.mh.Send(matterMessage)
if err != nil {
@@ -1218 +12019 @@ func (b *Bslack) SendType(nick string, message string, channel string, mtype str
if err != nil {
return err
}
- newmsg := b.rtm.NewOutgoingMessage(message, schannel.ID)
- b.rtm.SendMessage(newmsg)
+ np := slack.NewPostMessageParameters()
+ if b.Config.PrefixMessagesWithNick == true {
+ np.AsUser = true
+ }
+ np.Username = nick
+ np.IconURL = config.GetIconURL(&msg, b.Config)
+ b.sc.PostMessage(schannel.ID, message, np)
+
+ /*
+ newmsg := b.rtm.NewOutgoingMessage(message, schannel.ID)
+ b.rtm.SendMessage(newmsg)
+ */
+
return nil
}
diff --git a/bridge/xmpp/xmpp.go b/bridge/xmpp/xmpp.go
index 164284e..51237a0 100644
--- a/bridge/xmpp/xmpp.go
+++ b/bridge/xmpp/xmpp.go
@@ -717 +718 @@ func (b *Bxmpp) Origin() string {
func (b *Bxmpp) Send(msg config.Message) error {
flog.Debugf("Receiving %#v", msg)
- b.xc.Send(xmpp.Chat{Type: "groupchat", Remote: msg.Channel + "@" + b.Config.Muc, Text: msg.Username + msg.Text})
+ nick := config.GetNick(&msg, b.Config)
+ b.xc.Send(xmpp.Chat{Type: "groupchat", Remote: msg.Channel + "@" + b.Config.Muc, Text: nick + msg.Text})
return nil
}
diff --git a/gateway/gateway.go b/gateway/gateway.go
index 7cf995b..13b6be1 100644
--- a/gateway/gateway.go
+++ b/gateway/gateway.go
@@ -1177 +1176 @@ func (gw *Gateway) handleMessage(msg config.Message, dest bridge.Bridge) {
log.Debug("empty channel")
return
}
- gw.modifyMessage(&msg, dest)
log.Debugf("Sending %#v from %s (%s) to %s (%s)", msg, msg.FullOrigin, originchannel, dest.FullOrigin(), channel)
err := dest.Send(msg)
if err != nil {
@@ -14416 +1439 @@ func (gw *Gateway) modifyMessage(msg *config.Message, dest bridge.Bridge) {
if strings.ToLower(typeField.Name) == dest.Protocol() {
// get the Protocol struct from the map
protoCfg := val.Field(i).MapIndex(reflect.ValueOf(dest.Origin()))
- setNickFormat(msg, protoCfg.Interface().(config.Protocol))
+ //config.SetNickFormat(msg, protoCfg.Interface().(config.Protocol))
val.Field(i).SetMapIndex(reflect.ValueOf(dest.Origin()), protoCfg)
break
}
}
}
-
-func setNickFormat(msg *config.Message, cfg config.Protocol) {
- format := cfg.RemoteNickFormat
- msg.Username = strings.Replace(format, "{NICK}", msg.Username, -1)
- msg.Username = strings.Replace(msg.Username, "{BRIDGE}", msg.Origin, -1)
- msg.Username = strings.Replace(msg.Username, "{PROTOCOL}", msg.Protocol, -1)
-}
diff --git a/matterbridge.toml.sample b/matterbridge.toml.sample
index f01a3b4..ed26ba9 100644
--- a/matterbridge.toml.sample
+++ b/matterbridge.toml.sample
@@ -417 +417 @@ NickServPassword="secret"
#The string "{NICK}" (case sensitive) will be replaced by the actual nick / username.
#The string "{BRIDGE}" (case sensitive) will be replaced by the sending bridge
#The string "{PROTOCOL}" (case sensitive) will be replaced by the protocol used by the bridge
-#OPTIONAL (default {BRIDGE}-{NICK})
+#OPTIONAL (default empty)
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "
#Nicks you want to ignore.
@@ -1667 +1667 @@ PrefixMessagesWithNick=false
#The string "{NICK}" (case sensitive) will be replaced by the actual nick / username.
#The string "{BRIDGE}" (case sensitive) will be replaced by the sending bridge
#The string "{PROTOCOL}" (case sensitive) will be replaced by the protocol used by the bridge
-#OPTIONAL (default {BRIDGE}-{NICK})
+#OPTIONAL (default empty)
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "
#how to format the list of IRC nicks when displayed in mattermost.
@@ -2057 +2057 @@ IgnoreNicks="spammer1 spammer2"
#The string "{NICK}" (case sensitive) will be replaced by the actual nick / username.
#The string "{BRIDGE}" (case sensitive) will be replaced by the sending bridge
#The string "{PROTOCOL}" (case sensitive) will be replaced by the protocol used by the bridge
-#OPTIONAL (default {BRIDGE}-{NICK})
+#OPTIONAL (default empty)
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "
###################################################################
@@ -23210 +2326 @@ URL="https://hooks.slack.com/services/yourhook"
#REQUIRED (unless useAPI=true)
BindAddress="0.0.0.0:9999"
-#Icon that will be showed in slack
-#OPTIONAL
-IconURL="http://youricon.png"
-
#### Settings for using slack API
#OPTIONAL
useAPI=false
@@ -2467 +24214 @@ Token="yourslacktoken"
#### Shared settings for webhooks and API
-#Whether to prefix messages from other bridges to mattermost with the sender's nick.
+#Icon that will be showed in slack
+#The string "{NICK}" (case sensitive) will be replaced by the actual nick / username.
+#The string "{BRIDGE}" (case sensitive) will be replaced by the sending bridge
+#The string "{PROTOCOL}" (case sensitive) will be replaced by the protocol used by the bridge
+#OPTIONAL
+IconURL="https://robohash.org/{NICK}.png?size=48x48"
+
+#Whether to prefix messages from other bridges to mattermost with RemoteNickFormat
#Useful if username overrides for incoming webhooks isn't enabled on the
#slack server. If you set PrefixMessagesWithNick to true, each message
#from bridge to Slack will by default be prefixed by "bridge-" + nick. You can,
@@ -2578 +2608 @@ PrefixMessagesWithNick=false
#RemoteNickFormat defines how remote users appear on this bridge
#The string "{NICK}" (case sensitive) will be replaced by the actual nick / username.
#The string "{BRIDGE}" (case sensitive) will be replaced by the sending bridge
-#OPTIONAL (default {BRIDGE}-{NICK})
#The string "{PROTOCOL}" (case sensitive) will be replaced by the protocol used by the bridge
+#OPTIONAL (default empty)
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "
#how to format the list of IRC nicks when displayed in slack
@@ -3007 +3037 @@ IgnoreNicks="spammer1 spammer2"
#The string "{NICK}" (case sensitive) will be replaced by the actual nick / username.
#The string "{BRIDGE}" (case sensitive) will be replaced by the sending bridge
#The string "{PROTOCOL}" (case sensitive) will be replaced by the protocol used by the bridge
-#OPTIONAL (default {BRIDGE}-{NICK})
+#OPTIONAL (default empty)
RemoteNickFormat="[{PROTOCOL}] <{NICK}> "