dkforest

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

commit 43d9aa97e5c9a7be03f445dbe5f8203b953c72bb
parent 641dff16e76e2e548b0382f0364a36427adb0eae
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Tue, 15 Nov 2022 20:55:33 -0500

move code

Diffstat:
Mpkg/web/handlers/api/v1/spamInterceptor.go | 69++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Mpkg/web/handlers/api/v1/topBarHandler.go | 61-------------------------------------------------------------
2 files changed, 68 insertions(+), 62 deletions(-)

diff --git a/pkg/web/handlers/api/v1/spamInterceptor.go b/pkg/web/handlers/api/v1/spamInterceptor.go @@ -1,6 +1,14 @@ package v1 -import "errors" +import ( + "dkforest/pkg/database" + "dkforest/pkg/managers" + "dkforest/pkg/utils" + "errors" + "github.com/sirupsen/logrus" + "strings" + "time" +) type SpamInterceptor struct{} @@ -16,3 +24,62 @@ func (i SpamInterceptor) InterceptMsg(c *Command) { return } } + +func silentKick(authUser *database.User) { + authUser.Verified = false + authUser.DoSave() + // Remove user from the user cache + managers.ActiveUsers.RemoveUser(authUser.ID) + // Purge user messages + if err := database.DeleteUserChatMessages(authUser.ID); err != nil { + logrus.Error(err) + } +} + +var ErrSpamFilterTriggered = errors.New("spam filter triggered") + +func checkSpam(origMessage string, authUser *database.User) error { + lowerCaseMessage := strings.ToLower(origMessage) + + // Kick retard new users + if time.Since(authUser.CreatedAt) < 5*time.Hour { + if strings.Contains(lowerCaseMessage, "fucked up links") || + strings.Contains(lowerCaseMessage, "i wanna see gore") || + strings.Contains(lowerCaseMessage, "how can i make money") || + strings.Contains(lowerCaseMessage, "any links for scary stuff") { + silentKick(authUser) + return ErrSpamFilterTriggered + } + } + + if strings.Contains(lowerCaseMessage, "#dorkforest") { + if authUser.IsModerator() { + return ErrSpamFilterTriggered + } + silentKick(authUser) + return ErrSpamFilterTriggered + } + + tot, wordsMap := utils.WordCount(origMessage) + if tot >= 5 { + totalUniqueWords := len(wordsMap) + uniqueRatio := float64(totalUniqueWords) / float64(tot) + repeatedWordsCount := 0 + for word, count := range wordsMap { + if len(word) >= 5 && count > 10 { + repeatedWordsCount++ + } + } + retardRatio := float64(repeatedWordsCount) / float64(totalUniqueWords) + //fmt.Println(tot, totalUniqueWords, uniqueRatio, repeatedWordsCount, retardRatio, wordsMap) + if uniqueRatio < 0.2 { + logrus.Error("failed unique ratio: " + origMessage) + return errors.New("failed unique ratio") + } + if retardRatio > 0.1 { + logrus.Error("failed retard ratio: " + origMessage) + return errors.New("failed retard ratio") + } + } + return nil +} diff --git a/pkg/web/handlers/api/v1/topBarHandler.go b/pkg/web/handlers/api/v1/topBarHandler.go @@ -6,7 +6,6 @@ import ( "dkforest/pkg/database" dutils "dkforest/pkg/database/utils" "dkforest/pkg/hashset" - "dkforest/pkg/managers" "dkforest/pkg/utils" hutils "dkforest/pkg/web/handlers/utils" "errors" @@ -16,7 +15,6 @@ import ( "github.com/labstack/echo" "github.com/microcosm-cc/bluemonday" bf "github.com/russross/blackfriday/v2" - "github.com/sirupsen/logrus" html2 "html" "io" "net/http" @@ -533,65 +531,6 @@ func (e ErrSuccess) Error() string { return e.msg } -func silentKick(authUser *database.User) { - authUser.Verified = false - authUser.DoSave() - // Remove user from the user cache - managers.ActiveUsers.RemoveUser(authUser.ID) - // Purge user messages - if err := database.DeleteUserChatMessages(authUser.ID); err != nil { - logrus.Error(err) - } -} - -var ErrSpamFilterTriggered = errors.New("spam filter triggered") - -func checkSpam(origMessage string, authUser *database.User) error { - lowerCaseMessage := strings.ToLower(origMessage) - - // Kick retard new users - if time.Since(authUser.CreatedAt) < 5*time.Hour { - if strings.Contains(lowerCaseMessage, "fucked up links") || - strings.Contains(lowerCaseMessage, "i wanna see gore") || - strings.Contains(lowerCaseMessage, "how can i make money") || - strings.Contains(lowerCaseMessage, "any links for scary stuff") { - silentKick(authUser) - return ErrSpamFilterTriggered - } - } - - if strings.Contains(lowerCaseMessage, "#dorkforest") { - if authUser.IsModerator() { - return ErrSpamFilterTriggered - } - silentKick(authUser) - return ErrSpamFilterTriggered - } - - tot, wordsMap := utils.WordCount(origMessage) - if tot >= 5 { - totalUniqueWords := len(wordsMap) - uniqueRatio := float64(totalUniqueWords) / float64(tot) - repeatedWordsCount := 0 - for word, count := range wordsMap { - if len(word) >= 5 && count > 10 { - repeatedWordsCount++ - } - } - retardRatio := float64(repeatedWordsCount) / float64(totalUniqueWords) - //fmt.Println(tot, totalUniqueWords, uniqueRatio, repeatedWordsCount, retardRatio, wordsMap) - if uniqueRatio < 0.2 { - logrus.Error("failed unique ratio: " + origMessage) - return errors.New("failed unique ratio") - } - if retardRatio > 0.1 { - logrus.Error("failed retard ratio: " + origMessage) - return errors.New("failed retard ratio") - } - } - return nil -} - func appendUploadLink(html string, upload *database.Upload) string { if upload != nil { escapedOrigFileName := html2.EscapeString(upload.OrigFileName)