commit 99cb5ac4ddebe6f15e61394eae84daeed8b731af
parent a53eb90c19a998f4946782d5a822aa3c96e3a9bd
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Thu, 2 Mar 2023 19:56:06 -0800
prevent forum spam
Diffstat:
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}