commit d37e8f058e772c0932fdd2d90c530e3ca80e2ad8
parent ce3411ebc6d4ee630d3abd133adbaa34a98ea8f9
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sun, 4 Dec 2022 20:50:50 -0500
configurable silent self-kick
Diffstat:
8 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/pkg/actions/actions.go b/pkg/actions/actions.go
@@ -69,6 +69,7 @@ func Start(c *cli.Context) error {
config.SignupFakeEnabled.Store(settings.SignupFakeEnabled)
config.DownloadsEnabled.Store(settings.DownloadsEnabled)
config.ForumEnabled.Store(settings.ForumEnabled)
+ config.SilentSelfKick.Store(settings.SilentSelfKick)
config.MaybeAuthEnabled.Store(settings.MaybeAuthEnabled)
config.CaptchaDifficulty.Store(settings.CaptchaDifficulty)
diff --git a/pkg/config/config.go b/pkg/config/config.go
@@ -53,6 +53,7 @@ var (
IsFirstUse = atom.NewBool(true) // either or not we need to set up root account
MaybeAuthEnabled = atom.NewBool(true) // either or not unauthenticated users can access the "maybe auth" pages
ForumEnabled = atom.NewBool(true) // either or not people can use the forum features
+ SilentSelfKick = atom.NewBool(true) // either or not self kick are silent
SignupEnabled = atom.NewBool(true) // either or not people can sign up
SignupFakeEnabled = atom.NewBool(true) // either or not signup is faked to be enabled
ProtectHome = atom.NewBool(true) // enable "dynamic login url" to prevent ddos on the login page
diff --git a/pkg/database/tableSettings.go b/pkg/database/tableSettings.go
@@ -6,6 +6,7 @@ import "github.com/sirupsen/logrus"
type Settings struct {
ID int64
MaybeAuthEnabled bool // either or not unauthenticated users can access the "maybe auth" pages
+ SilentSelfKick bool // either or not people can use the forum features
ForumEnabled bool // either or not people can use the forum features
SignupEnabled bool // either or not people can sign up
SignupFakeEnabled bool // either or not signup is faked to be enabled
@@ -20,6 +21,7 @@ type Settings struct {
func GetSettings() (out Settings) {
if err := DB.Model(Settings{}).First(&out).Error; err != nil {
out.SignupEnabled = true
+ out.SilentSelfKick = true
out.ForumEnabled = true
out.MaybeAuthEnabled = true
out.DownloadsEnabled = true
diff --git a/pkg/migrations/115.sql b/pkg/migrations/115.sql
@@ -0,0 +1,4 @@
+-- +migrate Up
+ALTER TABLE settings ADD COLUMN silent_self_kick TINYINT(1) NOT NULL DEFAULT 1;
+
+-- +migrate Down
diff --git a/pkg/web/handlers/api/v1/spamInterceptor.go b/pkg/web/handlers/api/v1/spamInterceptor.go
@@ -1,6 +1,7 @@
package v1
import (
+ "dkforest/pkg/config"
"dkforest/pkg/database"
dutils "dkforest/pkg/database/utils"
"dkforest/pkg/utils"
@@ -29,7 +30,7 @@ var ErrSpamFilterTriggered = errors.New("spam filter triggered")
func checkSpam(origMessage string, authUser *database.User) error {
lowerCaseMessage := strings.ToLower(origMessage)
- silentSelfKick := false
+ silentSelfKick := config.SilentSelfKick.Load()
// Kick retard new users
if time.Since(authUser.CreatedAt) < 5*time.Hour {
diff --git a/pkg/web/handlers/data.go b/pkg/web/handlers/data.go
@@ -738,10 +738,11 @@ type settingsInvitationsData struct {
}
type settingsWebsiteData struct {
- ActiveTab string
- SignupEnabled bool
- ForumEnabled bool
- Error string
+ ActiveTab string
+ SignupEnabled bool
+ SilentSelfKick bool
+ ForumEnabled bool
+ Error string
}
type adminEditUsereData struct {
diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go
@@ -2883,13 +2883,17 @@ func SettingsWebsiteHandler(c echo.Context) error {
settings := database.GetSettings()
data.SignupEnabled = settings.SignupEnabled
data.ForumEnabled = settings.ForumEnabled
+ data.SilentSelfKick = settings.SilentSelfKick
if c.Request().Method == http.MethodPost {
settings.SignupEnabled = utils.DoParseBool(c.Request().PostFormValue("signupEnabled"))
settings.ForumEnabled = utils.DoParseBool(c.Request().PostFormValue("forumEnabled"))
+ settings.SilentSelfKick = utils.DoParseBool(c.Request().PostFormValue("silentSelfKick"))
_ = settings.Save()
config.SignupEnabled.Store(settings.SignupEnabled)
config.ForumEnabled.Store(settings.ForumEnabled)
- database.NewAudit(*authUser, fmt.Sprintf("website settings, signup: %t, forum: %t", settings.SignupEnabled, settings.ForumEnabled))
+ config.SilentSelfKick.Store(settings.SilentSelfKick)
+ database.NewAudit(*authUser, fmt.Sprintf("website settings, signup: %t, forum: %t, sk: %t",
+ settings.SignupEnabled, settings.ForumEnabled, settings.SilentSelfKick))
return c.Redirect(http.StatusFound, c.Request().Referer())
}
diff --git a/pkg/web/public/views/pages/settings/website.gohtml b/pkg/web/public/views/pages/settings/website.gohtml
@@ -20,6 +20,10 @@
<input class="form-check-input" id="forumEnabled" type="checkbox" value="1" name="forumEnabled"{{ if .Data.ForumEnabled }} checked{{ end }}>
<label class="form-check-label" for="forumEnabled">Forum enabled</label>
</div>
+ <div class="form-check">
+ <input class="form-check-input" id="silentSelfKick" type="checkbox" value="1" name="silentSelfKick"{{ if .Data.SilentSelfKick }} checked{{ end }}>
+ <label class="form-check-label" for="silentSelfKick">Silent Self-Kick</label>
+ </div>
</div>
<div class="form-group">
<input type="submit" value="{{ t "Save" . }}" class="btn btn-primary" />