commit 43d9aa97e5c9a7be03f445dbe5f8203b953c72bb
parent 641dff16e76e2e548b0382f0364a36427adb0eae
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Tue, 15 Nov 2022 20:55:33 -0500
move code
Diffstat:
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)