diff options
author | Wim <wim@42.be> | 2017-11-20 23:27:27 +0100 |
---|---|---|
committer | Wim <wim@42.be> | 2017-11-20 23:27:27 +0100 |
commit | cd4c9b194fe486bcea08c1b9166e1ac22508ab00 (patch) | |
tree | 40c6ac0715228f10259ec31c4bcc4050a3a11387 | |
parent | 98762a02356d41857e8a474daba602e8d258d5b9 (diff) | |
download | matterbridge-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.go | 13 | ||||
-rw-r--r-- | gateway/gateway.go | 14 |
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 |