From d436a6e676f59a1173fb5807daf8bcd1bd1ae321 Mon Sep 17 00:00:00 2001 From: Noah Hsu Date: Sat, 17 Sep 2022 16:59:17 +0800 Subject: [PATCH] fix: use base64 encode for ipa install --- server/handles/helper.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/server/handles/helper.go b/server/handles/helper.go index 8c4c9b61..230a0d2c 100644 --- a/server/handles/helper.go +++ b/server/handles/helper.go @@ -1,6 +1,7 @@ package handles import ( + "encoding/base64" "fmt" "net/url" "strings" @@ -16,21 +17,30 @@ func Favicon(c *gin.Context) { c.Redirect(302, setting.GetStr(conf.Favicon)) } +var DEC = map[string]string{ + "-": "+", + "_": "/", + ".": "=", +} + func Plist(c *gin.Context) { link := c.Param("link") - u, err := url.PathUnescape(link) + for k, v := range DEC { + link = strings.ReplaceAll(link, k, v) + } + u, err := base64.StdEncoding.DecodeString(link) if err != nil { common.ErrorResp(c, err, 500) return } - uUrl, err := url.Parse(u) + uUrl, err := url.Parse(string(u)) if err != nil { common.ErrorResp(c, err, 500) return } name := c.Param("name") log.Debug("name", name) - u = uUrl.String() + Url := uUrl.String() name = strings.TrimSuffix(name, ".plist") name = strings.ReplaceAll(name, "<", "[") name = strings.ReplaceAll(name, ">", "]") @@ -63,7 +73,7 @@ func Plist(c *gin.Context) { -`, u, url.PathEscape(name), name) +`, Url, url.PathEscape(name), name) c.Header("Content-Type", "application/xml;charset=utf-8") c.Status(200) _, _ = c.Writer.WriteString(plist)