dkforest

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

commit 6844d4e02da7956e10c21186816cd1aaf1347d96
parent 2ba2dbc57d7083d82b06a793f72f8d19f0e8ccb1
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Thu, 10 Nov 2022 16:12:56 -0800

token slash command

Diffstat:
Mpkg/web/handlers/api/v1/handlers.go | 1+
Mpkg/web/handlers/api/v1/slashInterceptor.go | 20++++++++++++++++++++
2 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/pkg/web/handlers/api/v1/handlers.go b/pkg/web/handlers/api/v1/handlers.go @@ -50,6 +50,7 @@ var forceCaptchaRgx = regexp.MustCompile(`^/(?:captcha) ` + optAtGUser) var unkickRgx = regexp.MustCompile(`^/(?:unkick|uk) ` + optAtGUser) var hellbanRgx = regexp.MustCompile(`^/(?:hellban|hb) ` + optAtGUser) var unhellbanRgx = regexp.MustCompile(`^/(?:unhellban|uhb) ` + optAtGUser) +var tokenRgx = regexp.MustCompile(`^/token (\d{1,2})$`) var tagRgx = regexp.MustCompile(`@(` + userOr0 + `)`) var roomTagRgx = regexp.MustCompile(`#(` + roomName + `)`) var tzRgx = regexp.MustCompile(`(\d{4}-\d{1,2}-\d{1,2} at \d{1,2}\.\d{1,2}\.\d{1,2} [A|P]M)`) // Screen Shot 2022-02-04 at 11.58.58 PM diff --git a/pkg/web/handlers/api/v1/slashInterceptor.go b/pkg/web/handlers/api/v1/slashInterceptor.go @@ -10,6 +10,7 @@ import ( "fmt" "github.com/sirupsen/logrus" "sort" + "strconv" "strings" "time" ) @@ -65,6 +66,7 @@ func handleUserCmd(c *Command) (handled bool) { handleInboxCmd(c) || handleChessCmd(c) || handleHbmCmd(c) || + handleTokenCmd(c) || handleMd5Cmd(c) || handleSha1Cmd(c) || handleSha256Cmd(c) || @@ -381,6 +383,24 @@ func handleChoiceCmd(c *Command) (handled bool) { return } +func handleTokenCmd(c *Command) (handled bool) { + if c.message == "/token" { + c.zeroMsg(utils.GenerateToken10()) + c.err = ErrRedirect + return true + } else if m := tokenRgx.FindStringSubmatch(c.message); len(m) == 2 { + n, _ := strconv.Atoi(m[1]) + if n < 1 || n > 32 { + c.err = errors.New("value must be [1;32]") + return true + } + c.zeroMsg(utils.GenerateTokenN(n)) + c.err = ErrRedirect + return true + } + return +} + func handleMd5Cmd(c *Command) (handled bool) { return handleHasherCmd(c, "/md5 ", utils.MD5) }