dkforest

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

commit 99cb5ac4ddebe6f15e61394eae84daeed8b731af
parent a53eb90c19a998f4946782d5a822aa3c96e3a9bd
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Thu,  2 Mar 2023 19:56:06 -0800

prevent forum spam

Diffstat:
Mpkg/web/handlers/handlers.go | 22++++++++++++++++++++++
1 file changed, 22 insertions(+), 0 deletions(-)

diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go @@ -1912,6 +1912,11 @@ func ThreadReplyHandler(c echo.Context) error { data.ErrorMessage = "Message must have at least 3 characters" return c.Render(http.StatusOK, "thread-reply", data) } + if isForumSpam(data.Message) { + authUser.CanUseForum = false + authUser.DoSave() + return c.Redirect(http.StatusFound, "/") + } message := database.ForumMessage{UUID: database.ForumMessageUUID(uuid.New().String()), Message: data.Message, UserID: authUser.ID, ThreadID: thread.ID} message.IsSigned = message.ValidateSignature(authUser.GPGPublicKey) if err := database.DB.Create(&message).Error; err != nil { @@ -2172,6 +2177,11 @@ func ThreadEditMessageHandler(c echo.Context) error { data.ErrorMessage = "Message must have 3 to 20k characters" return c.Render(http.StatusOK, "thread-reply", data) } + if isForumSpam(data.Message) { + authUser.CanUseForum = false + authUser.DoSave() + return c.Redirect(http.StatusFound, "/") + } msg.Message = data.Message msg.IsSigned = msg.ValidateSignature(authUser.GPGPublicKey) msg.DoSave() @@ -2228,6 +2238,13 @@ func ClubThreadEditMessageHandler(c echo.Context) error { return c.Render(http.StatusOK, "club.thread-reply", data) } +func isForumSpam(msg string) bool { + if strings.Contains(strings.ToLower(msg), "profjerry") { + return true + } + return false +} + func NewThreadHandler(c echo.Context) error { if config.ForumEnabled.IsFalse() { return c.Render(http.StatusOK, "flash", FlashResponse{Message: "Forum is temporarily disabled", Redirect: "/", Type: "alert-danger"}) @@ -2249,6 +2266,11 @@ func NewThreadHandler(c echo.Context) error { data.ErrorMessage = "Thread message must have at least 3-20000 characters" return c.Render(http.StatusOK, "new-thread", data) } + if isForumSpam(data.Message) { + authUser.CanUseForum = false + authUser.DoSave() + return c.Redirect(http.StatusFound, "/") + } thread := database.ForumThread{UUID: database.ForumThreadUUID(uuid.New().String()), Name: data.ThreadName, UserID: authUser.ID, CategoryID: 1} database.DB.Create(&thread) message := database.ForumMessage{UUID: database.ForumMessageUUID(uuid.New().String()), Message: data.Message, UserID: authUser.ID, ThreadID: thread.ID}