fix: use base64 encode for ipa install

pull/1831/head
Noah Hsu 2022-09-17 16:59:17 +08:00
parent bec3a327a7
commit d436a6e676
1 changed files with 14 additions and 4 deletions

View File

@ -1,6 +1,7 @@
package handles package handles
import ( import (
"encoding/base64"
"fmt" "fmt"
"net/url" "net/url"
"strings" "strings"
@ -16,21 +17,30 @@ func Favicon(c *gin.Context) {
c.Redirect(302, setting.GetStr(conf.Favicon)) c.Redirect(302, setting.GetStr(conf.Favicon))
} }
var DEC = map[string]string{
"-": "+",
"_": "/",
".": "=",
}
func Plist(c *gin.Context) { func Plist(c *gin.Context) {
link := c.Param("link") 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 { if err != nil {
common.ErrorResp(c, err, 500) common.ErrorResp(c, err, 500)
return return
} }
uUrl, err := url.Parse(u) uUrl, err := url.Parse(string(u))
if err != nil { if err != nil {
common.ErrorResp(c, err, 500) common.ErrorResp(c, err, 500)
return return
} }
name := c.Param("name") name := c.Param("name")
log.Debug("name", name) log.Debug("name", name)
u = uUrl.String() Url := uUrl.String()
name = strings.TrimSuffix(name, ".plist") name = strings.TrimSuffix(name, ".plist")
name = strings.ReplaceAll(name, "<", "[") name = strings.ReplaceAll(name, "<", "[")
name = strings.ReplaceAll(name, ">", "]") name = strings.ReplaceAll(name, ">", "]")
@ -63,7 +73,7 @@ func Plist(c *gin.Context) {
</dict> </dict>
</array> </array>
</dict> </dict>
</plist>`, u, url.PathEscape(name), name) </plist>`, Url, url.PathEscape(name), name)
c.Header("Content-Type", "application/xml;charset=utf-8") c.Header("Content-Type", "application/xml;charset=utf-8")
c.Status(200) c.Status(200)
_, _ = c.Writer.WriteString(plist) _, _ = c.Writer.WriteString(plist)