commit 8ef9ea676be2e3df28fb087e5a315e373bf607e2
parent a03ba18e837543a9588894445091181a2a701069
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Mon, 5 Jun 2023 04:18:13 -0700
cleanup
Diffstat:
1 file changed, 22 insertions(+), 12 deletions(-)
diff --git a/pkg/web/handlers/api/v1/spamInterceptor.go b/pkg/web/handlers/api/v1/spamInterceptor.go
@@ -47,28 +47,37 @@ func LoadFilters(db *database.DkfDB) {
}
}
-func (i SpamInterceptor) InterceptMsg(c *Command) {
- lowerCaseMessage := strings.ToLower(c.message)
- silentSelfKick := config.SilentSelfKick.Load()
-
+// Check the filters that we have in the database.
+func checkDynamicFilters(c *Command, lowerCaseMessage string, silentSelfKick bool) error {
filtersMtx.RLock()
+ defer filtersMtx.RUnlock()
for _, f := range filters {
isMatch := (f.IsRegex && f.Rgx.MatchString(c.message)) ||
(!f.IsRegex && strings.Contains(lowerCaseMessage, f.Term))
if isMatch {
+ if f.Hb {
+ dutils.SelfHellBan(c.db, c.authUser)
+ return ErrSilent
+ }
if f.Kick {
_ = dutils.SelfKick(c.db, *c.authUser, silentSelfKick)
- } else if f.Hb {
- dutils.SelfHellBan(c.db, c.authUser)
- filtersMtx.RUnlock()
- return
}
- c.err = ErrSpamFilterTriggered
- filtersMtx.RUnlock()
- return
+ return ErrSpamFilterTriggered
+ }
+ }
+ return nil
+}
+
+func (i SpamInterceptor) InterceptMsg(c *Command) {
+ lowerCaseMessage := strings.ToLower(c.message)
+ silentSelfKick := config.SilentSelfKick.Load()
+
+ if err := checkDynamicFilters(c, lowerCaseMessage, silentSelfKick); err != nil {
+ if !errors.Is(err, ErrSilent) {
+ c.err = err
}
+ return
}
- filtersMtx.RUnlock()
if c.room.IsOfficialRoom() {
if err := checkSpam(c.db, c.origMessage, lowerCaseMessage, c.authUser); err != nil {
@@ -88,6 +97,7 @@ func (i SpamInterceptor) InterceptMsg(c *Command) {
}
}
+var ErrSilent = errors.New("")
var ErrSpamFilterTriggered = errors.New("spam filter triggered")
func checkSpam(db *database.DkfDB, origMessage, lowerCaseMessage string, authUser *database.User) error {