diff options
author | Simon Ser <contact@emersion.fr> | 2019-12-03 17:31:53 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2019-12-03 17:31:53 +0100 |
commit | a4729060bedd45481726861c491d5061e90ffefa (patch) | |
tree | d9ee85915912c2186162e5ae737f89d3a5751549 /server.go | |
parent | 48d6d5d227a4d55d80f9f2a74c1242cafafab7ab (diff) | |
download | alps-a4729060bedd45481726861c491d5061e90ffefa.tar.gz alps-a4729060bedd45481726861c491d5061e90ffefa.zip |
Escape mailbox names in URLs
Closes: https://todo.sr.ht/~sircmpwn/koushin/14
Diffstat (limited to 'server.go')
-rw-r--r-- | server.go | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -142,7 +142,10 @@ func handleLogin(ectx echo.Context) error { } func handleGetPart(ctx *context, raw bool) error { - mboxName := ctx.Param("mbox") + mboxName, err := url.PathUnescape(ctx.Param("mbox")) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, err) + } uid, err := parseUid(ctx.Param("uid")) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, err) @@ -312,6 +315,11 @@ func New(imapURL, smtpURL string) *echo.Echo { e.GET("/mailbox/:mbox", func(ectx echo.Context) error { ctx := ectx.(*context) + mboxName, err := url.PathUnescape(ctx.Param("mbox")) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, err) + } + var mailboxes []*imap.MailboxInfo var msgs []imapMessage var mbox *imap.MailboxStatus @@ -320,7 +328,7 @@ func New(imapURL, smtpURL string) *echo.Echo { if mailboxes, err = listMailboxes(c); err != nil { return err } - if msgs, err = listMessages(c, ctx.Param("mbox")); err != nil { + if msgs, err = listMessages(c, mboxName); err != nil { return err } mbox = c.Mailbox() |