fix: page crashes if ipa name contains chinese (close #1712)

pull/1831/head
Noah Hsu 2022-09-19 13:33:23 +08:00
parent 2185839236
commit d6d82c3138
2 changed files with 18 additions and 7 deletions

View File

@ -17,21 +17,32 @@ func Favicon(c *gin.Context) {
} }
func Plist(c *gin.Context) { func Plist(c *gin.Context) {
link := c.Param("link") linkNameB64 := strings.TrimSuffix(c.Param("link_name"), ".plist")
u, err := utils.SafeAtob(link) linkName, err := utils.SafeAtob(linkNameB64)
if err != nil { if err != nil {
common.ErrorResp(c, err, 400) common.ErrorResp(c, err, 400)
return return
} }
uUrl, err := url.Parse(u) linkNameSplit := strings.Split(linkName, "/")
if len(linkNameSplit) != 2 {
common.ErrorStrResp(c, "malformed link", 400)
return
}
linkEncode := linkNameSplit[0]
linkStr, err := url.PathUnescape(linkEncode)
if err != nil {
common.ErrorResp(c, err, 400)
return
}
link, err := url.Parse(linkStr)
if err != nil { if err != nil {
common.ErrorResp(c, err, 400) common.ErrorResp(c, err, 400)
return return
} }
fullName := c.Param("name") fullName := c.Param("name")
Url := uUrl.String() Url := link.String()
fullName = strings.TrimSuffix(fullName, ".plist") nameEncode := linkNameSplit[1]
fullName, err = utils.SafeAtob(fullName) fullName, err = url.PathUnescape(nameEncode)
if err != nil { if err != nil {
common.ErrorResp(c, err, 400) common.ErrorResp(c, err, 400)
return return

View File

@ -19,7 +19,7 @@ func Init(r *gin.Engine) {
WebDav(r.Group("/dav")) WebDav(r.Group("/dav"))
r.GET("/favicon.ico", handles.Favicon) r.GET("/favicon.ico", handles.Favicon)
r.GET("/i/:link/:name", handles.Plist) r.GET("/i/:link_name", handles.Plist)
r.GET("/d/*path", middlewares.Down, handles.Down) r.GET("/d/*path", middlewares.Down, handles.Down)
r.GET("/p/*path", middlewares.Down, handles.Proxy) r.GET("/p/*path", middlewares.Down, handles.Proxy)