dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit 80379e5e87f1f1e8dfa728c3bd2cdb18b4c70a23
parent 21099dcf004d4c6b9a6bfac1ab9fe1b25641fd76
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Sun, 19 Mar 2023 16:08:59 -0700

kick spammers

Diffstat:
Mpkg/web/handlers/api/v1/spamInterceptor.go | 26++++++++++++++++++--------
Mpkg/web/handlers/api/v1/spamInterceptor_test.go | 11++++++-----
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) }) } }