mirror of
https://github.com/42wim/matterbridge.git
synced 2024-12-18 09:02:39 +01:00
parent
aeaea0574f
commit
4525fa31aa
@ -237,38 +237,6 @@ func (gw *Gateway) ignoreTextEmpty(msg *config.Message) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// ignoreTexts returns true if msg.Text matches any of the input regexes.
|
||||
func (gw *Gateway) ignoreTexts(msg *config.Message, input []string) bool {
|
||||
for _, entry := range input {
|
||||
if entry == "" {
|
||||
continue
|
||||
}
|
||||
// TODO do not compile regexps everytime
|
||||
re, err := regexp.Compile(entry)
|
||||
if err != nil {
|
||||
flog.Errorf("incorrect regexp %s for %s", entry, msg.Account)
|
||||
continue
|
||||
}
|
||||
if re.MatchString(msg.Text) {
|
||||
flog.Debugf("matching %s. ignoring %s from %s", entry, msg.Text, msg.Account)
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// ignoreNicks returns true if msg.Username matches any of the input regexes.
|
||||
func (gw *Gateway) ignoreNicks(msg *config.Message, input []string) bool {
|
||||
// is the username in IgnoreNicks field
|
||||
for _, entry := range input {
|
||||
if msg.Username == entry {
|
||||
flog.Debugf("ignoring %s from %s", msg.Username, msg.Account)
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (gw *Gateway) ignoreMessage(msg *config.Message) bool {
|
||||
// if we don't have the bridge, ignore it
|
||||
if _, ok := gw.Bridges[msg.Account]; !ok {
|
||||
@ -277,7 +245,7 @@ func (gw *Gateway) ignoreMessage(msg *config.Message) bool {
|
||||
|
||||
igNicks := strings.Fields(gw.Bridges[msg.Account].GetString("IgnoreNicks"))
|
||||
igMessages := strings.Fields(gw.Bridges[msg.Account].GetString("IgnoreMessages"))
|
||||
if gw.ignoreTextEmpty(msg) || gw.ignoreNicks(msg, igNicks) || gw.ignoreTexts(msg, igMessages) {
|
||||
if gw.ignoreTextEmpty(msg) || gw.ignoreText(msg.Username, igNicks) || gw.ignoreText(msg.Text, igMessages) {
|
||||
return true
|
||||
}
|
||||
|
||||
@ -435,3 +403,23 @@ func getChannelID(msg config.Message) string {
|
||||
func isAPI(account string) bool {
|
||||
return strings.HasPrefix(account, "api.")
|
||||
}
|
||||
|
||||
// ignoreText returns true if text matches any of the input regexes.
|
||||
func (gw *Gateway) ignoreText(text string, input []string) bool {
|
||||
for _, entry := range input {
|
||||
if entry == "" {
|
||||
continue
|
||||
}
|
||||
// TODO do not compile regexps everytime
|
||||
re, err := regexp.Compile(entry)
|
||||
if err != nil {
|
||||
flog.Errorf("incorrect regexp %s", entry)
|
||||
continue
|
||||
}
|
||||
if re.MatchString(text) {
|
||||
flog.Debugf("matching %s. ignoring %s", entry, text)
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
@ -434,68 +434,68 @@ func TestIgnoreTextEmpty(t *testing.T) {
|
||||
|
||||
func TestIgnoreTexts(t *testing.T) {
|
||||
msgTests := map[string]struct {
|
||||
input *config.Message
|
||||
input string
|
||||
re []string
|
||||
output bool
|
||||
}{
|
||||
"no regex": {
|
||||
input: &config.Message{Text: "a text message"},
|
||||
input: "a text message",
|
||||
re: []string{},
|
||||
output: false,
|
||||
},
|
||||
"simple regex": {
|
||||
input: &config.Message{Text: "a text message"},
|
||||
input: "a text message",
|
||||
re: []string{"text"},
|
||||
output: true,
|
||||
},
|
||||
"multiple regex fail": {
|
||||
input: &config.Message{Text: "a text message"},
|
||||
input: "a text message",
|
||||
re: []string{"abc", "123$"},
|
||||
output: false,
|
||||
},
|
||||
"multiple regex pass": {
|
||||
input: &config.Message{Text: "a text message"},
|
||||
input: "a text message",
|
||||
re: []string{"lala", "sage$"},
|
||||
output: true,
|
||||
},
|
||||
}
|
||||
gw := &Gateway{}
|
||||
for testname, testcase := range msgTests {
|
||||
output := gw.ignoreTexts(testcase.input, testcase.re)
|
||||
output := gw.ignoreText(testcase.input, testcase.re)
|
||||
assert.Equalf(t, testcase.output, output, "case '%s' failed", testname)
|
||||
}
|
||||
}
|
||||
|
||||
func TestIgnoreNicks(t *testing.T) {
|
||||
msgTests := map[string]struct {
|
||||
input *config.Message
|
||||
input string
|
||||
re []string
|
||||
output bool
|
||||
}{
|
||||
"no entry": {
|
||||
input: &config.Message{Username: "user", Text: "a text message"},
|
||||
input: "user",
|
||||
re: []string{},
|
||||
output: false,
|
||||
},
|
||||
"one entry": {
|
||||
input: &config.Message{Username: "user", Text: "a text message"},
|
||||
input: "user",
|
||||
re: []string{"user"},
|
||||
output: true,
|
||||
},
|
||||
"multiple entries": {
|
||||
input: &config.Message{Username: "user", Text: "a text message"},
|
||||
input: "user",
|
||||
re: []string{"abc", "user"},
|
||||
output: true,
|
||||
},
|
||||
"multiple entries fail": {
|
||||
input: &config.Message{Username: "user", Text: "a text message"},
|
||||
input: "user",
|
||||
re: []string{"abc", "def"},
|
||||
output: false,
|
||||
},
|
||||
}
|
||||
gw := &Gateway{}
|
||||
for testname, testcase := range msgTests {
|
||||
output := gw.ignoreNicks(testcase.input, testcase.re)
|
||||
output := gw.ignoreText(testcase.input, testcase.re)
|
||||
assert.Equalf(t, testcase.output, output, "case '%s' failed", testname)
|
||||
}
|
||||
}
|
||||
|
@ -102,6 +102,7 @@ ColorNicks=false
|
||||
RunCommands=["PRIVMSG user hello","PRIVMSG chanserv something"]
|
||||
|
||||
#Nicks you want to ignore.
|
||||
#Regular expressions supported
|
||||
#Messages from those users will not be sent to other bridges.
|
||||
#OPTIONAL
|
||||
IgnoreNicks="ircspammer1 ircspammer2"
|
||||
@ -196,6 +197,7 @@ SkipTLSVerify=true
|
||||
## Settings below can be reloaded by editing the file
|
||||
|
||||
#Nicks you want to ignore.
|
||||
#Regular expressions supported
|
||||
#Messages from those users will not be sent to other bridges.
|
||||
#OPTIONAL
|
||||
IgnoreNicks="ircspammer1 ircspammer2"
|
||||
@ -276,6 +278,7 @@ Nick="yourlogin"
|
||||
## Settings below can be reloaded by editing the file
|
||||
|
||||
#Nicks you want to ignore.
|
||||
#Regular expressions supported
|
||||
#Messages from those users will not be sent to other bridges.
|
||||
#OPTIONAL
|
||||
IgnoreNicks="spammer1 spammer2"
|
||||
@ -416,6 +419,7 @@ EditDisable=false
|
||||
EditSuffix=" (edited)"
|
||||
|
||||
#Nicks you want to ignore.
|
||||
#Regular expressions supported
|
||||
#Messages from those users will not be sent to other bridges.
|
||||
#OPTIONAL
|
||||
IgnoreNicks="ircspammer1 ircspammer2"
|
||||
@ -491,6 +495,7 @@ Token="Yourtokenhere"
|
||||
## Settings below can be reloaded by editing the file
|
||||
|
||||
#Nicks you want to ignore.
|
||||
#Regular expressions supported
|
||||
#Messages from those users will not be sent to other bridges.
|
||||
#OPTIONAL
|
||||
IgnoreNicks="ircspammer1 ircspammer2"
|
||||
@ -609,6 +614,7 @@ EditSuffix=" (edited)"
|
||||
PrefixMessagesWithNick=false
|
||||
|
||||
#Nicks you want to ignore.
|
||||
#Regular expressions supported
|
||||
#Messages from those users will not be sent to other bridges.
|
||||
#OPTIONAL
|
||||
IgnoreNicks="ircspammer1 ircspammer2"
|
||||
@ -722,6 +728,7 @@ EditDisable=false
|
||||
EditSuffix=" (edited)"
|
||||
|
||||
#Nicks you want to ignore.
|
||||
#Regular expressions supported
|
||||
#Messages from those users will not be sent to other bridges.
|
||||
#OPTIONAL
|
||||
IgnoreNicks="ircspammer1 ircspammer2"
|
||||
@ -830,6 +837,7 @@ EditDisable=false
|
||||
EditSuffix=" (edited)"
|
||||
|
||||
#Nicks you want to ignore.
|
||||
#Regular expressions supported
|
||||
#Messages from those users will not be sent to other bridges.
|
||||
#OPTIONAL
|
||||
IgnoreNicks="spammer1 spammer2"
|
||||
@ -945,6 +953,7 @@ SkipTLSVerify=true
|
||||
PrefixMessagesWithNick=false
|
||||
|
||||
#Nicks you want to ignore.
|
||||
#Regular expressions supported
|
||||
#Messages from those users will not be sent to other bridges.
|
||||
#OPTIONAL
|
||||
IgnoreNicks="ircspammer1 ircspammer2"
|
||||
@ -1031,6 +1040,7 @@ NoHomeServerSuffix=false
|
||||
PrefixMessagesWithNick=false
|
||||
|
||||
#Nicks you want to ignore.
|
||||
#Regular expressions supported
|
||||
#Messages from those users will not be sent to other bridges.
|
||||
#OPTIONAL
|
||||
IgnoreNicks="spammer1 spammer2"
|
||||
@ -1111,6 +1121,7 @@ Authcode="ABCE12"
|
||||
PrefixMessagesWithNick=false
|
||||
|
||||
#Nicks you want to ignore.
|
||||
#Regular expressions supported
|
||||
#Messages from those users will not be sent to other bridges.
|
||||
#OPTIONAL
|
||||
IgnoreNicks="spammer1 spammer2"
|
||||
@ -1191,6 +1202,7 @@ Topic="matterbridge"
|
||||
## Settings below can be reloaded by editing the file
|
||||
|
||||
#Nicks you want to ignore.
|
||||
#Regular expressions supported
|
||||
#Messages from those users will not be sent to other bridges.
|
||||
#OPTIONAL
|
||||
IgnoreNicks="spammer1 spammer2"
|
||||
|
Loading…
Reference in New Issue
Block a user