commit 80379e5e87f1f1e8dfa728c3bd2cdb18b4c70a23
parent 21099dcf004d4c6b9a6bfac1ab9fe1b25641fd76
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sun, 19 Mar 2023 16:08:59 -0700
kick spammers
Diffstat:
2 files changed, 24 insertions(+), 13 deletions(-)
diff --git a/pkg/web/handlers/api/v1/spamInterceptor.go b/pkg/web/handlers/api/v1/spamInterceptor.go
@@ -7,6 +7,7 @@ import (
"dkforest/pkg/utils"
"errors"
"github.com/sirupsen/logrus"
+ "regexp"
"strings"
"time"
)
@@ -77,6 +78,11 @@ func checkSpam(db *database.DkfDB, origMessage string, authUser *database.User)
return nil
}
+ if autoKickSpammers(authUser, lowerCaseMessage) {
+ _ = dutils.SelfKick(db, *authUser, silentSelfKick)
+ return ErrSpamFilterTriggered
+ }
+
tot, wordsMap := utils.WordCount(lowerCaseMessage)
if tot >= 5 {
totalUniqueWords := len(wordsMap)
@@ -108,14 +114,6 @@ func checkSpam(db *database.DkfDB, origMessage string, authUser *database.User)
}
if authUser.GeneralMessagesCount < 10 {
- if strings.Contains(lowerCaseMessage, "blacktorcc") ||
- strings.Contains(lowerCaseMessage, "profjerry") {
- _ = dutils.SelfKick(db, *authUser, silentSelfKick)
- return ErrSpamFilterTriggered
- }
- }
-
- if authUser.GeneralMessagesCount < 10 {
if wordsMap["porn"] > 0 && (wordsMap["link"] > 0 || wordsMap["links"] > 0) {
_ = dutils.SelfKick(db, *authUser, silentSelfKick)
return ErrSpamFilterTriggered
@@ -132,6 +130,18 @@ func checkSpam(db *database.DkfDB, origMessage string, authUser *database.User)
return nil
}
+var spamCharsRgx = regexp.MustCompile("[^a-z0-9]+")
+
+func autoKickSpammers(authUser *database.User, lowerCaseMessage string) bool {
+ if authUser.GeneralMessagesCount <= 10 {
+ processedString := spamCharsRgx.ReplaceAllString(lowerCaseMessage, "")
+ return strings.Contains(processedString, "lemybeauty") ||
+ strings.Contains(lowerCaseMessage, "blacktorcc") ||
+ strings.Contains(lowerCaseMessage, "profjerry")
+ }
+ return false
+}
+
func autoHellbanCheck(authUser *database.User, lowerCaseMessage string) bool {
checks := []string{
"new here",
diff --git a/pkg/web/handlers/api/v1/spamInterceptor_test.go b/pkg/web/handlers/api/v1/spamInterceptor_test.go
@@ -6,7 +6,7 @@ import (
"testing"
)
-func Test_isNewHereRetard(t *testing.T) {
+func Test_autoHellbanCheck(t *testing.T) {
type args struct {
authUser *database.User
lowerCaseMessage string
@@ -17,15 +17,16 @@ func Test_isNewHereRetard(t *testing.T) {
want bool
}{
{name: "", args: args{authUser: &database.User{GeneralMessagesCount: 2}, lowerCaseMessage: "hi new here"}, want: true},
+ {name: "", args: args{authUser: &database.User{GeneralMessagesCount: 2}, lowerCaseMessage: "hello anybody know of any legit market places ? its getting tough on here to find any that actually do what they supposed to "}, want: true},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
- assert.Equalf(t, tt.want, isNewHereRetard(tt.args.authUser, tt.args.lowerCaseMessage), "isNewHereRetard(%v, %v)", tt.args.authUser, tt.args.lowerCaseMessage)
+ assert.Equalf(t, tt.want, autoHellbanCheck(tt.args.authUser, tt.args.lowerCaseMessage), "autoHellbanCheck(%v, %v)", tt.args.authUser, tt.args.lowerCaseMessage)
})
}
}
-func Test_isAskingLegitMarketRetard(t *testing.T) {
+func Test_autoKickSpammers(t *testing.T) {
type args struct {
authUser *database.User
lowerCaseMessage string
@@ -35,11 +36,11 @@ func Test_isAskingLegitMarketRetard(t *testing.T) {
args args
want bool
}{
- {name: "", args: args{authUser: &database.User{GeneralMessagesCount: 2}, lowerCaseMessage: "hello anybody know of any legit market places ? its getting tough on here to find any that actually do what they supposed to "}, want: true},
+ {name: "", args: args{authUser: &database.User{GeneralMessagesCount: 2}, lowerCaseMessage: "blablabla l e m y _ b e a u t y on "}, want: true},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
- assert.Equalf(t, tt.want, isAskingLegitMarketRetard(tt.args.authUser, tt.args.lowerCaseMessage), "isAskingLegitMarketRetard(%v, %v)", tt.args.authUser, tt.args.lowerCaseMessage)
+ assert.Equalf(t, tt.want, autoKickSpammers(tt.args.authUser, tt.args.lowerCaseMessage), "autoKickSpammers(%v, %v)", tt.args.authUser, tt.args.lowerCaseMessage)
})
}
}