dkforest

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

commit ce57a4403c116f8d4cac48af0699d7928a407f72
parent 2ff3d4f1d9ca8033ae17ab59832c3b15972a185d
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Fri, 13 Jan 2023 14:32:33 -0800

Auto kick upper case typing retards

Diffstat:
Mpkg/utils/utils.go | 13+++++++++++++
Mpkg/web/handlers/api/v1/spamInterceptor.go | 10++++++++++
2 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go @@ -40,6 +40,7 @@ import ( "sync" "sync/atomic" "time" + "unicode" "dkforest/pkg/clockwork" "dkforest/pkg/config" @@ -966,3 +967,15 @@ func CountBools(vals ...bool) (count int64) { } return count } + +func CountUppercase(s string) (count, total int64) { + for _, r := range s { + if unicode.IsLetter(r) { + total++ + if unicode.IsUpper(r) { + count++ + } + } + } + return +} diff --git a/pkg/web/handlers/api/v1/spamInterceptor.go b/pkg/web/handlers/api/v1/spamInterceptor.go @@ -61,6 +61,16 @@ func checkSpam(origMessage string, authUser *database.User) error { return ErrSpamFilterTriggered } + // Auto kick upper case typing retards + if authUser.GeneralMessagesCount <= 5 { + count, total := utils.CountUppercase(origMessage) + pct := float64(count) / float64(total) + if total > 5 && pct > 0.8 { + _ = dutils.SelfKick(*authUser, silentSelfKick) + return ErrSpamFilterTriggered + } + } + tot, wordsMap := utils.WordCount(lowerCaseMessage) if tot >= 5 { totalUniqueWords := len(wordsMap)