summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWim <wim@42.be>2017-11-20 23:27:27 +0100
committerWim <wim@42.be>2017-11-20 23:27:27 +0100
commitcd4c9b194fe486bcea08c1b9166e1ac22508ab00 (patch)
tree40c6ac0715228f10259ec31c4bcc4050a3a11387
parent98762a02356d41857e8a474daba602e8d258d5b9 (diff)
downloadmatterbridge-msglm-cd4c9b194fe486bcea08c1b9166e1ac22508ab00.tar.gz
matterbridge-msglm-cd4c9b194fe486bcea08c1b9166e1ac22508ab00.tar.bz2
matterbridge-msglm-cd4c9b194fe486bcea08c1b9166e1ac22508ab00.zip
Add support for ReplaceNicks using regexp to replace nicks. Closes #269
-rw-r--r--bridge/config/config.go13
-rw-r--r--gateway/gateway.go14
2 files changed, 21 insertions, 6 deletions
diff --git a/bridge/config/config.go b/bridge/config/config.go
index f26e60bb..afb9f1a0 100644
--- a/bridge/config/config.go
+++ b/bridge/config/config.go
@@ -59,6 +59,10 @@ type Protocol struct {
IgnoreMessages string // all protocols
Jid string // xmpp
Login string // mattermost, matrix
+ MessageQueue int // IRC, size of message queue for flood control
+ MessageDelay int // IRC, time in millisecond to wait between messages
+ MessageLength int // IRC, max length of a message allowed
+ MessageFormat string // telegram
Muc string // xmpp
Name string // all protocols
Nick string // all protocols
@@ -71,12 +75,9 @@ type Protocol struct {
NoTLS bool // mattermost
Password string // IRC,mattermost,XMPP,matrix
PrefixMessagesWithNick bool // mattemost, slack
- Protocol string //all protocols
- ReplaceMessages [][]string // all messages
- MessageQueue int // IRC, size of message queue for flood control
- MessageDelay int // IRC, time in millisecond to wait between messages
- MessageLength int // IRC, max length of a message allowed
- MessageFormat string // telegram
+ Protocol string // all protocols
+ ReplaceMessages [][]string // all protocols
+ ReplaceNicks [][]string // all protocols
RemoteNickFormat string // all protocols
Server string // IRC,mattermost,XMPP,discord
ShowJoinPart bool // all protocols
diff --git a/gateway/gateway.go b/gateway/gateway.go
index 8a0a666f..be03a99b 100644
--- a/gateway/gateway.go
+++ b/gateway/gateway.go
@@ -254,6 +254,20 @@ func (gw *Gateway) modifyUsername(msg config.Message, dest *bridge.Bridge) strin
if nick == "" {
nick = gw.Config.General.RemoteNickFormat
}
+
+ // loop to replace nicks
+ for _, outer := range br.Config.ReplaceNicks {
+ search := outer[0]
+ replace := outer[1]
+ // TODO move compile to bridge init somewhere
+ re, err := regexp.Compile(search)
+ if err != nil {
+ log.Errorf("regexp in %s failed: %s", msg.Account, err)
+ break
+ }
+ msg.Username = re.ReplaceAllString(msg.Username, replace)
+ }
+
if len(msg.Username) > 0 {
// fix utf-8 issue #193
i := 0