dkforest

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

commit a781fe03d2fe468ff9bae200046940bc5bd35395
parent e983e1ccb1000a84b874aa4ebb7a792c577144a2
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Sun,  4 Dec 2022 20:03:48 -0500

cleanup

Diffstat:
Mpkg/database/tableUsers.go | 31+++++++++++++++++++++++++++++++
Mpkg/web/handlers/api/v1/slashInterceptor.go | 17+----------------
Mpkg/web/handlers/api/v1/spamInterceptor.go | 20++++----------------
3 files changed, 36 insertions(+), 32 deletions(-)

diff --git a/pkg/database/tableUsers.go b/pkg/database/tableUsers.go @@ -2,7 +2,9 @@ package database import ( "dkforest/pkg/config" + "dkforest/pkg/managers" "errors" + "fmt" "strings" "time" @@ -553,3 +555,32 @@ func (u *User) CanSendPM() bool { } return u.GeneralMessagesCount >= 20 } + +func (u *User) Kick(kickedBy User) { + silent := u.IsHellbanned + u.kick(kickedBy, silent) +} + +func (u *User) SilentKick(kickedBy User) { + u.kick(kickedBy, true) +} + +func (u *User) kick(kickedBy User, silent bool) { + NewAudit(kickedBy, fmt.Sprintf("kick %s #%d", u.Username, u.ID)) + u.Verified = false + u.DoSave() + + // Remove user from the user cache + managers.ActiveUsers.RemoveUser(u.ID) + + // Purge user messages + if err := DeleteUserChatMessages(u.ID); err != nil { + logrus.Error(err) + } + + // If user is HB, do not display system message + if !silent { + // Display kick message + CreateKickMsg(*u, kickedBy) + } +} diff --git a/pkg/web/handlers/api/v1/slashInterceptor.go b/pkg/web/handlers/api/v1/slashInterceptor.go @@ -177,23 +177,8 @@ func handleKickCmd(c *Command) (handled bool) { c.err = ErrRedirect return true } - database.NewAudit(*c.authUser, fmt.Sprintf("kick %s #%d", user.Username, user.ID)) - user.Verified = false - _ = user.Save() - - // Remove user from the user cache - managers.ActiveUsers.RemoveUser(user.ID) - - // Purge user messages - if err := database.DeleteUserChatMessages(user.ID); err != nil { - logrus.Error(err) - } - // If user is HB, do not display system message - if !user.IsHellbanned { - // Display kick message - database.CreateKickMsg(user, *c.authUser) - } + user.Kick(*c.authUser) c.err = ErrRedirect return true diff --git a/pkg/web/handlers/api/v1/spamInterceptor.go b/pkg/web/handlers/api/v1/spamInterceptor.go @@ -2,7 +2,6 @@ package v1 import ( "dkforest/pkg/database" - "dkforest/pkg/managers" "dkforest/pkg/utils" "errors" "github.com/sirupsen/logrus" @@ -25,17 +24,6 @@ func (i SpamInterceptor) InterceptMsg(c *Command) { } } -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 { @@ -47,13 +35,13 @@ func checkSpam(origMessage string, authUser *database.User) error { 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) + authUser.SilentKick(*authUser) return ErrSpamFilterTriggered } } if authUser.GeneralMessagesCount < 20 || time.Since(authUser.CreatedAt) < 5*time.Hour { if strings.Contains(lowerCaseMessage, "cp link") { - silentKick(authUser) + authUser.SilentKick(*authUser) return ErrSpamFilterTriggered } } @@ -62,7 +50,7 @@ func checkSpam(origMessage string, authUser *database.User) error { if authUser.IsModerator() { return ErrSpamFilterTriggered } - silentKick(authUser) + authUser.SilentKick(*authUser) return ErrSpamFilterTriggered } @@ -90,7 +78,7 @@ func checkSpam(origMessage string, authUser *database.User) error { if authUser.GeneralMessagesCount < 20 || time.Since(authUser.CreatedAt) < 5*time.Hour { if wordsMap["cp"] > 0 && (wordsMap["link"] > 0 || wordsMap["links"] > 0) { - silentKick(authUser) + authUser.SilentKick(*authUser) return ErrSpamFilterTriggered } }