From 49d8c6f8e452ba34173e729019d380c9f0451a55 Mon Sep 17 00:00:00 2001 From: Harvey Tindall Date: Sat, 23 Dec 2023 20:18:16 +0000 Subject: [PATCH] pwr: add captcha daemon --- daemon.go | 15 +++++++++++++++ ts/pwr.ts | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/daemon.go b/daemon.go index 245800d..19a3f97 100644 --- a/daemon.go +++ b/daemon.go @@ -74,6 +74,17 @@ func (app *appContext) clearTelegram() { } } +func (app *appContext) clearPWRCaptchas() { + app.debug.Println("Housekeeping: Clearing old PWR Captchas") + captchas := map[string]Captcha{} + for k, capt := range app.pwrCaptchas { + if capt.Generated.Add(CAPTCHA_VALIDITY * time.Second).After(time.Now()) { + captchas[k] = capt + } + } + app.pwrCaptchas = captchas +} + func (app *appContext) clearActivities() { app.debug.Println("Housekeeping: Cleaning up Activity log...") keepCount := app.config.Section("activity_log").Key("keep_n_records").MustInt(1000) @@ -136,6 +147,7 @@ func newInviteDaemon(interval time.Duration, app *appContext) *housekeepingDaemo clearDiscord := app.config.Section("discord").Key("require_unique").MustBool(false) clearTelegram := app.config.Section("telegram").Key("require_unique").MustBool(false) clearMatrix := app.config.Section("matrix").Key("require_unique").MustBool(false) + clearPWR := app.config.Section("captcha").Key("enabled").MustBool(false) && !app.config.Section("captcha").Key("recaptcha").MustBool(false) if clearEmail || clearDiscord || clearTelegram || clearMatrix { daemon.jobs = append(daemon.jobs, func(app *appContext) { app.jf.CacheExpiry = time.Now() }) @@ -153,6 +165,9 @@ func newInviteDaemon(interval time.Duration, app *appContext) *housekeepingDaemo if clearMatrix { daemon.jobs = append(daemon.jobs, func(app *appContext) { app.clearMatrix() }) } + if clearPWR { + daemon.jobs = append(daemon.jobs, func(app *appContext) { app.clearPWRCaptchas() }) + } return &daemon } diff --git a/ts/pwr.ts b/ts/pwr.ts index b59de72..175e755 100644 --- a/ts/pwr.ts +++ b/ts/pwr.ts @@ -103,7 +103,7 @@ form.onsubmit = (event: Event) => { if (req.readyState == 4) { removeLoader(submitSpan); if (req.status == 400) { - if (req.response["error"] as string) { // FIXME: Show captcha error + if (req.response["error"] as string) { const old = submitSpan.textContent; submitSpan.textContent = window.messages[req.response["error"]]; submitSpan.classList.add("~critical");